Go: рд╕рднреА: рдкреИрдХреЗрдЬ рдХреЗ рдмреАрдЪ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ рд╕рдордп рдХреНрд░рдорд┐рдХ рдХреЛрдб рдорд░рдореНрдордд рдХрд╛ рд╕рдорд░реНрдерди рдХрд░реЗрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 1 рджрд┐рд╕ре░ 2016  ┬╖  225рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: golang/go

рдореВрд▓ рд╢реАрд░реНрд╖рдХ: рдкреНрд░рд╕реНрддрд╛рд╡: рдкреИрдХреЗрдЬ рдХреЗ рдмреАрдЪ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ рд╕рдордп рдХреНрд░рдорд┐рдХ рдХреЛрдб рдорд░рдореНрдордд рдХрд╛ рд╕рдорд░реНрдерди рдХрд░реЗрдВ

рдХреЛрдбрдмреЗрд╕ рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдХреЗ рджреМрд░рд╛рди рдХреНрд░рдорд┐рдХ рдХреЛрдб рдорд░рдореНрдордд рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЧреЛ рдХреЛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рд╡реИрдХрд▓реНрдкрд┐рдХ рд╕рдордХрдХреНрд╖ рдирд╛рдо рдмрдирд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╝рдиреА рдЪрд╛рд╣рд┐рдПред рдпрд╣ #16339 рдореЗрдВ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдЧреЛ 1.8 рдЙрдкрдирд╛рдо рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рд▓рдХреНрд╖реНрдп рдерд╛, рд▓реЗрдХрд┐рди рдЧреЛ 1.8 рд╕реЗ рдкреАрдЫреЗ рд╣рдЯ рдЧрдпрд╛ред рдХреНрдпреЛрдВрдХрд┐ рд╣рдордиреЗ рдЧреЛ 1.8 рдХреЗ рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рдХрд┐рдпрд╛, рдпрд╣ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдмрдиреА рд╣реБрдИ рд╣реИ, рдФрд░ рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рд╣рдо рдЗрд╕реЗ рдЧреЛ 1.9 рдХреЗ рд▓рд┐рдП рд╣рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЙрдкрдирд╛рдо рдкреНрд░рд╕реНрддрд╛рд╡ рдХреА рдЪрд░реНрдЪрд╛ рдореЗрдВ, рдХрдИ рдкреНрд░рд╢реНрди рдереЗ рдХрд┐ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рд╡реИрдХрд▓реНрдкрд┐рдХ рдирд╛рдо рдмрдирд╛рдиреЗ рдХреА рдпрд╣ рдХреНрд╖рдорддрд╛ рдХреНрдпреЛрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рдЙрди рд╕рд╡рд╛рд▓реЛрдВ рдХреЗ рдЬрд╡рд╛рдм рджреЗрдиреЗ рдХреЗ рдПрдХ рдирдП рдкреНрд░рдпрд╛рд╕ рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВрдиреЗ рдПрдХ рд▓реЗрдЦ рд▓рд┐рдЦрд╛ рдФрд░ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛, " рдХреЛрдбрдмреЗрд╕ рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ (рдЧреЛ рдХреА рдорджрдж рд╕реЗ) ред" рдХреГрдкрдпрд╛ рдЙрд╕ рд▓реЗрдЦ рдХреЛ рдкрдврд╝реЗрдВ рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдкреНрд░реЗрд░рдгрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреНрд░рд╢реНрди рд╣реИрдВред (рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ, рдЫреЛрдЯреА рдкреНрд░рд╕реНрддреБрддрд┐ рдХреЗ рд▓рд┐рдП, рд░реЙрдмрд░реНрдЯ рдХреА рдЧреЛрдлрд░рдХреЙрди рд▓рд╛рдЗрдЯрдирд┐рдВрдЧ рдЯреЙрдХ рджреЗрдЦреЗрдВ ред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рд╡рд╣ рд╡реАрдбрд┐рдпреЛ 9 рдЕрдХреНрдЯреВрдмрд░ рддрдХ рдСрдирд▓рд╛рдЗрди рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рдерд╛ред рдЕрдкрдбреЗрдЯ, 16 рджрд┐рд╕рдВрдмрд░: рдпрд╣рд╛рдВ рдореЗрд░реА рдЧреЛрдердордЧреЛ рд╡рд╛рд░реНрддрд╛ рд╣реИ , рдЬреЛ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рд▓реЗрдЦ рдХрд╛ рдкрд╣рд▓рд╛ рдорд╕реМрджрд╛ рдерд╛ред)

рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдорд╛рдзрд╛рди рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ _not_ рд╣реИред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдореИрдВ рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреЗ рд╕реНрдерд╛рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЧреЛ рд╕рдореБрджрд╛рдп рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдПрдХрддреНрд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рд▓реЗрдЦ рдХреЗ рдЕрдВрдд рдореЗрдВ рдмрддрд╛рдП рдЧрдП рдЕрдиреБрд╕рд╛рд░ рдЙрдкрдирд╛рдореЛрдВ рдХреЛ рдкреНрд░рдХрд╛рд░реЛрдВ рддрдХ рд╕реАрдорд┐рдд рдХрд░рдирд╛ рдПрдХ рд╕рдВрднрд╛рд╡рд┐рдд рддрд░реАрдХрд╛ рд╣реИред рдХреБрдЫ рдФрд░ рднреА рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рди рдкрд░ рд╣рдореЗрдВ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдХреГрдкрдпрд╛ рдпрд╣рд╛рдВ рдЯрд┐рдкреНрдкрдгреА рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдирд╛рдо рдпрд╛ рдЕрдиреНрдп рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рдЪрд╛рд░ рдкреЛрд╕реНрдЯ рдХрд░реЗрдВред

рдзрдиреНрдпрд╡рд╛рджред

рдЕрджреНрдпрддрди, 16 рджрд┐рд╕рдВрдмрд░ : рдкреЛрд╕реНрдЯ рдХрд┐рдП рдЧрдП рдЙрдкрдирд╛рдореЛрдВ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ред
рдЕрджреНрдпрддрди, 9 рдЬрдирд╡рд░реА : рдкреНрд░рд╕реНрддрд╛рд╡ рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛, dev.typealias рднрдВрдбрд╛рд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛, рдкреНрд░рдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЧреЛ 1.9 рдЪрдХреНрд░ рдХреА рд╢реБрд░реБрдЖрдд рдХреЗ рдХрд╛рд░рдг рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдиред


рдЪрд░реНрдЪрд╛ рд╕рд╛рд░рд╛рдВрд╢ (рдЕрдВрддрд┐рдо рдЕрджреНрдпрддрди 2017-02-02)

рдХреНрдпрд╛ рд╣рдореЗрдВ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╕рдорд╛рдзрд╛рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рд╕рднреА рдШреЛрд╖рдгрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рд░рдЧрд░ рд╣реЛ?

рдпрджрд┐ рдкреНрд░рдХрд╛рд░ рдЙрдкрдирд╛рдо 100% рдЖрд╡рд╢реНрдпрдХ рд╣реИрдВ, рддреЛ var рдЙрдкрдирд╛рдо рд╢рд╛рдпрдж 10% рдЖрд╡рд╢реНрдпрдХ рд╣реИрдВ, func рдЙрдкрдирд╛рдо 1% рдЖрд╡рд╢реНрдпрдХ рд╣реИрдВ, рдФрд░ const рдЙрдкрдирд╛рдо 0% рдЖрд╡рд╢реНрдпрдХ рд╣реИрдВред рдХреНрдпреЛрдВрдХрд┐ const рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА = рд╣реИ рдФрд░ func рд╕рдВрднрд╡рддрдГ = рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдореБрдЦреНрдп рдкреНрд░рд╢реНрди рдпрд╣ рд╣реИ рдХрд┐ рдХреНрдпрд╛ var рдЙрдкрдирд╛рдо рдпреЛрдЬрдирд╛ рдмрдирд╛рдиреЗ рдпрд╛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИрдВред

рдЬреИрд╕рд╛ рдХрд┐ @rogpeppe (https://github.com/golang/go/issues/16339#issuecomment-258771806) рдФрд░ @ianlancetaylor (https://github.com/golang/go/issues/16339#issuecomment-233644777) рджреНрд╡рд╛рд░рд╛ рддрд░реНрдХ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдореВрд▓ рдЙрдкрдирд╛рдо рдкреНрд░рд╕реНрддрд╛рд╡ рдореЗрдВ рдФрд░ рдЬреИрд╕рд╛ рдХрд┐ рд▓реЗрдЦ рдореЗрдВ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдПрдХ рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓ рд╡реИрд╢реНрд╡рд┐рдХ рд╕рдВрд╕реНрдХрд░рдг рдЖрдорддреМрд░ рдкрд░ рдПрдХ рдЧрд▓рддреА рд╣реИред рдЖрдорддреМрд░ рдкрд░ рдмрдЧ рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рдзрд╛рди рдХреЛ рдЬрдЯрд┐рд▓ рдмрдирд╛рдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИред (рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЕрдЧрд░ рд╣рдо рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреИрд╕реЗ, рдпрд╣ рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдпрдЪрдХрд┐рдд рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ рдпрджрд┐ рд▓рдВрдмреА рдЕрд╡рдзрд┐ рдореЗрдВ рд╡реИрд╢реНрд╡рд┐рдХ рдпреБрджреНрдзреЛрдВ рдХреЛ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреА рдУрд░ рдмрдврд╝рддрд╛ рд╣реИред)

рдХреНрдпреЛрдВрдХрд┐ рд╕рдореГрджреНрдз var рдЙрдкрдирд╛рдо рд╕рдВрднрд╡рддрдГ рдпреЛрдЬрдирд╛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИрдВ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣рд╛рдВ рд╕рд╣реА рд╡рд┐рдХрд▓реНрдк рдХреЗрд╡рд▓ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЙрдкрдирд╛рдореЛрдВ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдирд╛ рд╣реИред рдпрд╣рд╛рдБ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ рд╕рд╣рдордд рдкреНрд░рддреАрдд рд╣реЛрддреА рд╣реИрдВред рдореИрдВ рд╕рднреА рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ред

рдХреНрдпрд╛ рд╣рдореЗрдВ рдПрдХ рдирдпрд╛ рд╕рд┐рдВрдЯреИрдХреНрд╕ (= рдмрдирд╛рдо => рдмрдирд╛рдо рдирд┐рд░реНрдпрд╛рдд) рдЪрд╛рд╣рд┐рдП?

рдирдП рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдордЬрдмреВрдд рддрд░реНрдХ var рдЙрдкрдирд╛рдореЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдпрд╛ рддреЛ рдЕрднреА рдпрд╛ рднрд╡рд┐рд╖реНрдп рдореЗрдВ (https://github.com/golang/go/issues/18130#issuecomment-264232763 @Merovius рджреНрд╡рд╛рд░рд╛)ред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ var рдЙрдкрдирд╛рдо рди рд╣реЛрдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рдирд╛ рдареАрдХ рд╣реИ (рдкрд┐рдЫрд▓рд╛ рдЕрдиреБрднрд╛рдЧ рджреЗрдЦреЗрдВ)ред

var рдЙрдкрдирд╛рдореЛрдВ рдХреЗ рдмрд┐рдирд╛, рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ = рдирдП рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЛ рдкреЗрд╢ рдХрд░рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд╕рд░рд▓ рд╣реИ, рдЪрд╛рд╣реЗ => рдЬреИрд╕реЗ рдЙрдкрдирд╛рдо рдкреНрд░рд╕реНрддрд╛рд╡ рдореЗрдВ, ~ (https://github.com/golang/go/issues/18130#issuecomment-264185142 @joegrasse рджреНрд╡рд╛рд░рд╛), рдпрд╛ рдирд┐рд░реНрдпрд╛рдд (https://github.com/golang/go/issues/18130#issuecomment-264152427 @cznic рджреНрд╡рд╛рд░рд╛)ред

= рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрд╛рд╕реНрдХрд▓ рдФрд░ рд░рд╕реНрдЯ рдореЗрдВ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЙрдкрдирд╛рдореЛрдВ рдХреЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╕реЗ рдмрд┐рд▓реНрдХреБрд▓ рдореЗрд▓ рдЦрд╛рдПрдЧрд╛ред рдЬрд┐рд╕ рд╣рдж рддрдХ рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рд╕рдорд╛рди рдЕрд╡рдзрд╛рд░рдгрд╛рдПрдБ рд╣реИрдВ, рдЙрд╕реА рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реИред

рдЖрдЧреЗ рджреЗрдЦрддреЗ рд╣реБрдП, рдПрдХ рднрд╡рд┐рд╖реНрдп рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ func рдЙрдкрдирд╛рдо рднреА рдореМрдЬреВрдж рд╣реИрдВ (рджреЗрдЦреЗрдВ https://github.com/golang/go/issues/18130#issuecomment-264324306 @nigeltao рджреНрд╡рд╛рд░рд╛), рдФрд░ рдлрд┐рд░ рд╕рднреА рдШреЛрд╖рдгрд╛рдПрдВ рдЙрд╕реА рдлреЙрд░реНрдо рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдВрдЧреА :

const C2 = C1
func F2 = F1
type T2 = T1
var V2 = V1

рдЗрдирдореЗрдВ рд╕реЗ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрдкрдирд╛рдо рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, var рдШреЛрд╖рдгрд╛ рд╣реЛрдЧреА, рдХреНрдпреЛрдВрдХрд┐ V2 рдФрд░ V1 рдХреЛ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрддрд╛ рд╣реИ (рдХреЙрдиреНрд╕реНрдЯ, func, рдФрд░ рдкреНрд░рдХрд╛рд░ рдХреА рдШреЛрд╖рдгрд╛рдУрдВ рдХреЗ рд╡рд┐рдкрд░реАрдд рдЬреЛ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╣реИрдВ)ред рдЪреВрдВрдХрд┐ рдЪрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдореБрдЦреНрдп рдХрд╛рд░рдг рдЙрдиреНрд╣реЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдирд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЙрд╕ рдЕрдкрд╡рд╛рдж рдХреЛ рдХрдо рд╕реЗ рдХрдо рд╕рдордЭрд╛рдирд╛ рдЖрд╕рд╛рди рд╣реЛрдЧрд╛ред рдпрджрд┐ рдЧреЛ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╡реИрд╢реНрд╡рд┐рдХ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреА рдУрд░ рдмрдврд╝рддрд╛ рд╣реИ, рддреЛ рд╡рд╣ рдЕрдкрд╡рд╛рдж рднреА рдЧрд╛рдпрдм рд╣реЛ рдЬрд╛рдПрдЧрд╛ред

рд╕реНрдкрд╖реНрдЯ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдпрд╣рд╛рдВ func рдЙрдкрдирд╛рдо рдпрд╛ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╡реИрд╢реНрд╡рд┐рдХ vars рдХрд╛ рд╕реБрдЭрд╛рд╡ рдирд╣реАрдВ рджреЗ рд░рд╣рд╛ рд╣реВрдВ, рдмрд╕ рдРрд╕реЗ рднрд╡рд┐рд╖реНрдп рдХреЗ рдкрд░рд┐рд╡рд░реНрдзрди рдХреЗ рдкреНрд░рднрд╛рд╡реЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

@jimmyfrasche рдиреЗ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ (https://github.com/golang/go/issues/18130#issuecomment-264278398) рдХреЙрдиреНрд╕реНрдЯреЗрдмрд▓ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рд╣рд░ рдЪреАрдЬ рдХреЗ рд▓рд┐рдП рдЙрдкрдирд╛рдо, рддрд╛рдХрд┐ рдХреЙрдиреНрд╕реНрдЯ var рдХреЗ рдмрдЬрд╛рдп рдЕрдкрд╡рд╛рдж рд╣реЛрдЧрд╛:

const C2 = C1 // no => form
func F2 => F1
type T2 => T1
var V2 => V1
var V2 = V1 // different from => form

рдХреЙрдиреНрд╕реНрдЯ рдФрд░ var рджреЛрдиреЛрдВ рдХреЗ рд╕рд╛рде рдЕрд╕рдВрдЧрддрддрд╛ рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг var рдХреЗ рд▓рд┐рдП рд╕рд┐рд░реНрдл рдПрдХ рдЕрд╕рдВрдЧрддрд┐ рд╣реЛрдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рдирд╛ рдЕрдзрд┐рдХ рдХрдард┐рди рд▓рдЧрддрд╛ рд╣реИред

рдХреНрдпрд╛ рдпрд╣ рднрд╛рд╖рд╛ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдмрдЬрд╛рдп рдЯреВрд▓рд┐рдВрдЧ- рдпрд╛ рдХрдВрдкрд╛рдЗрд▓рд░-рдХреЗрд╡рд▓ рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ?

рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдкреВрдЫрдиреЗ рд▓рд╛рдпрдХ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдХреНрд░рдорд┐рдХ рдХреЛрдб рдорд░рдореНрдордд рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдВрдХрд▓рдХ рдХреЛ рдЖрдкреВрд░реНрддрд┐ рдХреА рдЧрдИ рдЬрд╛рдирдХрд╛рд░реА рджреНрд╡рд╛рд░рд╛ рд╕рдХреНрд╖рдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, https://github.com/golang/go/issues/18130#issuecomment-264205929 @btracey рджреНрд╡рд╛рд░рд╛)ред

рдпрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЕрдЧрд░ рд╕рдВрдХрд▓рдХ рд╕рдВрдХрд▓рди рд╕реЗ рдкрд╣рд▓реЗ рдЗрдирдкреБрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ рдирд┐рдпрдо-рдЖрдзрд╛рд░рд┐рдд рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, https://github.com/golang/go/issues/18130#issuecomment-264329924 @ tux21b рджреНрд╡рд╛рд░рд╛)ред

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдирд╣реАрдВ, рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕ рддрд░рд╣ рд╕реАрдорд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдХрдо рд╕реЗ рдХрдо рджреЛ рдХрдВрдкрд╛рдЗрд▓рд░ (gc рдФрд░ gccgo) рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд╕рдордиреНрд╡рдп рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдХреЛрдИ рдЕрдиреНрдп рдЯреВрд▓ рднреА рд╣реЛрдЧрд╛ рдЬреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдЧреЛ рд╡реЗрдЯ, рдЧреБрд░реБ, рдЧреЛрдЗрдордкреЛрд░реНрдЯреНрд╕, рдЧреЛрдХреЛрдб (рдХреЛрдб рдкреВрд░реНрдгрддрд╛), рдФрд░ рдЕрдиреНрдпред

рдЬреИрд╕рд╛ рдХрд┐ @bcmills рдиреЗ рдХрд╣рд╛ (https://github.com/golang/go/issues/18130#issuecomment-264275574), "рдПрдХ 'рдЧреИрд░-рднрд╛рд╖рд╛-рдкрд░рд┐рд╡рд░реНрддрди' рддрдВрддреНрд░ рдЬрд┐рд╕реЗ рд╕рднреА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдиреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рднрд╛рд╖рд╛ рдкрд░рд┐рд╡рд░реНрддрди рд╣реИ - рдпрд╣ рдЦрд░рд╛рдм рджрд╕реНрддрд╛рд╡реЗрдЬ рд╡рд╛рд▓рд╛ рд╕рд┐рд░реНрдл рдПрдХ рд╣реИред"

рдЙрдкрдирд╛рдореЛрдВ рдХреЗ рдФрд░ рдХреНрдпрд╛ рдЙрдкрдпреЛрдЧ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ?

рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддреЗ рд╣реИрдВред рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЙрдкрдирд╛рдореЛрдВ рдХреЛ рдкрд╛рд╕реНрдХрд▓ рдФрд░ рд░рд╕реНрдЯ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдорд╛рдирд╛ рдЬрд╛рддрд╛ рдерд╛, рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдЕрдиреНрдп рднреА рд╣реИрдВред

  1. рдЙрдкрдирд╛рдо (рдпрд╛ рдХреЗрд╡рд▓ рдЙрдкрдирд╛рдо рдЯрд╛рдЗрдк рдХрд░реЗрдВ) рдбреНрд░реЙрдк-рдЗрди рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдмрдирд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗ рдЬреЛ рдЕрдиреНрдп рдкреИрдХреЗрдЬреЛрдВ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП https://go-review.googlesource.com/#/c/32145/ рджреЗрдЦреЗрдВ , рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдкреНрд░рддрд┐рдмрджреНрдз рд╕рдВрджреЗрд╢ рдореЗрдВ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдгред

  2. рдЙрдкрдирд╛рдо (рдпрд╛ рдХреЗрд╡рд▓ рдЙрдкрдирд╛рдо рдЯрд╛рдЗрдк рдХрд░реЗрдВ) рдПрдХ рдЫреЛрдЯреЗ рдПрдкреАрдЖрдИ рд╕рддрд╣ рдХреЗ рд╕рд╛рде рдПрдХ рдкреИрдХреЗрдЬ рдХреЛ рд╕рдВрд░рдЪрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧрд╛ рд▓реЗрдХрд┐рди рдмреЗрд╣рддрд░ рдЖрдВрддрд░рд┐рдХ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд▓рд┐рдП рдкреИрдХреЗрдЬреЛрдВ рдХреЗ рд╕рдВрдЧреНрд░рд╣ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдмрдбрд╝рд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд▓реЗрдХрд┐рди рдЕрднреА рднреА рдЧреНрд░рд╛рд╣рдХреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЖрдпрд╛рдд рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдПрдХ рдкреИрдХреЗрдЬ рдореМрдЬреВрдж рд╣реИред https://github.com/golang/go/issues/16339#issuecomment -232813695 рдкрд░ рдХреБрдЫ рд╣рдж рддрдХ рд╕рд╛рд░ рдЙрджрд╛рд╣рд░рдг рд╡рд░реНрдгрд┐рдд рд╣реИред

  3. рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдмрдлрд╝рд░реНрд╕ рдореЗрдВ рдПрдХ "рдЖрдпрд╛рдд рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ" рд╕реБрд╡рд┐рдзрд╛ рд╣реЛрддреА рд╣реИ, рдЬрд┐рд╕рдХрд╛ рд╢рдмреНрджрд╛рд░реНрде рдЙрддреНрдкрдиреНрди C ++ рдХреЛрдб рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреБрдЪреНрдЫ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрддреНрдкрдиреНрди рдЧреЛ рдХреЛрдб рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИред рдпрд╣ C++ рдФрд░ Go рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рдмреАрдЪ рд╕рд╛рдЭрд╛ рдХрд┐рдП рдЧрдП рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдмрдлрд░ рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд▓реЗрдЦрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдирд┐рд░рд╛рд╢рд╛ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИред рдЯрд╛рдЗрдк рдПрд▓рд┐рдпрд╛рд╕ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЧреЛ рдХреЗ рд▓рд┐рдП рдПрдХ рд░рд╛рд╕реНрддрд╛ рдкреНрд░рджрд╛рди рдХрд░реЗрдЧрд╛ред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЖрдпрд╛рдд рдЬрдирддрд╛ рдХреЗ рд▓рд┐рдП рдореВрд▓ рдЙрдкрдпреЛрдЧ рдХрд╛ рдорд╛рдорд▓рд╛ рдХреНрд░рдорд┐рдХ рдХреЛрдб рдорд░рдореНрдордд рдерд╛ ред рдЗрд╕реА рддрд░рд╣ рдХреЗ рдореБрджреНрджреЗ рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░ рдХреЗ рдХреЛрдб рдЬрдирд░реЗрдЯрд░ рдореЗрдВ рдЙрддреНрдкрдиреНрди рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред

  4. рд▓рдВрдмреЗ рдирд╛рдореЛрдВ рдХреЛ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдХрд░рдирд╛ред рд╕реНрдерд╛рдиреАрдп (рдЕрдирдПрдХреНрд╕рдкреЛрд░реНрдЯреЗрдб рдпрд╛ рдиреЙрдЯ-рдкреИрдХреЗрдЬ-рд╕реНрдХреЛрдкреНрдб) рдЙрдкрдирд╛рдо рдПрдХ рдкреВрд░реЗ рдирдП рдкреНрд░рдХрд╛рд░ рдХреЗ рдУрд╡рд░рд╣реЗрдб рдХреЛ рдкреЗрд╢ рдХрд┐рдП рдмрд┐рдирд╛ рдПрдХ рд▓рдВрдмреЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рдирд╛рдо рдХреЛ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╕рд╛рди рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдЬреИрд╕рд╛ рдХрд┐ рдЗрди рд╕рднреА рдЙрдкрдпреЛрдЧреЛрдВ рдХреЗ рд╕рд╛рде рд╣реЛрддрд╛ рд╣реИ, рдЕрдВрддрд┐рдо рдХреЛрдб рдХреА рд╕реНрдкрд╖реНрдЯрддрд╛ рдЗрд╕ рдмрд╛рдд рдХреЛ рджреГрдврд╝рддрд╛ рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░реЗрдЧреА рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдПрдХ рд╕реБрдЭрд╛рдпрд╛ рдЧрдпрд╛ рдЙрдкрдпреЛрдЧ рд╣реИред

рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░ рдХреЗ рдЙрдкрдирд╛рдореЛрдВ рдХреЗ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЛ рдХрд┐рди рдЕрдиреНрдп рдореБрджреНрджреЛрдВ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ?

рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдП рдЗрдиреНрд╣реЗрдВ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рдирд╛ред рдЗрд╕ рдЦрдВрдб рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рд╣рд▓ рдХрд░рдиреЗ рдпрд╛ рдЪрд░реНрдЪрд╛ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдХреБрдЫ рдкрд░ рдмрд╛рдж рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рдФрд░ рдиреАрдЪреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЦрдВрдбреЛрдВ рдореЗрдВ рд╕рдВрдХреНрд╖реЗрдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

  1. рдЧреЛрдбреЛрдХ рдореЗрдВ рд╣реИрдВрдбрд▓рд┐рдВрдЧред (https://github.com/golang/go/issues/18130#issuecomment-264323137 @nigeltao рджреНрд╡рд╛рд░рд╛ рдФрд░ https://github.com/golang/go/issues/18130#issuecomment-264326437 @jimmyfrasche рджреНрд╡рд╛рд░рд╛)

  2. рдХреНрдпрд╛ рдЙрдкрдирд╛рдореЛрдВ рджреНрд╡рд╛рд░рд╛ рдирд╛рдорд┐рдд рдкреНрд░рдХрд╛рд░реЛрдВ рдкрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ? (https://github.com/golang/go/issues/18130#issuecomment-2650778877 @ulikunitz рджреНрд╡рд╛рд░рд╛)

  3. рдпрджрд┐ рдЙрдкрдирд╛рдореЛрдВ рдХреЗ рдЙрдкрдирд╛рдореЛрдВ рдХреА рдЕрдиреБрдорддрд┐ рд╣реИ, рддреЛ рд╣рдо рдЙрдкрдирд╛рдо рдЪрдХреНрд░реЛрдВ рдХреЛ рдХреИрд╕реЗ рд╕рдВрднрд╛рд▓реЗрдВрдЧреЗ? (https://github.com/golang/go/issues/18130#issuecomment-264494658 @thwd рджреНрд╡рд╛рд░рд╛)

  4. рдХреНрдпрд╛ рдЙрдкрдирд╛рдо рдирд┐рд░реНрдпрд╛рдд рди рдХрд┐рдП рдЧрдП рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛рдУрдВ рдХреЛ рдирд┐рд░реНрдпрд╛рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП? (https://github.com/golang/go/issues/18130#issuecomment-264494658 @thwd рджреНрд╡рд╛рд░рд╛)

  5. рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдЖрдк рдПрдХ рдЙрдкрдирд╛рдо рдПрдореНрдмреЗрдб рдХрд░рддреЗ рд╣реИрдВ (рдЖрдк рдПрдореНрдмреЗрдбреЗрдб рдлрд╝реАрд▓реНрдб рддрдХ рдХреИрд╕реЗ рдкрд╣реБрдБрдЪрддреЗ рд╣реИрдВ)? (https://github.com/golang/go/issues/18130#issuecomment-264494658 @thwd рджреНрд╡рд╛рд░рд╛, #17746 рднреА)

  6. рдХреНрдпрд╛ рдЙрдкрдирд╛рдо рдирд┐рд░реНрдорд┐рдд рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рдкреНрд░рддреАрдХреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИрдВ? (https://github.com/golang/go/issues/18130#issuecomment-264494658 @thwd рджреНрд╡рд╛рд░рд╛)

  7. Ldflags рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЗрдВрдЬреЗрдХреНрд╢рди: рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рд╣рдо рдПрдХ рдЙрдкрдирд╛рдо рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рддреЗ рд╣реИрдВ? (https://github.com/golang/go/issues/18130#issuecomment-264494658 @thwd рджреНрд╡рд╛рд░рд╛; рдпрд╣ рдХреЗрд╡рд▓ рддрднреА рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИ рдЬрдм var рдЙрдкрдирд╛рдо рд╣реЛрдВред)

рдХреНрдпрд╛ рд╡рд░реНрдЬрдирд┐рдВрдЧ рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рдПрдХ рд╕рдорд╛рдзрд╛рди рд╣реИ?

"рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╡рд░реНрдЬрдирд┐рдВрдЧ рд╕рдВрдкреВрд░реНрдг рдЙрддреНрддрд░ рд╣реЛ, рди рдХрд┐ рдЙрдкрдирд╛рдо рдЯрд╛рдЗрдк рдХрд░реЗрдВред"
(https://github.com/golang/go/issues/18130#issuecomment-264573088 @iainmerrick рджреНрд╡рд╛рд░рд╛)

рдЬреИрд╕рд╛ рдХрд┐ рд▓реЗрдЦ рдореЗрдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ , рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡рд░реНрдЬрдирд┐рдВрдЧ рдПрдХ рдкреВрд░рдХ рдЪрд┐рдВрддрд╛ рд╣реИред рдХреНрд░рдорд┐рдХ рдХреЛрдб рдорд░рдореНрдордд рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди, рдЬреИрд╕реЗ рдХрд┐ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЙрдкрдирд╛рдореЛрдВ рдХреЗ рд╕рд╛рде, рдПрдХ рд╕рдВрд╕реНрдХрд░рдг рдкреНрд░рдгрд╛рд▓реА рдХреЛ рдПрдХ рдмрдбрд╝реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдирд┐рд░реНрдорд╛рдг рдореЗрдВ рдЕрдзрд┐рдХ рд▓рдЪреАрд▓рд╛рдкрди рджреЗрддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рдХрд╛рд░реНрдпрдХреНрд░рдо рдмрдирд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдирд╣реАрдВред

рдХреНрдпрд╛ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдмрдбрд╝реА рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рд╕рдХрддреА рд╣реИ?

https://github.com/golang/go/issues/18130#issuecomment -265052639 рдореЗрдВ, @niemeyer рдмрддрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдУрдПрд╕ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рджреЛ рдмрджрд▓рд╛рд╡ рдереЗред рддреНрд░реБрдЯрд┐ рдореЗрдВ рддреНрд░реБрдЯрд┐: рдирд╛рдо рдмрджрд▓ рдЧрдпрд╛ рд▓реЗрдХрд┐рди рдкрд░рд┐рднрд╛рд╖рд╛ (рд╡рд░реНрддрдорд╛рди) рддреНрд░реБрдЯрд┐ рд╡рд┐рдзрд┐ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╡рд┐рдзрд┐ рд╣реБрдЖ рдХрд░рддреА рдереА)ред

@niemeyer рдХрд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рд╢рд╛рдпрдж рд╣рдо рд╡реНрдпрд╛рдкрдХ рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдвреВрдВрдв рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЗ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрдХреБрд▓ рдХреЗ рдмреАрдЪ рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рдареАрдХ рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рд╡рд┐рдзрд┐ рдирд╛рдо рдмрджрд▓рдиреЗ рдЬреИрд╕реА рдЪреАрдЬреЛрдВ рдХреЛ рднреА рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИ, рдФрд░ рд╡рд╣ "рдПрдбреЗрдкреНрдЯрд░" рдХреЗ рдЖрд╕рдкрд╛рд╕ рдирд┐рд░реНрдорд┐рдд рд╕рдорд╛рдзрд╛рди рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд░рддрд╛ рд╣реИред

рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдЙрдЪрд┐рдд рдорд╛рддреНрд░рд╛ рдореЗрдВ рдЪрд░реНрдЪрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдпрд╣рд╛рдВ рдЖрд╕рд╛рдиреА рд╕реЗ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдирд╣реАрдВ рдмрддрд╛ рд╕рдХрддрд╛ред рдЪрд░реНрдЪрд╛ рдЦрддреНрдо рдирд╣реАрдВ рд╣реБрдИ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрднреА рддрдХ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ "рдПрдбреЗрдкреНрдЯрд░" рднрд╛рд╖рд╛ рдореЗрдВ рдлрд┐рдЯ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдПрдбреЗрдкреНрдЯрд░ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЙрдкрдирд╛рдореЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдкрд░рд┐рдорд╛рдг рдХреЗ рдХрдо рд╕реЗ рдХрдо рдПрдХ рдХреНрд░рдо рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИрдВред

рдПрдбреЗрдкреНрдЯрд░ рдХреЛ рдиреАрдЪреЗ рдмрддрд╛рдИ рдЧрдИ рд╕рдмрдЯрд╛рдЗрдкрд┐рдВрдЧ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реБрд╕рдВрдЧрдд рд╕рдорд╛рдзрд╛рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдХреНрдпрд╛ рдЙрдкрдирд╛рдо рдкреНрд░рдХрд╛рд░реЛрдВ рдкрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреА рдШреЛрд╖рдгрд╛ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ?

рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЙрдкрдирд╛рдо рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рдзрд┐ рдкрд░рд┐рднрд╛рд╖рд╛ рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рдХреЛ рджрд░рдХрд┐рдирд╛рд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВ: рдпрджрд┐ рдХреЛрдИ рдкреИрдХреЗрдЬ T1 = otherpkg.T2 рдкреНрд░рдХрд╛рд░ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ, рддреЛ рдпрд╣ T1 рдкрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рдпрд╣ рд╕реАрдзреЗ рдЕрдиреНрдпpkg.T2 рдкрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдпрд╛рдиреА рдЕрдЧрд░ рдЯрд╛рдЗрдк T1 = otherpkg.T2, рддреЛ func (T1) M() func (otherpkg.T2) M() рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ, рдЬреЛ рдЖрдЬ рдЕрдорд╛рдиреНрдп рд╣реИ рдФрд░ рдЕрдорд╛рдиреНрдп рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрджрд┐ рдХреЛрдИ рдкреИрдХреЗрдЬ рдЯрд╛рдЗрдк T1 = T2 (рджреЛрдиреЛрдВ рдПрдХ рд╣реА рдкреИрдХреЗрдЬ рдореЗрдВ) рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЙрддреНрддрд░ рдХрдо рд╕реНрдкрд╖реНрдЯ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, func (T1) M () func (T2) M () рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрдЧрд╛; рдЪреВрдВрдХрд┐ рдмрд╛рдж рдХреА рдЕрдиреБрдорддрд┐ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдкреВрд░реНрд╡ рдХреЛ рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХрд╛ рддрд░реНрдХ рд╣реИред рд╡рд░реНрддрдорд╛рди рдбрд┐рдЬрд╝рд╛рдЗрди рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдпрд╣рд╛рдВ рдкреНрд░рддрд┐рдмрдВрдз рдирд╣реАрдВ рд▓рдЧрд╛рддрд╛ рд╣реИ (рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рдкрд░рд┐рд╣рд╛рд░ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП), рддрд╛рдХрд┐ рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ func (T1) M() рдорд╛рдиреНрдп рд╣реЛред

https://github.com/golang/go/issues/18130#issuecomment -267694112 рдореЗрдВ, @jimmyfrasche рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реИ рдХрд┐ "рд╡рд┐рдзрд┐ рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдЙрдкрдирд╛рдореЛрдВ рдХрд╛ рдХреЛрдИ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ" рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдПрдХ рд╕реНрдкрд╖реНрдЯ рдирд┐рдпрдо рд╣реЛрдЧрд╛ рдФрд░ рдпрд╣ рдЬрд╛рдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╕реЗ рдмрдЪреЗрдВ рдХрд┐ рдЯреА рдХреНрдпрд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реИ рдпрд╣ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ func (T) M() рдорд╛рдиреНрдп рд╣реИ рдпрд╛ рдирд╣реАрдВред https://github.com/golang/go/issues/18130#issuecomment -267997124 рдореЗрдВ, @rsc рдмрддрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдЖрдЬ рднреА рдХреБрдЫ рдирд┐рд╢реНрдЪрд┐рдд T рд╣реИрдВ рдЬрд┐рдирдХреЗ рд▓рд┐рдП func (T) M() рдорд╛рдиреНрдп рдирд╣реАрдВ рд╣реИ: https://play .golang.org/p/bci2qnldejред рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдпрд╣ рд╕рд╛рдордиреЗ рдирд╣реАрдВ рдЖрддрд╛ рдХреНрдпреЛрдВрдХрд┐ рд▓реЛрдЧ рдЙрдЪрд┐рдд рдХреЛрдб рд▓рд┐рдЦрддреЗ рд╣реИрдВред

рд╣рдо рдЗрд╕ рд╕рдВрднрд╛рд╡рд┐рдд рдкреНрд░рддрд┐рдмрдВрдз рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦреЗрдВрдЧреЗ рд▓реЗрдХрд┐рди рддрдм рддрдХ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ рдЬрдм рддрдХ рдХрд┐ рдЗрд╕ рдмрд╛рдд рдХреЗ рдкреБрдЦреНрддрд╛ рд╕рдмреВрдд рди рд╣реЛрдВ рдХрд┐ рдЗрд╕реЗ рдкреЗрд╢ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдХреНрдпрд╛ рдПрдореНрдмреЗрдбрд┐рдВрдЧ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХрд╛ рдПрдХ рдХреНрд▓реАрдирд░ рддрд░реАрдХрд╛ рд╣реИ рдФрд░, рдЖрдо рддреМрд░ рдкрд░, рдлрд╝реАрд▓реНрдб рдХрд╛ рдирд╛рдо рдмрджрд▓рддрд╛ рд╣реИ?

https://github.com/golang/go/issues/18130#issuecomment -267691816 рдореЗрдВ, @Merovius рдмрддрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдПрдХ рдПрдореНрдмреЗрдбреЗрдб рдкреНрд░рдХрд╛рд░ рдЬреЛ рдПрдХ рдкреИрдХреЗрдЬ рдЪрд╛рд▓ рдХреЗ рджреМрд░рд╛рди рдЕрдкрдирд╛ рдирд╛рдо рдмрджрд▓рддрд╛ рд╣реИ, рд╕рдорд╕реНрдпрд╛ рдкреИрджрд╛ рдХрд░реЗрдЧрд╛ рдЬрдм рдЙрд╕ рдирдП рдирд╛рдо рдХреЛ рдЕрдВрддрддрдГ рдЕрдкрдирд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рд╕рд╛рдЗрдЯреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░рдХрд╛рд░ U рдореЗрдВ рдПрдХ рдПрдореНрдмреЗрдбреЗрдб io.ByteBuffer рд╣реИ рдЬреЛ рдмрд╛рдЗрдЯреНрд╕ рдореЗрдВ рдЪрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпреВ.рдмрдлрд░ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрдиред

https://github.com/golang/go/issues/18130#issuecomment -267710478 рдореЗрдВ, @neild рдмрддрд╛рддреЗ рд╣реИрдВ рдХрд┐ io.ByteBuffer рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдХрдо рд╕реЗ рдХрдо рдПрдХ рд╕рдорд╛рдзрд╛рди рд╣реИ: рдкреИрдХреЗрдЬ P рдЬреЛ U рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ, рд╡рд╣ рднреА рдХрд░ рд╕рдХрддрд╛ рд╣реИ 'рдЯрд╛рдЗрдк рдмрд╛рдЗрдЯрдмрдлрд░ = рдмрд╛рдЗрдЯреНрд╕ред рдмрдлрд░' рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ рдФрд░ рдЙрд╕ рдкреНрд░рдХрд╛рд░ рдХреЛ рдпреВ рдореЗрдВ рдПрдореНрдмреЗрдб рдХрд░реЗрдВред рдлрд┐рд░ рдпреВ рдХреЗ рдкрд╛рд╕ рдЕрднреА рднреА рдпреВ.рдмрд╛рдЗрдЯрдмрдлрд░ рд╣реИ, рднрд▓реЗ рд╣реА io.ByteBuffer рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЪрд▓рд╛ рдЧрдпрд╛ рд╣реЛред

https://github.com/golang/go/issues/18130#issuecomment -267703067 рдореЗрдВ, @bcmills рдХреНрд╖реЗрддреНрд░ рдЙрдкрдирд╛рдореЛрдВ рдХреЗ рд╡рд┐рдЪрд╛рд░ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реИ, рддрд╛рдХрд┐ рдПрдХ рдХреНрд╖реЗрддреНрд░ рдХреЛ рдХреНрд░рдорд┐рдХ рдорд░рдореНрдордд рдХреЗ рджреМрд░рд╛рди рдХрдИ рдирд╛рдо рд░рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдорд┐рд▓ рд╕рдХреЗред рдлрд╝реАрд▓реНрдб рдЙрдкрдирд╛рдо рд╢реАрд░реНрд╖-рд╕реНрддрд░реАрдп рдкреНрд░рдХрд╛рд░ рдХреЗ рдЙрдкрдирд╛рдо рдмрдирд╛рдиреЗ рдХреЗ рдмрдЬрд╛рдп type U struct { bytes.Buffer; ByteBuffer = Buffer } рдЬреИрд╕реА рдХрд┐рд╕реА рдЪреАрдЬрд╝ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред

https://github.com/golang/go/issues/18130#issuecomment -268001111 рдореЗрдВ, @rsc рдЕрднреА рддрдХ рдПрдХ рдФрд░ рд╕рдВрднрд╛рд╡рдирд╛ рдЙрдард╛рддрд╛ рд╣реИ: 'рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЛ рдЗрд╕ рдирд╛рдо рд╕реЗ рдПрдореНрдмреЗрдб рдХрд░реЗрдВ' рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕, рддрд╛рдХрд┐ рдмрд╛рдЗрдЯреНрд╕ рдХреЛ рдПрдореНрдмреЗрдб рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛред рд╢реАрд░реНрд╖-рд╕реНрддрд░реАрдп рдкреНрд░рдХрд╛рд░ рдпрд╛ рд╡реИрдХрд▓реНрдкрд┐рдХ рдирд╛рдо рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд┐рдирд╛, рдлрд╝реАрд▓реНрдб рдирд╛рдо рдмрд╛рдЗрдЯрдмрдлрд╝рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдмрдлрд╝рд░ред рдпрджрд┐ рд╡рд╣ рдЕрд╕реНрддрд┐рддреНрд╡ рдореЗрдВ рд╣реИ, рддреЛ рдореВрд▓ рдирд╛рдо рдХреЛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд░рддреЗ рд╣реБрдП рдЯрд╛рдЗрдк рдирд╛рдо рдХреЛ io.ByteBuffer рд╕реЗ рдмрд╛рдЗрдЯреНрд╕ рдореЗрдВ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдФрд░ рдПрдХ рджреВрд╕рд░реЗ рдХрд╛ рдкрд░рд┐рдЪрдп рдирд╣реАрдВ рджреЗ рд░рд╣рд╛ рд╣реИ, рди рд╣реА рдПрдХ рдЕрдирд╛рдбрд╝реА рдирд┐рд░реНрдпрд╛рдд рдкреНрд░рдХрд╛рд░)ред

рдПрдХ рдмрд╛рд░ рдЬрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдХреЗ рдЕрдзрд┐рдХ рд╕рдмреВрдд рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ рдлрд╝реАрд▓реНрдб рдирд╛рдо рдмрджрд▓рдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ рд╕реЗ рдЕрд╡рд░реБрджреНрдз рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдпреЗ рд╕рднреА рддрд▓рд╛рд╢рдиреЗ рд▓рд╛рдпрдХ рд▓рдЧрддреЗ рд╣реИрдВред рдЬреИрд╕рд╛ рдХрд┐ @rsc рдиреЗ рд▓рд┐рдЦрд╛ рд╣реИ, "рдпрджрд┐ рдЯрд╛рдЗрдк рдЙрдкрдирд╛рдо рд╣рдореЗрдВ рдЙрд╕ рдмрд┐рдВрджреБ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдлрд╝реАрд▓реНрдб рдЙрдкрдирд╛рдореЛрдВ рдХреА рдХрдореА рдЕрдЧрд▓реА рдмрдбрд╝реА рдмрд╛рдзрд╛ рд╣реИ, рддреЛ рдпрд╣ рдкреНрд░рдЧрддрд┐ рд╣реЛрдЧреА!"

рдПрдореНрдмреЗрдбреЗрдб рдХреНрд╖реЗрддреНрд░реЛрдВ рдореЗрдВ рдЙрдкрдирд╛рдореЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдпрд╛ рд▓рдХреНрд╖реНрдп рдкреНрд░рдХрд╛рд░ рдХреЗ рдирд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдореНрдмреЗрдбреЗрдб рдирд╛рдо рдмрджрд▓рдиреЗ рдХрд╛ рдПрдХ рд╕реБрдЭрд╛рд╡ рдерд╛, рд▓реЗрдХрд┐рди рд╡реЗ рдЙрдкрдирд╛рдо рдкрд░рд┐рдЪрдп рдореМрдЬреВрджрд╛ рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдХреЛ рддреЛрдбрд╝рддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рддрдм рдкрд░рдорд╛рдгреБ рд░реВрдк рд╕реЗ рддрдп рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдХрд┐рд╕реА рднреА рдХреНрд░рдорд┐рдХ рдорд░рдореНрдордд рдХреЛ рд░реЛрдХрдирд╛ред @rsc : "рд╣рдордиреЗ # 17746 рдореЗрдВ рдХреБрдЫ рд▓рдВрдмрд╛рдИ рдореЗрдВ рдЗрд╕ рдкрд░ рдЪрд░реНрдЪрд╛ рдХреАред рдореИрдВ рдореВрд▓ рд░реВрдк рд╕реЗ рдПрдХ рдПрдореНрдмреЗрдбреЗрдб io.ByteBuffer рдЙрдкрдирд╛рдо рдмрдлрд╝рд░ рдХреЗ рдирд╛рдо рдкрд░ рдерд╛, рд▓реЗрдХрд┐рди рдЙрдкрд░реЛрдХреНрдд рддрд░реНрдХ рдиреЗ рдореБрдЭреЗ рдЖрд╢реНрд╡рд╕реНрдд рдХрд┐рдпрд╛ рдХрд┐ рдореИрдВ рдЧрд▓рдд рдерд╛ред @jimmyfrasche рдиреЗ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдХреБрдЫ рдЕрдЪреНрдЫрд╛ рдмрдирд╛рдпрд╛ рдПрдореНрдмреЗрдбреЗрдб рдЪреАрдЬрд╝ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХреЛрдб рдирд╣реАрдВ рдмрджрд▓рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рддрд░реНрдХред рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рдПрдореНрдмреЗрдбреЗрдб рдЙрдкрдирд╛рдореЛрдВ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИред"

рдкреНрд░рддрд┐рдмрд┐рдВрдм рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдкрд░ рдХреНрдпрд╛ рдкреНрд░рднрд╛рд╡ рдкрдбрд╝рддрд╛ рд╣реИ?

рдкреНрд░рддрд┐рдмрд┐рдВрдм рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЙрдкрдирд╛рдореЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рджреЗрдЦрддреЗ рд╣реИрдВред https://github.com/golang/go/issues/18130#issuecomment -267903649 рдореЗрдВ, @atdiar рдмрддрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдпрджрд┐ рдХреЛрдИ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдкреНрд░рддрд┐рдмрд┐рдВрдм рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЙрд╕ рдкреИрдХреЗрдЬ рдХреЛ рдвреВрдВрдвреЗрдВ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдкреНрд░рдХрд╛рд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдирд╛рдо рднреА рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛, рдпрд╣ рдкрд░рд┐рд╡рд░реНрддрди рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░реЗрдЧрд╛ рдЬрдм рдкреНрд░рдХрд╛рд░ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рдПрдХ рдЕрдЧреНрд░реЗрд╖рдг рдЙрдкрдирд╛рдо рдкреАрдЫреЗ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛред https://github.com/golang/go/issues/18130#issuecomment -268001410 рдореЗрдВ, @rsc рдиреЗ рдЗрд╕рдХреА рдкреБрд╖реНрдЯрд┐ рдХреА рдФрд░ рд▓рд┐рдЦрд╛ "рдПрдореНрдмреЗрдбрд┐рдВрдЧ рдХреА рд╕реНрдерд┐рддрд┐ рдХреА рддрд░рд╣, рдпрд╣ рд╕рд╣реА рдирд╣реАрдВ рд╣реИред рдПрдореНрдмреЗрдбрд┐рдВрдЧ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдореЗрд░реЗ рдкрд╛рд╕ рдХреЛрдИ рдирд╣реАрдВ рд╣реИ рдЙрддреНрддрд░ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рд╢рд╛рдпрдж рдХреЛрдб рдЙрди рд╡рд┐рд╡рд░рдгреЛрдВ рдХреЗ рдкреНрд░рддрд┐ рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдирд╣реАрдВ рд▓рд┐рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред"

рд╡рд┐рдХреНрд░реЗрддрд╛ рдкреИрдХреЗрдЬреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрдЬ рднреА рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рджреНрд╡рд╛рд░рд╛ рджреЗрдЦреЗ рдЧрдП рдкреИрдХреЗрдЬ рдЖрдпрд╛рдд рдкрде рдХреЛ рдмрджрд▓рддрд╛ рд╣реИ, рдФрд░ рд╣рдореЗрдВ рдЙрд╕ рдЕрд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рдХрд╛рд░рдг рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕рдорд╕реНрдпрд╛рдУрдВ рд╕реЗ рдЕрд╡рдЧрдд рдирд╣реАрдВ рдХрд░рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЖрдорддреМрд░ рдкрд░ рдкрд░рд╛рд╡рд░реНрддрди рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдлрд┐рд░ рднреА, рдпрд╣ рдПрдХ рд╕рдВрднрд╛рд╡рд┐рдд рдЕрдВрддрд░ рд╣реИ, рдареАрдХ рдПрдореНрдмреЗрдб рдХрд░рдиреЗ рдХреА рддрд░рд╣ред

рдкреНрд░реЛрдЧреНрд░рд╛рдо рдФрд░ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдВрдХрд▓рди рдкрд░ рдХреНрдпрд╛ рдкреНрд░рднрд╛рд╡ рдкрдбрд╝рддрд╛ рд╣реИ?

https://github.com/golang/go/issues/18130#issuecomment -268524504 рдореЗрдВ, @atdiar рдСрдмреНрдЬреЗрдХреНрдЯ рдлрд╛рдЗрд▓реЛрдВ рдФрд░ рдЕрд▓рдЧ рд╕рдВрдХрд▓рди рдкрд░ рдкреНрд░рднрд╛рд╡ рдХрд╛ рд╕рд╡рд╛рд▓ рдЙрдард╛рддрд╛ рд╣реИред https://github.com/golang/go/issues/18130#issuecomment -268560180 рдореЗрдВ, @rsc рдЬрд╡рд╛рдм рджреЗрддрд╛ рд╣реИ рдХрд┐ рдпрд╣рд╛рдВ рдмрджрд▓рд╛рд╡ рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП: рдпрджрд┐ X, Y рдФрд░ Y рдХреЛ рдЖрдпрд╛рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ X рдХреЛ рдпрд╣ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рднреА рдкреБрди: рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПред рдпрд╣ рдЖрдЬ рдмрд┐рдирд╛ рдЙрдкрдирд╛рдо рдХреЗ рд╕рдЪ рд╣реИ, рдФрд░ рдпрд╣ рдЙрдкрдирд╛рдореЛрдВ рдХреЗ рд╕рд╛рде рднреА рд╕рдЪ рд░рд╣реЗрдЧрд╛ред рдЕрд▓рдЧ рд╕рдВрдХрд▓рди рдХрд╛ рдЕрд░реНрде рд╣реИ рдПрдХреНрд╕ рдФрд░ рд╡рд╛рдИ рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЪрд░рдгреЛрдВ рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ (рд╕рдВрдХрд▓рдХ рдХреЛ рдЙрдиреНрд╣реЗрдВ рдПрдХ рд╣реА рдЖрдордВрддреНрд░рдг рдореЗрдВ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ), рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдПрдХреНрд╕ рдХреЛ рдкреБрди: рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдП рдмрд┐рдирд╛ рд╡рд╛рдИ рдХреЛ рдмрджрд▓рдирд╛ рд╕рдВрднрд╡ рд╣реИред

рдХреНрдпрд╛ рдпреЛрдЧ рдкреНрд░рдХрд╛рд░ рдпрд╛ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╕рдмрдЯрд╛рдЗрдкрд┐рдВрдЧ рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╕рдорд╛рдзрд╛рди рд╣реЛрдЧрд╛?

https://github.com/golang/go/issues/18130#issuecomment -264413439 рдореЗрдВ, @iand "рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдпреЛрдЧреНрдп рдкреНрд░рдХрд╛рд░" рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реИ, "рдкреНрд░рдХрд╛рд░реЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдЬрд┐рд╕реЗ рдлрд╝рдВрдХреНрд╢рди рддрд░реНрдХреЛрдВ, рд░рд┐рдЯрд░реНрди рд╡реИрд▓реНрдпреВ рдЖрджрд┐ рдореЗрдВ рдирд╛рдорд┐рдд рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред ". https://github.com/golang/go/issues/18130#issuecomment -268072274 рдореЗрдВ, @ j7b рдмреАрдЬреАрдп рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реИ "рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдПрдХ рдмреЛрдирд╕ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрдХрд▓рди рд╕рдордп рдкреНрд░рдХрд╛рд░ рдХреА рдЬрд╛рдБрдЪ рдХреЗ рд╕рд╛рде рдПрдХ рдЦрд╛рд▓реА рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рднреА рдорд┐рд▓рддрд╛ рд╣реИ"ред рдЗрд╕ рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЗ рдЕрдиреНрдп рдирд╛рдо рдпреЛрдЧ рдкреНрд░рдХрд╛рд░ рдФрд░ рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рд╣реИрдВред

рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░ рдпрд╣ рдХреНрд░рдорд┐рдХ рдХреЛрдб рдорд░рдореНрдордд рдХреЗ рд╕рд╛рде рдЪрд▓рддреА рдкреНрд░рдХрд╛рд░реЛрдВ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдиреЗ рдХреЗ рджреЛ рддрд░реАрдХреЗ рд╣реИрдВред

https://github.com/golang/go/issues/18130#issuecomment -268075680 рдореЗрдВ, @bcmills рдареЛрд╕ рддрд░реАрдХрд╛

https://github.com/golang/go/issues/18130#issuecomment -268585497 рдореЗрдВ, @rsc рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рддрд░реАрдХрд╛ https://github.com/golang/go/issues/18130#issuecomment -265211655 рдкрд░ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддрд╛ рд╣реИ @gri рдиреЗ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдХрд┐ рдХреНрд░рдорд┐рдХ рдХреЛрдб рдорд░рдореНрдордд рдореЗрдВ, рдХрднреА-рдХрднреА рдЖрдкрдХреЛ T1 рдХреЛ T2 рдХрд╛ рдЙрдкрдкреНрд░рдХрд╛рд░ рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдФрд░ рдХрднреА-рдХрднреА рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрддред рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ-рджреВрд╕рд░реЗ рдХреЗ рдЙрдк-рдкреНрд░рдХрд╛рд░ рд╣реЛрдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рдЙрдирдХреЗ рд▓рд┐рдП рдПрдХ рд╣реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╣реЛрдирд╛ рд╣реИ, рдЬреЛ рд╕рдВрдпреЛрдЧрд╡рд╢ рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЙрдкрдирд╛рдо рдХрд░рддреЗ рд╣реИрдВред

рдПрдХ рд╕рд╛рдЗрдб рдЯреЗрдВрдЧреЗрдВрдЯ рдХреЗ рд░реВрдк рдореЗрдВ, рдХреНрд░рдорд┐рдХ рдХреЛрдб рдорд░рдореНрдордд рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдмреАрдЬреАрдп рдкреНрд░рдХрд╛рд░ / рдпреЛрдЧ рдкреНрд░рдХрд╛рд░ / рд╕рдВрдШ рдкреНрд░рдХрд╛рд░ / рдкреНрд░рдХрд╛рд░ рдкреНрд░рдХрд╛рд░ рд╕реНрд╡рдпрдВ рдХреЛ рдЧреЛ рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рдХрдард┐рди рд╣реЛрддрд╛ рд╣реИред рджреЗрдЦреЛ
рдЕрдХреНрд╕рд░ рдкреВрдЫреЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рд╢реНрди рдЙрддреНрддрд░ рдФрд░ рдЕрдзрд┐рдХ рдХреЗ рд▓рд┐рдП рдЧреЛ 1.6 рдПрдПрдордП рдЪрд░реНрдЪрд╛ ред

https://github.com/golang/go/issues/18130#issuecomment -265206780 рдореЗрдВ, @thwd рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реИ рдХрд┐ рдЪреВрдВрдХрд┐ рдЧреЛ рдХрд╛ рдареЛрд╕ рдкреНрд░рдХрд╛рд░ рдФрд░ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рдмреАрдЪ рдПрдХ рд╕рдмрдЯрд╛рдЗрдкрд┐рдВрдЧ рд╕рдВрдмрдВрдз рд╣реИ (рдмрд╛рдЗрдЯреНрд╕ред рдмрдлрд░ рдХреЛ io.Reader рдХреЗ рдЙрдкрдкреНрд░рдХрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред ) рдФрд░ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рдмреАрдЪ (io.ReadWriter рдЙрд╕реА рддрд░рд╣ io.Reader рдХрд╛ рдПрдХ рдЙрдкрдкреНрд░рдХрд╛рд░ рд╣реИ), рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ "рдкреБрдирд░рд╛рд╡рд░реНрддреА рд╕рд╣рд╕рдВрдпреЛрдЬрдХ (рд╡рд░реНрддрдорд╛рди рд╡рд┐рдЪрд░рдг рдирд┐рдпрдореЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░) рдЙрдирдХреЗ рд╡рд┐рдзрд┐ рддрд░реНрдХреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░" рдмрдирд╛рдиреЗ рд╕реЗ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рд╣реЛрдЧрд╛, рдмрд╢рд░реНрддреЗ рдХрд┐ рд╕рднреА рднрд╡рд┐рд╖реНрдп рдХреЗ рдкреИрдХреЗрдЬ рдХреЗрд╡рд▓ рдЗрдВрдЯрд░рдлреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдХрднреА рднреА рдареЛрд╕ рдкреНрд░рдХрд╛рд░ рдЬреИрд╕реЗ рд╕реНрдЯреНрд░рдХреНрдЪрд░реНрд╕ ("рдЕрдЪреНрдЫреЗ рдбрд┐рдЬрд╝рд╛рдЗрди рдХреЛ рднреА рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░реЗрдВ")ред

рд╕рдорд╛рдзрд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕рдХреЗ рд╕рд╛рде рддреАрди рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЗрд╕рдореЗрдВ рдЙрдк-рдЯрд╛рдЗрдкрд┐рдВрдЧ рдореБрджреНрджреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдХреНрд░рдорд┐рдХ рдХреЛрдб рдорд░рдореНрдордд рдХреЛ рд╣рд▓ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рджреВрд╕рд░рд╛, рдпрд╣ рдореМрдЬреВрджрд╛ рдХреЛрдб рдкрд░ рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ @thwd рдиреЗ рдЗрд╕ рд╕реБрдЭрд╛рд╡ рдореЗрдВ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИред рддреАрд╕рд░рд╛, рд╣рд░ рдЬрдЧрд╣ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдордЬрдмреВрд░ рдХрд░рдирд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдЪреНрдЫрд╛ рдбрд┐рдЬрд╝рд╛рдЗрди рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдкреНрд░рджрд░реНрд╢рди рдУрд╡рд░рд╣реЗрдбреНрд╕ рдХрд╛ рдкрд░рд┐рдЪрдп рджреЗрддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рджреЗрдЦреЗрдВ https://github.com/golang/go/issues/18130#issuecomment-265211726 @Merovius рдФрд░ https://github рджреНрд╡рд╛рд░рд╛ .com/golang/go/issues/18130#issuecomment-265224652 @zombiezen рджреНрд╡рд╛рд░рд╛)ред

рдкреНрд░рддрд┐рдмрдВрдз

рдпрд╣ рдЦрдВрдб рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдП рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдкреНрд░рддрд┐рдмрдВрдз рдПрдХрддреНрд░ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдзреНрдпрд╛рди рд░рдЦреЗрдВ рдХрд┐ рдкреНрд░рддрд┐рдмрдВрдз рдЬрдЯрд┐рд▓рддрд╛ рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ https://github.com/golang/go/issues/18130#issuecomment -264195616 рдореЗрдВ рд▓рд┐рдЦрд╛ рд╣реИ, "рд╣рдореЗрдВ рд╢рд╛рдпрдж рдЙрди рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рдХреЛ рдЕрдкреНрд░рддрд┐рдмрдВрдзрд┐рдд, рд╕рд░рд▓ рдбрд┐рдЬрд╛рдЗрди рдХреЗ рд╕рд╛рде рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЕрдиреБрднрд╡ рдХреЗ рдмрд╛рдж рд╣реА рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рд╣рдореЗрдВ рдпрд╣ рд╕рдордЭрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдкреНрд░рддрд┐рдмрдВрдз рдкрд░реНрдпрд╛рдкреНрдд рд▓рд╛рдПрдЧрд╛ рдЗрд╕рдХреА рд▓рд╛рдЧрдд рдХрд╛ рднреБрдЧрддрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд╛рднред"

рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ рдХрд╣реЗрдВ рддреЛ рдХрд┐рд╕реА рднреА рдкреНрд░рддрд┐рдмрдВрдз рдХреЛ рдЗрд╕ рдмрд╛рдд рдХреЗ рдкреНрд░рдорд╛рдг рдХреЗ рджреНрд╡рд╛рд░рд╛ рдЙрдЪрд┐рдд рдард╣рд░рд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдпрд╣ рдХреБрдЫ рдЧрдВрднреАрд░ рджреБрд░реБрдкрдпреЛрдЧ рдпрд╛ рднреНрд░рдо рдХреЛ рд░реЛрдХреЗрдЧрд╛ред рдЪреВрдВрдХрд┐ рд╣рдордиреЗ рдЕрднреА рддрдХ рдХреЛрдИ рд╕рдорд╛рдзрд╛рди рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдРрд╕рд╛ рдХреЛрдИ рд╕рдмреВрдд рдирд╣реАрдВ рд╣реИред рдЕрдЧрд░ рдЕрдиреБрднрд╡ рдиреЗ рд╡рд╣ рд╕рдмреВрдд рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдпреЗ рд▓реМрдЯрдиреЗ рд▓рд╛рдпрдХ рд╣реЛрдВрдЧреЗред

рдкреНрд░рддрд┐рдмрдВрдз? рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рдЙрдкрдирд╛рдо рдХреЗрд╡рд▓ рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдШреЛрд╖рд┐рдд рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред

(https://github.com/golang/go/issues/18130#issuecomment-264165833 рдФрд░ https://github.com/golang/go/issues/18130#issuecomment-264171370 by @iand)

рдЪрд┐рдВрддрд╛ "рдХреЛрдб рд╣реИ рдЬрд┐рд╕рдиреЗ рдПрдХ рдХрд╕реНрдЯрдо рдирд╛рдордХрд░рдг рд╕рдореНрдореЗрд▓рди рдореЗрдВ рдлрд┐рдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХрд╛ рдирд╛рдо рдмрджрд▓ рджрд┐рдпрд╛ рд╣реИ", рдпрд╛ "рдХрдИ рдкреИрдХреЗрдЬреЛрдВ рдореЗрдВ рдЙрдкрдирд╛рдореЛрдВ рдХреА рд▓рдВрдмреА рд╕реНрдкреЗрдЧреЗрдЯреА рд╢реНрд░реГрдВрдЦрд▓рд╛рдПрдВ рдЬреЛ рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рд╡рд╛рдкрд╕ рдЖрддреА рд╣реИрдВ", рдпрд╛ "рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЬреИрд╕реА рдЪреАрдЬреЛрдВ рдХреЛ рдЕрд▓рд┐рдпрд╛ рдХрд░рдирд╛ {} рдФрд░ рддреНрд░реБрдЯрд┐" .

рдЬреИрд╕рд╛ рдХрд┐ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ, рдкреНрд░рддрд┐рдмрдВрдз рдКрдкрд░ рд╡рд░реНрдгрд┐рдд "рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдкреИрдХреЗрдЬ" рдорд╛рдорд▓реЗ рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рджреЗрдЧрд╛ рдЬрд┐рд╕рдореЗрдВ x/рдЫрд╡рд┐/рдбреНрд░рд╛ рд╢рд╛рдорд┐рд▓ рд╣реИред

рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╡рд┐рд╢реЗрд╖ рдХреНрдпреЛрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП: рдХрд┐рд╕реА рднреА рдХреЛрдб рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛рдПрдВ рдореМрдЬреВрдж рд╣реЛрдВрдЧреАред рд╕рд╛рде рд╣реА, рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕реЗ рди рддреЛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ {} рдФрд░ рди рд╣реА рддреНрд░реБрдЯрд┐ рдПрдХ рдкреНрд░рдХрд╛рд░ рд╣реИред рдкреНрд░рддрд┐рдмрдВрдз рдХреЛ "рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдкреНрд░рдХрд╛рд░ рдХреЛ рдЕрд▓рд┐рдпрд╛рд╕рд┐рдВрдЧ" рдХреЗ рд░реВрдк рдореЗрдВ рдкреБрди: рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рд╕реЗ рдЕрд▓рд┐рдпрд╛рд╕рд┐рдВрдЧ рддреНрд░реБрдЯрд┐ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рд╣реЛрдЧреА, рд▓реЗрдХрд┐рди рдЕрдиреНрдп рддреНрд░реБрдЯрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд▓реЗрдЦ рдореЗрдВ рдкреНрд░реЗрд░рдХ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдереАред

рдкреНрд░рддрд┐рдмрдВрдз? рдЙрдкрдирд╛рдо рд▓рдХреНрд╖реНрдп рдкреИрдХреЗрдЬ-рдпреЛрдЧреНрдп рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

(https://github.com/golang/go/issues/18130#issuecomment-264188282 @jba рджреНрд╡рд╛рд░рд╛)

рдпрд╣ рдПрдХ рдкреИрдХреЗрдЬ рдХреЗ рднреАрддрд░ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдирд╛рдо рдмрджрд▓рддреЗ рд╕рдордп рдПрдХ рдЙрдкрдирд╛рдо рдмрдирд╛рдирд╛ рдЕрд╕рдВрднрд╡ рдмрдирд╛ рджреЗрдЧрд╛, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрд░рдорд┐рдХ рдорд░рдореНрдордд рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рд▓рд┐рдП рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (https://github.com/golang/go/issues/18130#issuecomment-264274714 by @ рдмреАрд╕реАрдорд┐рд▓реНрд╕)ред

рдпрд╣ рдПрд▓рд┐рдпрд╛рд╕рд┐рдВрдЧ рддреНрд░реБрдЯрд┐ рдХреЛ рднреА рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рджреЗрдЧрд╛ рдЬреИрд╕рд╛ рдХрд┐ рд▓реЗрдЦ рдореЗрдВ рд╣реИред

рдкреНрд░рддрд┐рдмрдВрдз? рдЙрдкрдирд╛рдо рд▓рдХреНрд╖реНрдп рдкреИрдХреЗрдЬ-рдпреЛрдЧреНрдп рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд┐рд╕рдХрд╛ рдЙрдкрдирд╛рдо рдЙрдкрдирд╛рдо рдХреЗ рд╕рдорд╛рди рд╣реЛред

(рдЧреЛ 1.8 рдореЗрдВ рдЙрд░реНрдл тАЛтАЛрдЪрд░реНрдЪрд╛ рдХреЗ рджреМрд░рд╛рди рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд)

рдкреИрдХреЗрдЬ-рдпреЛрдЧреНрдп рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╕реАрдорд┐рдд рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рдкрд┐рдЫрд▓реЗ рдЕрдиреБрднрд╛рдЧ рдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдирд╛рдо рдХреЛ рд╡рд╣реА рд░рд╣рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рдиреЗ рд╕реЗ рд▓реЗрдЦ рдореЗрдВ io.ByteBuffer рд╕реЗ рдмрд╛рдЗрдЯреНрд╕.рдмрдлрд╝рд░ рдореЗрдВ рд░реВрдкрд╛рдВрддрд░рдг рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рд╣реЛрдЧреАред

рдкреНрд░рддрд┐рдмрдВрдз? рдЙрдкрдирд╛рдореЛрдВ рдХреЛ рдХрд┐рд╕реА рддрд░рд╣ рд╕реЗ рд╣рддреЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

"рдХреИрд╕реЗ рдПрдХ рдЖрдпрд╛рдд рдХреЗ рдкреАрдЫреЗ рдЙрдкрдирд╛рдо рдЫрд┐рдкрд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, "рд╕реА" рдФрд░ "рдЕрд╕реБрд░рдХреНрд╖рд┐рдд" рдХреА рддрд░рд╣, рдЗрд╕рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдФрд░ рд╣рддреЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП? рдЙрд╕реА рдирд╕ рдореЗрдВ, рдореИрдВ рдЙрдкрдирд╛рдо рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рд╡рд░реНрдмреЛрдЬрд╝ рд╣реЛрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдФрд░ рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдкрд░ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдордЪрд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рдЦрдбрд╝рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ ред" - https://github.com/golang/go/issues/18130#issuecomment -264289940 @xiegeo рджреНрд╡рд╛рд░рд╛

"рдХреНрдпрд╛ рд╣рдореЗрдВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдпрд╣ рднреА рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдПрдХ рдЙрдкрдирд╛рдорд┐рдд рдкреНрд░рдХрд╛рд░ рд╡рд┐рд░рд╛рд╕рдд рд╣реИ рдФрд░ рдЗрд╕реЗ рдирдП рдкреНрд░рдХрд╛рд░ рд╕реЗ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП? рдпрджрд┐ рд╣рдо рдкреБрд░рд╛рдиреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдмрд╣рд┐рд╖реНрдХреГрдд рдХреЗ рд░реВрдк рдореЗрдВ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЧреЙрд▓рд┐рдВрдЯ, рдЧреЛрдбреЛрдХ рдФрд░ рдЗрд╕реА рддрд░рд╣ рдХреЗ рдЙрдкрдХрд░рдгреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдкреНрд░рдХрд╛рд░ рдПрд▓рд┐рдпрд╛рд╕рд┐рдВрдЧ рдХреЗ рджреБрд░реБрдкрдпреЛрдЧ рдХреЛ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд░реВрдк рд╕реЗ рд╕реАрдорд┐рдд рдХрд░ рджреЗрдЧрд╛ред рдФрд░ рдЕрд▓рд┐рдпрд╛рд╕рд┐рдВрдЧ рдлреАрдЪрд░ рдХреЗ рджреБрд░реБрдкрдпреЛрдЧ рдХреА рдЕрдВрддрд┐рдо рдЪрд┐рдВрддрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред" - https://github.com/golang/go/issues/18130#issuecomment -265062154 @rakyll рджреНрд╡рд╛рд░рд╛

рдЬрдм рддрдХ рд╣рдо рдпрд╣ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рдХрд┐ рдЙрдирдХрд╛ рдЧрд▓рдд рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рддрдм рддрдХ рдЙрдкрдпреЛрдЧ рдХреЛ рд╣рддреЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░рдирд╛ рдЬрд▓реНрджрдмрд╛рдЬреА рд╣реЛрдЧреАред рдЕрдЪреНрдЫреЗ, рдЕрд╕реНрдерд╛рдпреА рдЙрдкрдпреЛрдЧ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ (рдКрдкрд░ рджреЗрдЦреЗрдВ)ред

рдХреЛрдб рдХреА рдорд░рдореНрдордд рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рднреА, рд╕рдВрдХреНрд░рдордг рдХреЗ рджреМрд░рд╛рди рдкреБрд░рд╛рдиреЗ рдпрд╛ рдирдП рдкреНрд░рдХрд╛рд░ рдХреЗ рдЙрдкрдирд╛рдо рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдЖрдпрд╛рдд рдЧреНрд░рд╛рдл рджреНрд╡рд╛рд░рд╛ рд▓рдЧрд╛рдП рдЧрдП рдмрд╛рдзрд╛рдУрдВ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдЙрдкрдирд╛рдо рд╣реЛрдиреЗ рдХрд╛ рдорддрд▓рдм рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдирд╛рдо рдмрд╣рд┐рд╖реНрдХреГрдд рд╣реИред

рдХреБрдЫ рдШреЛрд╖рдгрд╛рдУрдВ рдХреЛ рдкрджрд╛рд╡рдирдд рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рддрдВрддреНрд░ рд╣реИ (рджреЗрдЦреЗрдВ https://github.com/golang/go/issues/18130#issuecomment-265294564 by @jimmyfrasche)ред

рдкреНрд░рддрд┐рдмрдВрдз? рдЙрдкрдирд╛рдореЛрдВ рдХреЛ рдирд╛рдорд┐рдд рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рд▓рдХреНрд╖рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

"рдЙрдкрдирд╛рдо рдЕрдЬреНрдЮрд╛рдд рдкреНрд░рдХрд╛рд░ рдкрд░ рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдПрдХ рдЕрдЬреНрдЮрд╛рдд рдкреНрд░рдХрд╛рд░ рд╕реЗ рджреВрд╕рд░реЗ рдореЗрдВ рдЬрд╛рдиреЗ рдореЗрдВ рдЙрдирдХреА рдХреЛрдИ "рдХреЛрдб рдорд░рдореНрдордд" рдХрд╣рд╛рдиреА рдирд╣реАрдВ рд╣реИред рдЕрдЬреНрдЮрд╛рдд рдкреНрд░рдХрд╛рд░реЛрдВ рдкрд░ рдЙрдкрдирд╛рдореЛрдВ рдХреЛ рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдореИрдВ рдЕрдм рдХреЗрд╡рд▓ рдирд╛рдорд┐рдд рдФрд░ рдЕрдЬреНрдЮрд╛рдд рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд╛рдирд╛ рдирд╣реАрдВ рд╕рд┐рдЦрд╛ рд╕рдХрддрд╛ред" - https://github.com/golang/go/issues/18130#issuecomment -+реирен,ремрео,ремрек,репрежрей @davecheney рджреНрд╡рд╛рд░рд╛

рдЬрдм рддрдХ рд╣рдо рдпрд╣ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рдХрд┐ рдЙрдирдХрд╛ рдЧрд▓рдд рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рддрдм рддрдХ рдЙрдкрдпреЛрдЧ рдХреЛ рд╣рддреЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░рдирд╛ рдЬрд▓реНрджрдмрд╛рдЬреА рд╣реЛрдЧреАред рдЕрдирд╛рдо рд▓рдХреНрд╖реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдЕрдЪреНрдЫреЗ рдЙрдкрдпреЛрдЧ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ (рдКрдкрд░ рджреЗрдЦреЗрдВ)ред

рдЬреИрд╕рд╛ рдХрд┐ рдбрд┐рдЬрд╝рд╛рдЗрди рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╣рдо рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╢рдмреНрджрд╛рд╡рд▓реА рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддреЗ рд╣реИрдВред

FrozenDueToAge Proposal Proposal-Accepted

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

@cznic , @iand , рдЕрдиреНрдп: рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ _рдкреНрд░рддрд┐рдмрдВрдз рдЬрдЯрд┐рд▓рддрд╛_ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред рд╡реЗ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреЛ рдЬрдЯрд┐рд▓ рдмрдирд╛рддреЗ рд╣реИрдВ, рдФрд░ рд╡реЗ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рдХрд┐рд╕реА рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рд╕рдВрдЬреНрдЮрд╛рдирд╛рддреНрдордХ рднрд╛рд░ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ: рдпрджрд┐ рдЖрдк рдкреНрд░рддрд┐рдмрдВрдз рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреВрд▓ рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдпрд╣ рд╕рдордЭрдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдЖрдкрдХреЗ рд╡рд┐рдЪрд╛рд░ рд╕реЗ рдХрд╛рдо рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдХреЗрд╡рд▓ рдХрд╛рд▓реНрдкрдирд┐рдХ рджреБрд░реБрдкрдпреЛрдЧ рдХреЗ рдХрд╛рд░рдг рдХрд┐рд╕реА рдбрд┐рдЬрд╝рд╛рдЗрди рдХреЗ рдкрд░реАрдХреНрд╖рдг рдкрд░ рдкреНрд░рддрд┐рдмрдВрдз рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЕрдХреНрд╕рд░ рдПрдХ рдЧрд▓рддреА рд╣реЛрддреА рд╣реИред рдпрд╣ рдЙрдкрдирд╛рдо рдкреНрд░рд╕реНрддрд╛рд╡ рдЪрд░реНрдЪрд╛рдУрдВ рдореЗрдВ рд╣реБрдЖ, рдФрд░ рдЗрд╕рдиреЗ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рдЙрдкрдирд╛рдореЛрдВ рдХреЛ рд▓реЗрдЦ рд╕реЗ io.ByteBuffer => bytes.Buffer рд░реВрдкрд╛рдВрддрд░рдг рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде рдмрдирд╛ рджрд┐рдпрд╛ред рд▓реЗрдЦ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рдХреНрд╖реНрдп рдХрд╛ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо рдЙрдиреНрд╣реЗрдВ рд╕рдВрднрд╛рд▓рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддрд╛рдХрд┐ рд╣рдо рдЕрдирдЬрд╛рдиреЗ рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рджреВрд░ рди рдХрд░реЗрдВред

рдПрдХ рдЕрдиреНрдп рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, рдЧреИрд░-рд╕реВрдЪрдХ рд░рд┐рд╕реАрд╡рд░ рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдпрд╛ рдЧреИрд░-рд╕рдВрд░рдЪрдирд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдкрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреБрд░реБрдкрдпреЛрдЧ рддрд░реНрдХ рдмрдирд╛рдирд╛ рдЖрд╕рд╛рди рд╣реЛрдЧрд╛ред рдпрджрд┐ рд╣рдордиреЗ рдЙрдирдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдЖрдк рд╕реНрд╡рдпрдВ рдХреЛ рдкреНрд░рд┐рдВрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдЯреНрд░рд┐рдВрдЧ() рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдирдо рдирд╣реАрдВ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ http.Headers рджреЛрдиреЛрдВ рдПрдХ рд╕рд╛рджрд╛ рдирдХреНрд╢рд╛ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╕рд╣рд╛рдпрдХ рд╡рд┐рдзрд┐рдпрд╛рдВ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред рджреБрд░реБрдкрдпреЛрдЧ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░рдирд╛ рдЕрдХреНрд╕рд░ рдЖрд╕рд╛рди рд╣реЛрддрд╛ рд╣реИ; рд╕рдореНрдореЛрд╣рдХ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдЙрдкрдпреЛрдЧреЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрдиреЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╕рдордп рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдкреНрд░рдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЬрдЧрд╣ рдмрдирд╛рдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред

рдЕрднреА рддрдХ рдПрдХ рдФрд░ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, рд╕реВрдЪрдХ рдмрдирд╛рдо рдореВрд▓реНрдп рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдореВрд▓ рдбрд┐рдЬрд╛рдЗрди рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЯреА рдФрд░ * рдЯреА рдкрд░ рд╡рд┐рдзрд┐ рд╕реЗрдЯ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ: рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ * рдЯреА рдерд╛, рддреЛ рдЖрдк рдореВрд▓реНрдп рд╡рд┐рдзрд┐рдпреЛрдВ (рд░рд┐рд╕реАрд╡рд░ рдЯреА) рдХреЛ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдерд╛ рдПрдХ рдЯреА, рдЖрдк рд╕реВрдЪрдХ рд╡рд┐рдзрд┐рдпреЛрдВ (рд░рд┐рд╕реАрд╡рд░ * рдЯреА) рдХреЛ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рд╕рд░рд▓ рдерд╛, рд╕рдордЭрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдкреНрд░рддрд┐рдмрдВрдз рдирд╣реАрдВ рдерд╛ред рд▓реЗрдХрд┐рди рдлрд┐рд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЕрдиреБрднрд╡ рдиреЗ рд╣рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдХрд┐ рдкреЙрдЗрдВрдЯрд░ рд╡рд┐рдзрд┐ рдХреЛ рдореВрд▓реНрдпреЛрдВ рдкрд░ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рд╕реЗ рднреНрд░рдорд┐рдд, рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рдмрдЧ рдХрд╛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд░реНрдЧ рд╣реЛ рдЧрдпрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ:

var buf bytes.Buffer
io.Copy(buf, reader)

рдФрд░ io.Copy рд╕рдлрд▓ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди buf рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рд╣рдореЗрдВ рдпрд╣ рд╕рдордЭрд╛рдиреЗ рдХреЗ рдмреАрдЪ рдЪрдпрди рдХрд░рдирд╛ рдерд╛ рдХрд┐ рд╡рд╣ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рдХреНрдпреЛрдВ рдЪрд▓рд╛ рдпрд╛ рдпрд╣ рд╕рдордЭрд╛рддреЗ рд╣реБрдП рдХрд┐ рд╡рд╣ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╕рдВрдХрд▓рд┐рдд рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реБрдЖред рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рд╕рд╡рд╛рд▓ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдереЗ, рд▓реЗрдХрд┐рди рд╣рдо рдЧрд▓рдд рдирд┐рд╖реНрдкрд╛рджрди рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рдЖ рдЧрдПред рдлрд┐рд░ рднреА, рд╣рдореЗрдВ рдЕрднреА рднреА рдПрдХ рдПрдлрдПрдХреНрдпреВ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рд▓рд┐рдЦрдиреА рдереА рдХрд┐ рдбрд┐рдЬрд╝рд╛рдЗрди рдореЗрдВ рдЫреЗрдж рдХреНрдпреЛрдВ рдХрд╛рдЯрд╛ рдЧрдпрд╛ рд╣реИред

рджреЛрдмрд╛рд░рд╛, рдХреГрдкрдпрд╛ рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдкреНрд░рддрд┐рдмрдВрдз рдЬрдЯрд┐рд▓рддрд╛ рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред рд╕рднреА рдЬрдЯрд┐рд▓рддрд╛рдУрдВ рдХреА рддрд░рд╣, рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рдХреЛ рднреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рдФрдЪрд┐рддреНрдп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдбрд┐рдЬрд╛рдЗрди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдЗрд╕ рд╕реНрддрд░ рдкрд░ рдЙрди рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реИ рдЬреЛ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдбрд┐рдЬрд╛рдЗрди рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рд╢рд╛рдпрдж рдЙрди рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рдХреЛ рдЕрдкреНрд░рддрд┐рдмрдВрдзрд┐рдд, рд╕рд░рд▓ рдбрд┐рдЬрд╛рдЗрди рдХреЗ рд╕рд╛рде рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЕрдиреБрднрд╡ рдХреЗ рдмрд╛рдж рд╣реА рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рд╣рдореЗрдВ рдпрд╣ рд╕рдордЭрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рддрд┐рдмрдВрдз рдкрд░реНрдпрд╛рдкреНрдд рд▓рд╛рдн рд▓рд╛рдПрдЧрд╛ рдпрд╛ рдирд╣реАрдВ рдЗрд╕рдХреА рд▓рд╛рдЧрдд рдХрд╛ рднреБрдЧрддрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред

рд╕рднреА 225 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдореБрдЭреЗ рдпрд╣ рдкрд╕рдВрдж рд╣реИ рдХрд┐ рдпрд╣ рджрд┐рдЦрдиреЗ рдореЗрдВ рдХрд┐рддрдирд╛ рд╕рдорд╛рди рд╣реИред

const OldAPI => NewPackage.API
func  OldAPI => NewPackage.API
var   OldAPI => NewPackage.API
type  OldAPI => NewPackage.API

рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ рд╣рдо рд▓рдЧрднрдЧ рдзреАрд░реЗ-рдзреАрд░реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рддрддреНрд╡реЛрдВ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╢рд╛рдпрдж рд╕рдмрд╕реЗ рд╕рд░рд▓
рд╕рдорд╛рдзрд╛рди _is_ рдХреЗрд╡рд▓ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП = рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдПред

const OldAPI = NewPackage.API
func  OldAPI() { NewPackage.API() }
var   OldAPI = NewPackage.API
type  OldAPI = NewPackage.API

рддреЛ рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рдЙрд╕ рдЙрддреНрдХреГрд╖реНрдЯ рд▓реЗрдЦрди рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдзрдиреНрдпрд╡рд╛рдж рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдСрдкрд░реЗрдЯрд░ рдХреЗ рд╕рд╛рде рдЯрд╛рдЗрдк рдЙрдкрдирд╛рдо рдкреЗрд╢ рдХрд░рдирд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рдирдП рдХреАрд╡рд░реНрдб/рдСрдкрд░реЗрдЯрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдПрдХ рдкрд░рд┐рдЪрд┐рдд рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдмрдбрд╝реЗ рдХреЛрдб рдмреЗрд╕ рдХреЗ рд▓рд┐рдП рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЬреИрд╕рд╛ рдХрд┐ рд░рд╕ рдХрд╛ рд▓реЗрдЦ рдмрддрд╛рддрд╛ рд╣реИ, рдХрд┐рд╕реА рднреА рдЙрдкрдирд╛рдо рдЬреИрд╕реЗ рд╕рдорд╛рдзрд╛рди рдХреЛ https://github.com/golang/go/issues/17746 рдФрд░ https://github.com/golang/go/issues/17784 рдХреЛ рдЗрдирд╛рдпрдд рд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ

рдЙрд╕ рд▓реЗрдЦ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

рдореБрдЭреЗ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдСрдкрд░реЗрдЯрд░ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЯрд╛рдЗрдк-рдУрдирд▓реА рдЙрдкрдирд╛рдо рдорд┐рд▓рддреЗ рд╣реИрдВ:

type OldAPI = NewPackage.API

рдореЗрд░реЗ рдХрд╛рд░рдг:

  • рдпрд╣ рдЖрд╕рд╛рди рд╣реИред
    рд╡реИрдХрд▓реНрдкрд┐рдХ рд╕рдорд╛рдзрд╛рди => рдЗрд╕рдХреЗ рд╕рдВрдХрд╛рд░реНрдп рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕реВрдХреНрд╖реНрдо рд░реВрдк рд╕реЗ рднрд┐рдиреНрди рдЕрд░реНрде рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг рдЧреЛ рдХреЗ рд▓рд┐рдП рдЬрдЧрд╣ рд╕реЗ рдмрд╛рд╣рд░ рдорд╣рд╕реВрд╕ рд╣реЛрддрд╛ рд╣реИред
  • рдпрд╣ рдХреЗрдВрджреНрд░рд┐рдд рдФрд░ рд░реВрдврд╝рд┐рд╡рд╛рджреА рд╣реИред
    рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЧрдИ рд╣реИ рдФрд░ рдЖрдкрдХреЛ рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рд╕рдорд╛рдзрд╛рди рдХреА рдЬрдЯрд┐рд▓рддрд╛рдУрдВ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░рдиреЗ рдХреА рдЪрд┐рдВрддрд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
  • рдпрд╣ рд╕реМрдВрджрд░реНрдпрд╡рд╛рджреА рд╣реИред
    рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдФрд░ рдЕрдзрд┐рдХ рд╕реБрдЦрдж рд▓рдЧ рд░рд╣рд╛ рд╣реИред

рдЙрдкрд░реЛрдХреНрдд рд╕рднреА: рдкрд░рд┐рдгрд╛рдо рд╕рд░рд▓, рдХреЗрдВрджреНрд░рд┐рдд, рд░реВрдврд╝рд┐рд╡рд╛рджреА рдФрд░ рд╕реМрдВрджрд░реНрдпрдкреВрд░реНрдг рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг рдореЗрд░реЗ рд▓рд┐рдП рдЗрд╕реЗ рдЧреЛ рдХрд╛ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ рд╣реЛрдиреЗ рдХреА рддрд╕реНрд╡реАрд░ рдмрдирд╛рдирд╛ рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

рдпрджрд┐ рд╕рдорд╛рдзрд╛рди рдХреЗрд╡рд▓ рдкреНрд░рдХрд╛рд░реЛрдВ рддрдХ рд╣реА рд╕реАрдорд┐рдд рд╣реЛрдЧрд╛ рддреЛ рд╡рд╛рдХреНрдп рд░рдЪрдирд╛

type NewFoo = old.Foo

рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рдЪреБрдХрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ @rsc рдХреЗ рд▓реЗрдЦ рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рд╣реИ, рдореБрдЭреЗ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд▓рдЧ рд░рд╣рд╛ рд╣реИред

рдЕрдЧрд░ рд╣рдо рд╕реНрдерд┐рд░рд╛рдВрдХ, рдЪрд░ рдФрд░ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдРрд╕рд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдореЗрд░рд╛ рдкрд╕рдВрджреАрджрд╛ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рд╣реЛрдЧрд╛ (рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛)

package newfmt

import (
    "fmt"
)

// No renaming.
export fmt.Printf // Note: Same as `export Printf fmt.Printf`.

export (
        fmt.Sprintf
        fmt.Formatter
)

// Renaming.
export Foo fmt.Errorf // Foo must be exported, ie. `export foo fmt.Errorf` would be invalid.

export (
    Bar fmt.Fprintf
    Qux fmt.State
)

рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рдереА, рдиреБрдХрд╕рд╛рди рдпрд╣ рд╣реИ рдХрд┐ рдПрдХ рдирдпрд╛, рд╢реАрд░реНрд╖-рд╕реНрддрд░реАрдп рдПрдХрдорд╛рддреНрд░ рдХреАрд╡рд░реНрдб рдкреЗрд╢ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░реНрдп рдФрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкреАрдЫреЗ рдХреА рдУрд░ рд╕рдВрдЧрдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рд╡рдЬреВрдж рд╕реНрд╡реАрдХрд╛рд░реНрдп рд░реВрдк рд╕реЗ рдЧрд▓рдд рд╣реИред рдореБрдЭреЗ рдпрд╣ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдкрд╕рдВрдж рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЖрдпрд╛рдд рдХреЗ рдкреИрдЯрд░реНрди рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред рдореБрдЭреЗ рдпрд╣ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рдкреНрд░рддреАрдд рд╣реЛрдЧрд╛ рдХрд┐ рдирд┐рд░реНрдпрд╛рдд рдХреА рдЕрдиреБрдорддрд┐ рдХреЗрд╡рд▓ рдЙрд╕реА рдЦрдВрдб рдореЗрдВ рджреА рдЬрд╛рдПрдЧреА рдЬрд╣рд╛рдВ рдЖрдпрд╛рдд рдХреА рдЕрдиреБрдорддрд┐ рд╣реИ, рдЕрд░реНрдерд╛рддред рдкреИрдХреЗрдЬ рдХреНрд▓реЙрдЬ рдФрд░ рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░, рдкреНрд░рдХрд╛рд░, рд╕реНрдерд┐рд░рд╛рдВрдХ рдпрд╛ рдлрд╝рдВрдХреНрд╢рди TLD рдХреЗ рдмреАрдЪред

рдирд╛рдо рдмрджрд▓рдиреЗ рд╡рд╛рд▓реЗ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛рдУрдВ рдХреЛ рдкреИрдХреЗрдЬ рдХреЗ рджрд╛рдпрд░реЗ рдореЗрдВ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдирдП рдирд╛рдо рдкреИрдХреЗрдЬ рдореЗрдВ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗ рд░рд╣реЗ рд╣реИрдВ (рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдореЗрдВ newfmt) рдкреБрдирд░реНрдШреЛрд╖рдгрд╛ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ, рдЬреЛ рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣ рдЕрд╕реНрд╡реАрдХреГрдд рд╣реИред рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдг рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдЯреАрдПрд▓рдбреА

var v = Printf // undefined: Printf.
var Printf int // Printf redeclared, previous declaration at newfmt.go:8.

рдЖрдпрд╛рдд рдкреИрдХреЗрдЬ рдореЗрдВ рдирд╛рдо рдмрджрд▓рдиреЗ рд╡рд╛рд▓реЗ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВ, рдЬреИрд╕рд╛ рдХрд┐ (newftm's) рдкреИрдХреЗрдЬ рдмреНрд▓реЙрдХ рдХреЗ рдХрд┐рд╕реА рдЕрдиреНрдп рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдП рдЧрдП рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд╣реЛрддрд╛ рд╣реИред

package foo

import "newfmt"

type bar interface {
    baz(qux newfmt.Qux) // qux type is identical to fmt.State.
}

рдЕрдВрдд рдореЗрдВ, рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг newfmt рдореЗрдВ рдмрд╛рдзреНрдпрдХрд╛рд░реА рдХрд┐рд╕реА рднреА рдирдП рд╕реНрдерд╛рдиреАрдп рдирд╛рдо рдХрд╛ рдкрд░рд┐рдЪрдп рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ, рдЬреЛ рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ # 17746 рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рдХрдо рд╕реЗ рдХрдо рдХреБрдЫ рд╕рдорд╕реНрдпрд╛рдУрдВ рд╕реЗ рдмрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ # 17784 рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╣рд▓ рдХрд░рддрд╛ рд╣реИред

рдореЗрд░реА рдкрд╣рд▓реА рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдХреЗрд╡рд▓ type NewFoo = old.Foo ред

рдпрджрд┐ рдПрдХ рдЕрдзрд┐рдХ рд╕рд╛рдорд╛рдиреНрдп рд╕рдорд╛рдзрд╛рди рд╡рд╛рдВрдЫрд┐рдд рд╣реИ, рддреЛ рдореИрдВ @cznic рд╕реЗ рд╕рд╣рдордд export рдХреАрд╡рд░реНрдб рд╕рд╣реА рдЕрд░реНрде рдмрддрд╛рддрд╛ рд╣реИред рди рддреЛ рд╡рд╛рдХреНрдп рд░рдЪрдирд╛, рди рд╣реА рд╢рдмреНрджрд╛рд░реНрде рджрд░реНрдкрдг import ред alias рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛?

рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ @cznic рдХреНрдпреЛрдВ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛ рдХрд┐ рдирдП рдирд╛рдо рдЙрдиреНрд╣реЗрдВ рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдкреИрдХреЗрдЬ рдореЗрдВ

[1] рдореИрдВ рд▓рдЧрднрдЧ 20 рд╡рд░реНрд╖реЛрдВ рд╕реЗ рдпреВрдирд┐рдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдФрд░ рдореИрдВ рдЕрднреА рднреА рдкрд╣рд▓реА рдХреЛрд╢рд┐рд╢ рдореЗрдВ рдПрдХ рд╕рд┐рдорд▓рд┐рдВрдХ рдирд╣реАрдВ рдмрдирд╛ рд╕рдХрддрд╛ред рдФрд░ рдореИрдиреБрдЕрд▓ рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВ рдЖрдорддреМрд░ рдкрд░ рджреВрд╕рд░реЗ рдкреНрд░рдпрд╛рд╕ рдореЗрдВ рднреА рдЕрд╕рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реВрдВред

рдореИрдВ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдмрд╛рдзрд╛ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ: рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдирд╛рдо рдХреЗрд╡рд▓ рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдореЗрд░рд╛ рддрд░реНрдХ рдпрд╣ рд╣реИ рдХрд┐ рдореИрдВ рдЙрд╕ рдХреЛрдб рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдЬрд┐рд╕рдиреЗ рдХрд╕реНрдЯрдо рдирд╛рдордХрд░рдг рд╕рдореНрдореЗрд▓рди рдореЗрдВ рдлрд┐рдЯ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХрд╛ рдирд╛рдо рдмрджрд▓ рджрд┐рдпрд╛ рд╣реИред рдореИрдВ рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рд╡рд╛рдкрд╕ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдХрдИ рдкреИрдХреЗрдЬреЛрдВ рдореЗрдВ рдЙрдкрдирд╛рдореЛрдВ рдХреА рд▓рдВрдмреА рд╕реНрдкреЗрдЧреЗрдЯреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рд╕реЗ рдирд┐рдкрдЯрдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред

@iand : рд╡рд╣ рдмрд╛рдзрд╛ рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдХреБрдЫ рднреА рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдЕрд╡рд░реБрджреНрдз рдХрд░ рджреЗрдЧреАред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ Context рдХрд╛ рд╡рд░реНрддрдорд╛рди рдкреНрд░рд╡рд╛рд╕ред Context рдХрд╛ рдкреБрд░рд╛рдирд╛ рдШрд░ рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ Context рд▓рд┐рдП рдЙрдкрдирд╛рдо рдмрдирдирд╛ рдЪрд╛рд╣рд┐рдПред

@quentinmit рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рд╕рдЪ рд╣реИред рдпрд╣ рдЗрд╕ CL https://go-review.googlesource.com/#/c/32145/ рдореЗрдВ golang.org/x/image/draw рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЛ рднреА рд╕реАрдорд┐рдд рдХрд░рддрд╛ рд╣реИ

рдореЗрд░реА рдЕрд╕рд▓реА рдЪрд┐рдВрддрд╛ interface{} рдФрд░ error рдЬреИрд╕реА рдЪреАрдЬреЛрдВ рдХреЛ рдЕрд▓рд┐рдпрд╛рд╕рд┐рдВрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд▓реЛрдЧреЛрдВ рдХреЗ рд╕рд╛рде рд╣реИ

рдпрджрд┐ рдПрдХ рдирдпрд╛ рдСрдкрд░реЗрдЯрд░ рдкреЗрд╢ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдореИрдВ ~ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рджреЗрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред рдЕрдВрдЧреНрд░реЗрдЬреА рднрд╛рд╖рд╛ рдореЗрдВ, рдЗрд╕реЗ рдЖрдо рддреМрд░ рдкрд░ "рдХреЗ рд╕рдорд╛рди", "рд▓рдЧрднрдЧ", "рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ", рдпрд╛ "рдЖрд╕рдкрд╛рд╕" рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдордЭрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ @4ad рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ, => рднреНрд░рдорд┐рдд рджрд┐рд╢рд╛рддреНрдордХрддрд╛ рд╡рд╛рд▓рд╛ рдПрдХ рдЕрд╕рдордорд┐рдд рдСрдкрд░реЗрдЯрд░ рд╣реИред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

const OldAPI ~ NewPackage.API
func  OldAPI ~ NewPackage.API
var   OldAPI ~ NewPackage.API
type  OldAPI ~ NewPackage.API

@iand рдЕрдЧрд░ рд╣рдо рджрд╛рдПрдВ рд╣рд╛рде рдХреЛ рдкреИрдХреЗрдЬ-рдпреЛрдЧреНрдп рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рддрдХ рд╕реАрдорд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдЖрдкрдХреА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЪрд┐рдВрддрд╛ рдХреЛ рдЦрддреНрдо рдХрд░ рджреЗрдЧрд╛ред

рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рднреА рд╣реЛрдЧрд╛ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдореМрдЬреВрджрд╛ рдкреИрдХреЗрдЬ рдореЗрдВ рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдЙрдкрдирд╛рдо рдпрд╛ map[string]map[int]interface{} рдЬреИрд╕реЗ рд▓рдВрдмреЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рднрд╛рд╡ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреЗред рд▓реЗрдХрд┐рди рдЙрди рдЙрдкрдпреЛрдЧреЛрдВ рдХрд╛ рдХреНрд░рдорд┐рдХ рдХреЛрдб рдорд░рдореНрдордд рдХреЗ рдореБрдЦреНрдп рд▓рдХреНрд╖реНрдп рд╕реЗ рдХреЛрдИ рд▓реЗрдирд╛-рджреЗрдирд╛ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рдХреЛрдИ рдмрдбрд╝рд╛ рдиреБрдХрд╕рд╛рди рди рдХрд░реЗрдВред

@cznic , @iand , рдЕрдиреНрдп: рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ _рдкреНрд░рддрд┐рдмрдВрдз рдЬрдЯрд┐рд▓рддрд╛_ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред рд╡реЗ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреЛ рдЬрдЯрд┐рд▓ рдмрдирд╛рддреЗ рд╣реИрдВ, рдФрд░ рд╡реЗ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рдХрд┐рд╕реА рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рд╕рдВрдЬреНрдЮрд╛рдирд╛рддреНрдордХ рднрд╛рд░ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ: рдпрджрд┐ рдЖрдк рдкреНрд░рддрд┐рдмрдВрдз рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреВрд▓ рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдпрд╣ рд╕рдордЭрдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдЖрдкрдХреЗ рд╡рд┐рдЪрд╛рд░ рд╕реЗ рдХрд╛рдо рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдХреЗрд╡рд▓ рдХрд╛рд▓реНрдкрдирд┐рдХ рджреБрд░реБрдкрдпреЛрдЧ рдХреЗ рдХрд╛рд░рдг рдХрд┐рд╕реА рдбрд┐рдЬрд╝рд╛рдЗрди рдХреЗ рдкрд░реАрдХреНрд╖рдг рдкрд░ рдкреНрд░рддрд┐рдмрдВрдз рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЕрдХреНрд╕рд░ рдПрдХ рдЧрд▓рддреА рд╣реЛрддреА рд╣реИред рдпрд╣ рдЙрдкрдирд╛рдо рдкреНрд░рд╕реНрддрд╛рд╡ рдЪрд░реНрдЪрд╛рдУрдВ рдореЗрдВ рд╣реБрдЖ, рдФрд░ рдЗрд╕рдиреЗ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рдЙрдкрдирд╛рдореЛрдВ рдХреЛ рд▓реЗрдЦ рд╕реЗ io.ByteBuffer => bytes.Buffer рд░реВрдкрд╛рдВрддрд░рдг рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде рдмрдирд╛ рджрд┐рдпрд╛ред рд▓реЗрдЦ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рдХреНрд╖реНрдп рдХрд╛ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо рдЙрдиреНрд╣реЗрдВ рд╕рдВрднрд╛рд▓рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддрд╛рдХрд┐ рд╣рдо рдЕрдирдЬрд╛рдиреЗ рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рджреВрд░ рди рдХрд░реЗрдВред

рдПрдХ рдЕрдиреНрдп рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, рдЧреИрд░-рд╕реВрдЪрдХ рд░рд┐рд╕реАрд╡рд░ рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдпрд╛ рдЧреИрд░-рд╕рдВрд░рдЪрдирд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдкрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреБрд░реБрдкрдпреЛрдЧ рддрд░реНрдХ рдмрдирд╛рдирд╛ рдЖрд╕рд╛рди рд╣реЛрдЧрд╛ред рдпрджрд┐ рд╣рдордиреЗ рдЙрдирдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдЖрдк рд╕реНрд╡рдпрдВ рдХреЛ рдкреНрд░рд┐рдВрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдЯреНрд░рд┐рдВрдЧ() рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдирдо рдирд╣реАрдВ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ http.Headers рджреЛрдиреЛрдВ рдПрдХ рд╕рд╛рджрд╛ рдирдХреНрд╢рд╛ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╕рд╣рд╛рдпрдХ рд╡рд┐рдзрд┐рдпрд╛рдВ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред рджреБрд░реБрдкрдпреЛрдЧ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░рдирд╛ рдЕрдХреНрд╕рд░ рдЖрд╕рд╛рди рд╣реЛрддрд╛ рд╣реИ; рд╕рдореНрдореЛрд╣рдХ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдЙрдкрдпреЛрдЧреЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрдиреЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╕рдордп рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдкреНрд░рдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЬрдЧрд╣ рдмрдирд╛рдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред

рдЕрднреА рддрдХ рдПрдХ рдФрд░ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, рд╕реВрдЪрдХ рдмрдирд╛рдо рдореВрд▓реНрдп рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдореВрд▓ рдбрд┐рдЬрд╛рдЗрди рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЯреА рдФрд░ * рдЯреА рдкрд░ рд╡рд┐рдзрд┐ рд╕реЗрдЯ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ: рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ * рдЯреА рдерд╛, рддреЛ рдЖрдк рдореВрд▓реНрдп рд╡рд┐рдзрд┐рдпреЛрдВ (рд░рд┐рд╕реАрд╡рд░ рдЯреА) рдХреЛ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдерд╛ рдПрдХ рдЯреА, рдЖрдк рд╕реВрдЪрдХ рд╡рд┐рдзрд┐рдпреЛрдВ (рд░рд┐рд╕реАрд╡рд░ * рдЯреА) рдХреЛ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рд╕рд░рд▓ рдерд╛, рд╕рдордЭрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдкреНрд░рддрд┐рдмрдВрдз рдирд╣реАрдВ рдерд╛ред рд▓реЗрдХрд┐рди рдлрд┐рд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЕрдиреБрднрд╡ рдиреЗ рд╣рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдХрд┐ рдкреЙрдЗрдВрдЯрд░ рд╡рд┐рдзрд┐ рдХреЛ рдореВрд▓реНрдпреЛрдВ рдкрд░ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рд╕реЗ рднреНрд░рдорд┐рдд, рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рдмрдЧ рдХрд╛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд░реНрдЧ рд╣реЛ рдЧрдпрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ:

var buf bytes.Buffer
io.Copy(buf, reader)

рдФрд░ io.Copy рд╕рдлрд▓ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди buf рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рд╣рдореЗрдВ рдпрд╣ рд╕рдордЭрд╛рдиреЗ рдХреЗ рдмреАрдЪ рдЪрдпрди рдХрд░рдирд╛ рдерд╛ рдХрд┐ рд╡рд╣ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рдХреНрдпреЛрдВ рдЪрд▓рд╛ рдпрд╛ рдпрд╣ рд╕рдордЭрд╛рддреЗ рд╣реБрдП рдХрд┐ рд╡рд╣ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╕рдВрдХрд▓рд┐рдд рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реБрдЖред рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рд╕рд╡рд╛рд▓ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдереЗ, рд▓реЗрдХрд┐рди рд╣рдо рдЧрд▓рдд рдирд┐рд╖реНрдкрд╛рджрди рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рдЖ рдЧрдПред рдлрд┐рд░ рднреА, рд╣рдореЗрдВ рдЕрднреА рднреА рдПрдХ рдПрдлрдПрдХреНрдпреВ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рд▓рд┐рдЦрдиреА рдереА рдХрд┐ рдбрд┐рдЬрд╝рд╛рдЗрди рдореЗрдВ рдЫреЗрдж рдХреНрдпреЛрдВ рдХрд╛рдЯрд╛ рдЧрдпрд╛ рд╣реИред

рджреЛрдмрд╛рд░рд╛, рдХреГрдкрдпрд╛ рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдкреНрд░рддрд┐рдмрдВрдз рдЬрдЯрд┐рд▓рддрд╛ рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред рд╕рднреА рдЬрдЯрд┐рд▓рддрд╛рдУрдВ рдХреА рддрд░рд╣, рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рдХреЛ рднреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рдФрдЪрд┐рддреНрдп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдбрд┐рдЬрд╛рдЗрди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдЗрд╕ рд╕реНрддрд░ рдкрд░ рдЙрди рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реИ рдЬреЛ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдбрд┐рдЬрд╛рдЗрди рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рд╢рд╛рдпрдж рдЙрди рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рдХреЛ рдЕрдкреНрд░рддрд┐рдмрдВрдзрд┐рдд, рд╕рд░рд▓ рдбрд┐рдЬрд╛рдЗрди рдХреЗ рд╕рд╛рде рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЕрдиреБрднрд╡ рдХреЗ рдмрд╛рдж рд╣реА рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рд╣рдореЗрдВ рдпрд╣ рд╕рдордЭрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рддрд┐рдмрдВрдз рдкрд░реНрдпрд╛рдкреНрдд рд▓рд╛рдн рд▓рд╛рдПрдЧрд╛ рдпрд╛ рдирд╣реАрдВ рдЗрд╕рдХреА рд▓рд╛рдЧрдд рдХрд╛ рднреБрдЧрддрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореЗрд░реА рдЖрд╢рд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╣рдо рдПрдХ рдЕрд╕реНрдерд╛рдпреА рдирд┐рд░реНрдгрдп рдкрд░ рдкрд╣реБрдВрдЪ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдирд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рдЧреЛ 1.9 рдЪрдХреНрд░ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдкреНрд░рдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рддреИрдпрд╛рд░ рд╣реИ (рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ рдЬрд┐рд╕ рджрд┐рди рдЪрдХреНрд░ рдЦреБрд▓рддрд╛ рд╣реИ)ред рдкреНрд░рдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╕рдордп рджреЗрдиреЗ рд╕реЗ рдХрдИ рд▓рд╛рдн рд╣реЛрдВрдЧреЗ, рдЙрдирдореЗрдВ рд╕реЗ рдпрд╣ рдЬрд╛рдирдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рд╣реЛрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рдХреЛрдИ рд╡рд┐рд╢реЗрд╖ рдкреНрд░рддрд┐рдмрдВрдз рдЕрдирд┐рд╡рд╛рд░реНрдп рд╣реИред рдЙрдкрдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рдЧрд▓рддреА рдЧреЛ 1.8 рдЪрдХреНрд░ рдХреЗ рдЕрдВрдд рддрдХ рдкреВрд░реНрдг рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдирд╣реАрдВ рдХрд░ рд░рд╣реА рдереАред

рдореВрд▓ рдЙрдкрдирд╛рдо рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЗрдЪреНрдЫрд┐рдд рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ (рд░реАрдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдирд╛) рдЙрдкрдирд╛рдо рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рдЕрд╕реНрдерд╛рдпреА рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдкреНрд░реЛрдЯреЛрдмрдлрд╝рд░ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдХреНрд░рдорд┐рдХ рдорд░рдореНрдордд рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж io.BytesBuffer рд╕реНрдЯрдм рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдпрджрд┐ рдЙрдкрдирд╛рдо рддрдВрддреНрд░ рдХреЛ рдХреЗрд╡рд▓ рдЕрд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рджреЗрдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рддреЛ рдХреНрдпрд╛ рдЗрд╕реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рднрд╛рд╖рд╛ рдкрд░рд┐рд╡рд░реНрддрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ? рд╢рд╛рдпрдж рдЗрд╕рдХреЗ рдмрдЬрд╛рдп "рдЙрдкрдирд╛рдо" рдХреА рд╕реВрдЪреА рдХреЗ рд╕рд╛рде gc рдЖрдкреВрд░реНрддрд┐ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рддрдВрддреНрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред gc рдЕрд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдбрд╛рдЙрдирд╕реНрдЯреНрд░реАрдо рдХреЛрдбрдмреЗрд╕ рдХрд╛ рд▓реЗрдЦрдХ рдзреАрд░реЗ-рдзреАрд░реЗ рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЖрдЗрдЯрдо рдХреЛ рд╣рдЯрд╛ рд╕рдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдлрд╝рд┐рдХреНрд╕реЗрд╕ рдорд░реНрдЬ рд╣реЛ рдЧрдП рд╣реИрдВред рдореБрдЭреЗ рдПрд╣рд╕рд╛рд╕ рд╣реИ рдХрд┐ рдЗрд╕ рд╕реБрдЭрд╛рд╡ рдХреЗ рднреА рдореБрд╢реНрдХрд┐рд▓ рдкрд░рд┐рдгрд╛рдо рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдХрдо рд╕реЗ рдХрдо рдПрдХ рдЕрд╕реНрдерд╛рдпреА рддрдВрддреНрд░ рдХреЛ рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░рддрд╛ рд╣реИред

рдореИрдВ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдЗрдХрд╢реЗрдбрд┐рдВрдЧ рдореЗрдВ рднрд╛рдЧ рдирд╣реАрдВ рд▓реВрдВрдЧрд╛ (рдореБрдЭреЗ рдореВрд▓ рд░реВрдк рд╕реЗ рдкрд░рд╡рд╛рд╣ рдирд╣реАрдВ рд╣реИ), рдПрдХ рдЕрдкрд╡рд╛рдж рдХреЗ рд╕рд╛рде: рдпрджрд┐ рдЙрдкрдирд╛рдо рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдпрджрд┐ рдЙрдиреНрд╣реЗрдВ рдкреНрд░рдХрд╛рд░реЛрдВ рддрдХ рд╕реАрдорд┐рдд рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдХреГрдкрдпрд╛ рдПрдХ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдЬреЛ рдХрдо рд╕реЗ рдХрдо var рддрдХ рд▓рдЧрд╛рддрд╛рд░ рдПрдХреНрд╕реНрдЯреЗрдВрд╕рд┐рдмрд▓ рд╣реЛ func рдФрд░ const (рд╕рднреА рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╡рд╛рдХреНрдп рд░рдЪрдирд╛рдПрдВ type Foo = pkg.Bar рдХреЛ рдЫреЛрдбрд╝рдХрд░ рд╕рднреА рдХреЗ рд▓рд┐рдП рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИрдВ)ред рдЗрд╕рдХрд╛ рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐, рдЬрдмрдХрд┐ рдореИрдВ рдорд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ рдРрд╕реЗ рдорд╛рдорд▓реЗ рдЬрд╣рд╛рдВ var рдЙрдкрдирд╛рдореЛрдВ рдореЗрдВ рдЕрдВрддрд░ рд╣реЛрддрд╛ рд╣реИ, рд╡реЗ рджреБрд░реНрд▓рдн рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд╡реЗ рдЕрд╕реНрддрд┐рддреНрд╡рд╣реАрди рд╣реИрдВ рдФрд░ рдРрд╕рд╛ рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо рдХрд┐рд╕реА рдмрд┐рдВрджреБ рдкрд░ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ рдЙрдиреНрд╣реЗрдВ рднреАред рдЙрд╕ рд╕рдордп рд╣рдо рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рд╕рднреА рдЙрдкрдирд╛рдо рдШреЛрд╖рдгрд╛рдПрдВ рд╕реБрд╕рдВрдЧрдд рд╣реЛрдВ, рдпрд╣ рдмреБрд░рд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдпрд╣ type Foo = pkg.Bar рдФрд░ var Foo => pkg.Bar ред

рдореИрдВ рднреА рдЪрд╛рд░реЛрдВ рдХреЗ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдереЛрдбрд╝рд╛ рддрд░реНрдХ рджреВрдВрдЧрд╛ред рдХрд╛рд░рдг рд╣реИрдВ

1) рд╡рд╣рд╛рдБ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдВрддрд░ рд╣реИ var рдФрд░ рдореИрдВ рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрднреА рдХрднреА рдХрд░рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЕрдХреНрд╕рд░ рд╡реИрд╢реНрд╡рд┐рдХ var Debug *log.Logger рдкрд░реНрджрд╛рдлрд╛рд╢ рдХрд░рддрд╛ рд╣реВрдВ, рдпрд╛ http.DefaultServeMux рдЬреИрд╕реЗ рд╡реИрд╢реНрд╡рд┐рдХ рд╕рд┐рдВрдЧрд▓рдЯрди рдХреЛ рдкреБрди: рдЕрд╕рд╛рдЗрди рдХрд░рддрд╛ рд╣реВрдВ рддрд╛рдХрд┐ рдЙрди рдкреИрдХреЗрдЬреЛрдВ рдХреЗ рдкрдВрдЬреАрдХрд░рдг рдХреЛ рдЕрд╡рд░реБрджреНрдз/рдирд┐рдХрд╛рд▓ рд╕рдХреЗрдВ рдЬреЛ рдЗрд╕рдореЗрдВ рд╣реИрдВрдбрд▓рд░ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред

2) рдореБрдЭреЗ рдпрд╣ рднреА рд▓рдЧрддрд╛ рд╣реИ рдХрд┐, рдЬрдмрдХрд┐ func Foo() { pkg.Bar() } рд╡рд╣реА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ func Foo => pkg.Bar , рдмрд╛рдж рд╡рд╛рд▓реЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рдмрд╣реБрдд рд╕реНрдкрд╖реНрдЯ рд╣реИ (рд╡рд┐рд╢реЗрд╖рдХрд░ рдпрджрд┐ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЙрдкрдирд╛рдореЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ)ред рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХрд╣рддрд╛ рд╣реИ "рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣рд╛рдБ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рд╣реИ"ред рддреЛ рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ рд╕рдорд╛рди рд╣реЛрдиреЗ рдкрд░, рдЙрдкрдирд╛рдо рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рд╡рд╣ рдкрд╣рд╛рдбрд╝реА рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕ рдкрд░ рдореИрдВ рдорд░ рдЬрд╛рдКрдВрдЧрд╛; рдЯрд╛рдЗрдк-рдПрд▓рд┐рдпрд╛рд╕ рдЕрдХреЗрд▓реЗ рдЕрдм рдореЗрд░реЗ рд╕рд╛рде рдареАрдХ рд░рд╣реЗрдЧрд╛, рдЬрдм рддрдХ рдХрд┐ рдмрд╛рдж рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рди рд╣реЛред

рдореБрдЭреЗ рдЗрд╕ рдмрд╛рдд рдХреА рднреА рдмрд╣реБрдд рдЦреБрд╢реА рд╣реИ рдХрд┐ рдЗрд╕реЗ рд╡реИрд╕реЗ рд╣реА рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдЬреИрд╕реЗ рдпрд╣ рдерд╛ред рдпрд╣ рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рдПрдкреАрдЖрдИ рдбрд┐рдЬрд╛рдЗрди рдФрд░ рд╕реНрдерд┐рд░рддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореЗрд░реЗ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХрд╛ рдПрдХ рд╕рдореВрд╣ рд╕рд╛рд░рд╛рдВрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рднрд╡рд┐рд╖реНрдп рдореЗрдВ, рд▓реЛрдЧреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рд╕рдВрджрд░реНрдн рдХреЗ рд░реВрдк рдореЗрдВ рднреА рдХрд╛рдо рдХрд░реЗрдЧрд╛ :)

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореИрдВ рдЗрд╕ рдмрд╛рдд рдкрд░ рднреА рдЬреЛрд░ рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдЬрд╣рд╛рдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЙрдкрдирд╛рдо рд╢рд╛рдорд┐рд▓ рд╣реИрдВ рдЬреЛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╕реЗ рдЕрд▓рдЧ рд╣реИрдВ (рдФрд░ рдПрдЖрдИрдпреВрдЖрдИ рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рдЕрдзрд┐рдХ рд╕рд╛рдорд╛рдиреНрдп рдЗрд░рд╛рджрд╛ рд╣реИ, рдЬреЛ рдХреНрд░рдорд┐рдХ рдорд░рдореНрдордд рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╕рдорд╛рдзрд╛рди рдвреВрдВрдврдирд╛ рд╣реИ)ред рдореБрдЭреЗ рдмрд╣реБрдд рдЦреБрд╢реА рд╣реИ рдЕрдЧрд░ рд╕рдореБрджрд╛рдп рдзреАрд░реЗ-рдзреАрд░реЗ рдорд░рдореНрдордд рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдкрд░ рд╕рд╣рдордд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЙрдкрдирд╛рдо рд╕реЗ рдПрдХ рдЕрд▓рдЧ рдирд┐рд░реНрдгрдп рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдореБрдЭреЗ рдпрд╣ рднреА рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЙрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдПрдХ рд╕рд╛рде рдмрд╛рдд рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП рдХрд┐ рдХреНрдпрд╛ рдФрд░ рдХреИрд╕реЗ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рд╣реИ рдкреНрд░реЛрдЯреЛрдмрдл рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЖрдпрд╛рдд рдпрд╛ x/image/draw рдбреНрд░реЙрдк-рдЗрди рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдкреИрдХреЗрдЬ (рджреЛрдиреЛрдВ рдХреБрдЫ рд╣рдж рддрдХ рдореЗрд░реЗ рджрд┐рд▓ рдХреЗ рдХрд░реАрдм рднреА) рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдПрдХ рдЕрд▓рдЧ рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рд╛рде рдЪреАрдЬреЗрдВред рдЙрдкрдирд╛рдореЛрдВ рдХреЗ рд▓рд┐рдП рдЧреЛ-рдЯреВрд▓/рдЬреАрд╕реА рдзреНрд╡рдЬ рдХрд╛ x/image/draw рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЙрдиреНрд╣реЗрдВ рдмрд╕ go get рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

@jba

@iand рдЕрдЧрд░ рд╣рдо рджрд╛рдПрдВ рд╣рд╛рде рдХреЛ рдкреИрдХреЗрдЬ-рдпреЛрдЧреНрдп рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рддрдХ рд╕реАрдорд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдЖрдкрдХреА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЪрд┐рдВрддрд╛ рдХреЛ рдЦрддреНрдо рдХрд░ рджреЗрдЧрд╛ред

рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рднреА рд╣реЛрдЧрд╛ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдореМрдЬреВрджрд╛ рдкреИрдХреЗрдЬ рдореЗрдВ рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдЙрдкрдирд╛рдо рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, [тАж] рд▓реЗрдХрд┐рди рдЙрди рдЙрдкрдпреЛрдЧреЛрдВ рдХрд╛ рдХреНрд░рдорд┐рдХ рдХреЛрдб рдорд░рдореНрдордд рдХреЗ рдореБрдЦреНрдп рд▓рдХреНрд╖реНрдп рд╕реЗ рдХреЛрдИ рд▓реЗрдирд╛-рджреЗрдирд╛ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рдХреЛрдИ рдмрдбрд╝рд╛ рдиреБрдХрд╕рд╛рди рди рдХрд░реЗрдВред

рдПрдХ рдкреИрдХреЗрдЬ рдХреЗ рднреАрддрд░ рдирд╛рдо рдмрджрд▓рдирд╛ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдореБрд╣рд╛рд╡рд░реЗрджрд╛рд░ рдпрд╛ рд╕реБрд╕рдВрдЧрдд рдирд╛рдо рдХреЗ рд▓рд┐рдП) рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рд╣реИ рдЬрд┐рд╕реЗ рдХреЛрдИ рдЙрдЪрд┐рдд рд░реВрдк рд╕реЗ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рдкреИрдХреЗрдЬ рдХрд╛ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдЙрд╕реЗ рдзреАрд░реЗ-рдзреАрд░реЗ рдорд░рдореНрдордд рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреЗрд╡рд▓ рдкреИрдХреЗрдЬ-рдпреЛрдЧреНрдп рдирд╛рдореЛрдВ рдкрд░ рдкреНрд░рддрд┐рдмрдВрдз рд▓рдЧрд╛рдирд╛ рдПрдХ рдЧрд▓рддреА рд╣реЛрдЧреАред (рдХреЗрд╡рд▓ рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдП рдЧрдП рдирд╛рдореЛрдВ рдкрд░ рдкреНрд░рддрд┐рдмрдВрдз рдЕрдзрд┐рдХ рд╕рд╣рдиреАрдп рд╣реЛ рд╕рдХрддрд╛ рд╣реИред)

@btracey

рд╢рд╛рдпрдж рдЗрд╕рдХреЗ рдмрдЬрд╛рдп "рдЙрдкрдирд╛рдо" рдХреА рд╕реВрдЪреА рдХреЗ рд╕рд╛рде рдЬреАрд╕реА рдХреА рдЖрдкреВрд░реНрддрд┐ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рддрдВрддреНрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред gc рдЕрд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдбрд╛рдЙрдирд╕реНрдЯреНрд░реАрдо рдХреЛрдбрдмреЗрд╕ рдХрд╛ рд▓реЗрдЦрдХ рдзреАрд░реЗ-рдзреАрд░реЗ рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЖрдЗрдЯрдо рдХреЛ рд╣рдЯрд╛ рд╕рдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдлрд╝рд┐рдХреНрд╕реЗрд╕ рдорд░реНрдЬ рд╣реЛ рдЧрдП рд╣реИрдВред

gc рд▓рд┐рдП рдПрдХ рддрдВрддреНрд░ рдХрд╛ рдорддрд▓рдм рдпрд╛ рддреЛ рдпрд╣ рд╣реЛрдЧрд╛ рдХрд┐ рдХреЛрдб рдХреЗрд╡рд▓ рдорд░рдореНрдордд рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рджреМрд░рд╛рди gc рдХреЗ рд╕рд╛рде рдирд┐рд░реНрдорд╛рдг рдпреЛрдЧреНрдп рд╣реИ, рдпрд╛ рдпрд╣ рдХрд┐ рддрдВрддреНрд░ рдХреЛ рдЕрдиреНрдп рдХрдВрдкрд╛рдЗрд▓рд░реЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рд╣реЛрдирд╛ рд╣реЛрдЧрд╛ (рдЬреИрд╕реЗ gccgo рдФрд░ llgo ) рднреАред рдПрдХ "рдЧреИрд░-рднрд╛рд╖рд╛-рдкрд░рд┐рд╡рд░реНрддрди" рддрдВрддреНрд░ рдЬрд┐рд╕реЗ рд╕рднреА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдиреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рднрд╛рд╖рд╛ рдкрд░рд┐рд╡рд░реНрддрди рд╣реИ - рдпрд╣ рдХреЗрд╡рд▓ рдЦрд░рд╛рдм рджрд╕реНрддрд╛рд╡реЗрдЬ рд╡рд╛рд▓рд╛ рдПрдХ рд╣реИред

@btracey рдФрд░ @bcmills , рдФрд░ рди рдХреЗрд╡рд▓ рд╕рдВрдХрд▓рдХ: рдХреЛрдИ рднреА рдЙрдкрдХрд░рдг рдЬреЛ рд╕реНрд░реЛрдд рдХреЛрдб рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдЧреБрд░реБ рдпрд╛ рдХреБрдЫ рдФрд░ рдЬреЛ рд▓реЛрдЧреЛрдВ рдиреЗ рдмрдирд╛рдпрд╛ рд╣реИред рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рднрд╛рд╖рд╛ рдкрд░рд┐рд╡рд░реНрддрди рд╣реИ рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рдЖрдк рдЗрд╕реЗ рдХреИрд╕реЗ рдЯреБрдХрдбрд╝рд╛ рдХрд░рддреЗ рд╣реИрдВред

рдареАрдХ рд╣реИ рд╢реБрдХреНрд░рд┐рдпрд╛ред

рдПрдХ рдФрд░ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдХреЙрдиреНрд╕ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рд╣рд░ рдЪреАрдЬ рдХреЗ рд▓рд┐рдП рдЙрдкрдирд╛рдо (рдФрд░ @rsc рдХреГрдкрдпрд╛ рдореБрдЭреЗ рдкреНрд░рддрд┐рдмрдВрдз рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд╖рдорд╛ рдХрд░реЗрдВ!)

рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЗ рд▓рд┐рдП, => рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ = рд▓рд┐рдЦрдиреЗ рдХрд╛ рдПрдХ рд▓рдВрдмрд╛ рддрд░реАрдХрд╛ рд╣реИред рдХреЛрдИ рдирдпрд╛ рд╢рдмреНрджрд╛рд░реНрде рдирд╣реАрдВ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдкреНрд░рдХрд╛рд░ рдФрд░ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рд╣реИред funcs рдХреА рддрд░рд╣ рдХреЛрдИ рд╕рд╣реЗрдЬреЗ рдЧрдП рдХреАрд╕реНрдЯреНрд░реЛрдХ рдирд╣реАрдВ рд╣реИрдВред

рдпрд╣ рдХрдо рд╕реЗ рдХрдо #17784 рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░реЗрдЧрд╛ред

рдкреНрд░рддрд┐рд╡рд╛рдж рдпрд╣ рд╣реЛрдЧрд╛ рдХрд┐ рдЯреВрд▓реАрдВрдЧ рдорд╛рдорд▓реЛрдВ рдХреЛ рдЕрд▓рдЧ рддрд░рд╣ рд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдЗрд░рд╛рджреЗ рдХрд╛ рд╕рдВрдХреЗрддрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рдкреНрд░рддрд┐рд╡рд╛рдж рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рдЗрд╕ рддрдереНрдп рд╕реЗ рдЕрдзрд┐рдХ рд╣реИ рдХрд┐ рдпрд╣ рдореВрд▓ рд░реВрдк рд╕реЗ рдПрдХ рд╣реА рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рджреЛ рддрд░реАрдХреЗ рд╣реИрдВред

рдЙрд╕ рдиреЗ рдХрд╣рд╛, рдореИрдВ рдЕрднреА рдХреЗ рд▓рд┐рдП рд╕рд┐рд░реНрдл рдЙрдкрдирд╛рдореЛрдВ рдХреЗ рд╕рд╛рде рдареАрдХ рд╣реВрдВ, рд╡реЗ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИрдВред рдореИрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ @Merovius рд╕реЗ рд╕рд╣рдордд

рдЖрдпрд╛рдд рдХреЗ рдкреАрдЫреЗ рдЙрдкрдирд╛рдо рдЫрд┐рдкрд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рдЬреИрд╕реЗ "рд╕реА" рдФрд░ "рдЕрд╕реБрд░рдХреНрд╖рд┐рдд" рдХреЗ рд▓рд┐рдП, рдЗрд╕рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдФрд░ рд╣рддреЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП? рдЙрд╕реА рддрд░рд╣, рдореИрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдЙрдкрдирд╛рдо рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рд╡рд░реНрдмреЛрдЬрд╝ рд╣реЛ рдФрд░ рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдкрд░ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдордЪрд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рдЦрдбрд╝рд╛ рд╣реЛред

рдбрд┐рдЬрд╝рд╛рдЗрди рд╕реНрдкреЗрд╕ рдХреЛ рдереЛрдбрд╝рд╛ рдЦреЛрд▓рдиреЗ рдХреЗ рдкреНрд░рдпрд╛рд╕ рдХреЗ рд░реВрдк рдореЗрдВ, рдпрд╣рд╛рдВ рдХреБрдЫ рд╡рд┐рдЪрд╛рд░ рджрд┐рдП рдЧрдП рд╣реИрдВред рд╡реЗ рдмрд╛рд╣рд░ рдорд╛рдВрд╕ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рд╡реЗ рд╢рд╛рдпрдж рдмреБрд░реЗ рдФрд░/рдпрд╛ рдЕрд╕рдВрднрд╡ рд╣реИрдВ; рдЖрд╢рд╛ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рджреВрд╕рд░реЛрдВ рдореЗрдВ рдирдП/рдмреЗрд╣рддрд░ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рд╣реИред рдФрд░ рдЕрдЧрд░ рдХреЛрдИ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИ, рддреЛ рд╣рдо рдЖрдЧреЗ рдХреА рдЦреЛрдЬ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

(1) рдФрд░ (2) рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рдХ рд╡рд┐рдЪрд╛рд░ рдХрд┐рд╕реА рддрд░рд╣ рдЙрдкрдирд╛рдо рдХреЗ рдмрдЬрд╛рдп рд░реВрдкрд╛рдВрддрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИред # 17746 рдореЗрдВ, рдЙрдкрдирд╛рдо рдПрдХ рд╣реА рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП рдХрдИ рдирд╛рдо рд░рдЦрдиреЗ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХреЗ рдореБрджреНрджреЛрдВ рдореЗрдВ рднрд╛рдЧ рдЧрдпрд╛ (рдпрд╛ рдПрдХ рд╣реА рдирд╛рдо рдХреА рд╡рд░реНрддрдиреА рдХреЗ рдХрдИ рддрд░реАрдХреЗ, рдЗрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЙрдкрдирд╛рдореЛрдВ рдХреЛ #define рдпрд╛ рд╣рд╛рд░реНрдб рд▓рд┐рдВрдХ рдХреА рддрд░рд╣ рд╕реЛрдЪрддреЗ рд╣реИрдВ)ред рд░реВрдкрд╛рдВрддрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЙрд╕ рдкреНрд░рдХрд╛рд░ рдХреЛ рдЕрд▓рдЧ рд░рдЦрдХрд░ рджреВрд░ рдХрд░рддрд╛ рд╣реИред

  1. рдЕрдзрд┐рдХ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдкрд╛рдВрддрд░рдг рдЬреЛрдбрд╝реЗрдВред

рдЬрдм рдЖрдк fmt.Println("abc") рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ рдпрд╛ var e interface{} = "abc" рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рддреЛ "abc" рдЕрдкрдиреЗ рдЖрдк interface{} ред рд╣рдо рднрд╛рд╖рд╛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдЬрдм рдЖрдкрдиреЗ type T struct { S } рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рд╣реЛ, рдФрд░ рдЯреА рдХреЗ рдкрд╛рд╕ рдХреЛрдИ рдЧреИрд░-рдкреНрд░рдЪрд╛рд░рд┐рдд рд╡рд┐рдзрд┐рдпрд╛рдВ рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рд╕рдВрдХрд▓рдХ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдПрд╕ рдФрд░ рдЯреА рдХреЗ рдмреАрдЪ рдЖрд╡рд╢реНрдпрдХрддрд╛рдиреБрд╕рд╛рд░ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реЛ рдЬрд╛рдПрдЧрд╛, рдЬрд┐рд╕рдореЗрдВ рдЕрдиреНрдп рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдХреЗ рдЕрдВрджрд░ рдкреБрдирд░рд╛рд╡рд░реНрддреА рд╢рд╛рдорд┐рд▓ рд╣реИред рдЯреА рддрдм рдХреНрд░рдорд┐рдХ рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрд╕ (рдпрд╛ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд) рдХреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрдкрдирд╛рдо рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░ рд╕рдХрддрд╛ рд╣реИред

  1. рдПрдХ рдирдпрд╛ "рджрд┐рдЦрддрд╛ рд╣реИ" рдкреНрд░рдХрд╛рд░ рдХрд╛ рдкреНрд░рдХрд╛рд░ рдЬреЛрдбрд╝реЗрдВред

рдЪрд▓реЛ type T ~S рдПрдХ рдирдпрд╛ рдкреНрд░рдХрд╛рд░ T рдШреЛрд╖рд┐рдд рдХрд░реЗрдВ рдЬреЛ рдПрдХ рдкреНрд░рдХрд╛рд░ рд╣реИ рдЬреЛ "S рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ"ред рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ, рдЯреА "рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рд╕реЗ рдФрд░ рдкреНрд░рдХрд╛рд░ рдПрд╕ рд╕реЗ рдкрд░рд┐рд╡рд░реНрддрдиреАрдп" рд╣реИред (рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рд╕рд┐рдВрдЯреИрдХреНрд╕ рдкрд░ рдмрд╛рдж рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред) рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреА рддрд░рд╣, T рдореЗрдВ рд╡рд┐рдзрд┐рдпрд╛рдБ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ; рдореВрд▓ рд░реВрдк рд╕реЗ рдЯреА рдХреЗ рд╕рд╛рде рдХреБрдЫ рднреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЗрд╕реЗ рдПрд╕ (рдпрд╛ рдПрд╕ рд╕реЗ/рд╕реЗ рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдкреНрд░рдХрд╛рд░) рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдХреЛрдИ "рдареЛрд╕ рдкреНрд░рдХрд╛рд░" рдирд╣реАрдВ рд╣реИ, рдПрд╕ рд╕реЗ рдЯреА рдФрд░ рдЯреА рд╕реЗ рдПрд╕ рдХреЗ рдмреАрдЪ рд░реВрдкрд╛рдВрддрд░рдг рдореЗрдВ рдХреЛрдИ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдкрд░рд┐рд╡рд░реНрддрди рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИред рдХреНрд░рдорд┐рдХ рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП, рдпреЗ "рджрд┐рдЦрдиреЗ рд╡рд╛рд▓реЗ" рдкреНрд░рдХрд╛рд░ рд▓реЗрдЦрдХреЛрдВ рдХреЛ рдкреБрд░рд╛рдиреЗ рдФрд░ рдирдП рджреЛрдиреЛрдВ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреЗ рд╣реБрдП рдПрдкреАрдЖрдИ рд▓рд┐рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдВрдЧреЗред ("рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ" рдкреНрд░рдХрд╛рд░ рдореВрд▓ рд░реВрдк рд╕реЗ рдЕрддреНрдпрдзрд┐рдХ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд, рд╕рд░рд▓реАрдХреГрдд рд╕рдВрдШ рдкреНрд░рдХрд╛рд░ рд╣реИрдВред)

  1. рдЯреИрдЧ рдЯрд╛рдЗрдк рдХрд░реЗрдВ

рдмреЛрдирд╕ рд╕реБрдкрд░-рдШреГрдгрд┐рдд рд╡рд┐рдЪрд╛рд░ред (рдХреГрдкрдпрд╛ рдореБрдЭреЗ рдпрд╣ рдмрддрд╛рдиреЗ рдореЗрдВ рдкрд░реЗрд╢рд╛рди рди рд╣реЛрдВ рдХрд┐ рдпрд╣ рднрдпрд╛рдирдХ рд╣реИ - рдореБрдЭреЗ рдпрд╣ рдкрддрд╛ рд╣реИред рдореИрдВ рдХреЗрд╡рд▓ рджреВрд╕рд░реЛрдВ рдореЗрдВ рдирдП рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред) рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рд╣рдо рдЯрд╛рдЗрдк рдЯреИрдЧ (рдЬреИрд╕реЗ рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдЯреИрдЧ) рдкреЗрд╢ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЯреИрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдирд┐рдпрдВрддреНрд░рдг рдЙрдкрдирд╛рдо, рдЬреИрд╕реЗ type T S "alias:\"T\"" рдХрд╣реЗрдВред рдЯрд╛рдЗрдк рдЯреИрдЧ рдХреЗ рдЕрдиреНрдп рдЙрдкрдпреЛрдЧ рднреА рд╣реЛрдВрдЧреЗ рдФрд░ рдпрд╣ рдкреИрдХреЗрдЬ рд▓реЗрдЦрдХ рджреНрд╡рд╛рд░рд╛ рдХреЗрд╡рд▓ "рдпрд╣ рдкреНрд░рдХрд╛рд░ рдПрдХ рдЙрдкрдирд╛рдо рд╣реИ" рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЙрдкрдирд╛рдореЛрдВ рдХреЗ рдЕрдзрд┐рдХ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдХреЗ рд▓рд┐рдП рдЧреБрдВрдЬрд╛рдЗрд╢ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ; рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреЛрдб рдХрд╛ рд▓реЗрдЦрдХ рдПрдореНрдмреЗрдбрд┐рдВрдЧ рд╡реНрдпрд╡рд╣рд╛рд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдпрджрд┐ рд╣рдо рдлрд┐рд░ рд╕реЗ рдЙрдкрдирд╛рдореЛрдВ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ "рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ" рдФрд░ "рдПрдореНрдмреЗрдбрд┐рдВрдЧ рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ" рдореБрджреНрджреЛрдВ рдХреЗ рд╕рдорд╛рди "рдЧреЙрдбреЛрдХ рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ" рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдиреЗ рд▓рд╛рдпрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдпрджрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕

type  OldAPI => NewPackage.API

рдФрд░ NewPackage.API рдореЗрдВ рдПрдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЯрд┐рдкреНрдкрдгреА рд╣реИ, рдХреНрдпрд╛ рд╣рдо рдЙрд╕ рдЯрд┐рдкреНрдкрдгреА рдХреЛ "OldAPI рдЯрд╛рдЗрдк рдХрд░реЗрдВ" рдХреЗ рдмрдЧрд▓ рдореЗрдВ рдХреЙрдкреА/рдкреЗрд╕реНрдЯ рдХрд░рдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдХреНрдпрд╛ рд╣рдо рдЗрд╕реЗ рдмрд┐рдирд╛ рдЯрд┐рдкреНрдкрдгреА рдХрд┐рдП рдЫреЛрдбрд╝рдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░ рд░рд╣реЗ рд╣реИрдВ (godoc рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рд▓рд┐рдВрдХ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдпрд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдХреЙрдкреА/рдкреЗрд╕реНрдЯ рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде), рдпрд╛ рд╣реЛрдЧрд╛ рдХреЛрдИ рдЕрдиреНрдп рд╕рдореНрдореЗрд▓рди рд╣реЛ?

рдХреБрдЫ рд╣рдж рддрдХ рд╕реНрдкрд░реНрд╢рд░реЗрдЦрд╛, рдЬрдмрдХрд┐ рдкреНрд░рд╛рдердорд┐рдХ рдкреНрд░реЗрд░рдгрд╛ рдХреНрд░рдорд┐рдХ рдХреЛрдб рдорд░рдореНрдордд рдХрд╛ рд╕рдорд░реНрдерди рдХрд░ рд░рд╣реА рд╣реИ рдФрд░ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рдПрдХ рдорд╛рдореВрд▓реА рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓рд╛ (рдЙрдкрдирд╛рдо рдкреНрд░рд╕реНрддрд╛рд╡ рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдирд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ рдареЛрд╕ рдкреНрд░рд╕реНрддрд╛рд╡ рд╣реИ) рдПрдХ рдПрдХрд▓ рдлрд╝рдВрдХреНрд╢рди рдкреНрд░рд╕реНрддреБрдд рдХрд░рддреЗ рд╕рдордп рдбрдмрд▓ рдлрд╝рдВрдХреНрд╢рди-рдХреЙрд▓ рдУрд╡рд░рд╣реЗрдб рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдПрдХрд╛рдзрд┐рдХ, рдмрд┐рд▓реНрдб-рдЯреИрдЧ-рдирд┐рд░реНрднрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рддред рдореИрдВ рдЕрднреА рдХреЗрд╡рд▓ рд╣рд╛рде рд╣рд┐рд▓рд╛ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЙрдкрдирд╛рдо рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ https://groups.google.com/d/topic/golang-nuts/wb5I2tjrwoc/discussion "рдкреИрдХреЗрдЬ рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдУрд╡рд░рд╣реЗрдб рд╕реЗ рдмрдЪрдирд╛ рдЧреЛ + рдПрдПрд╕рдПрдо рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде" рдЪрд░реНрдЪрд╛ред

@nigeltao re Godoc, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ:

рдЗрд╕реЗ рд╣рдореЗрд╢рд╛ рдореВрд▓ рд╕реЗ рд▓рд┐рдВрдХ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рднрд▓реЗ рд╣реАред

рдпрджрд┐ рдЙрдкрдирд╛рдо рдкрд░ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╣реИрдВ, рддреЛ рдЙрдиреНрд╣реЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рднрд▓реЗ рд╣реАред

рдпрджрд┐ рдЙрдкрдирд╛рдо рдкрд░ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдпрд╣ рдЖрдХрд░реНрд╖рдХ рд╣реИ рдХрд┐ рдЧреЛрдбреЛрдХ рдореВрд▓ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкреНрд░рдХрд╛рд░ рдХрд╛ рдирд╛рдо рдЧрд▓рдд рд╣реЛрдЧрд╛ рдпрджрд┐ рдЙрдкрдирд╛рдо рдиреЗ рднреА рдирд╛рдо рдмрджрд▓ рджрд┐рдпрд╛ рд╣реИ, рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╡рд░реНрддрдорд╛рди рдкреИрдХреЗрдЬ рдореЗрдВ рдирд╣реАрдВ рдЖрдЗрдЯрдо рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░, рдпрджрд┐ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрд░рдорд┐рдХ рд░реАрдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рддреЛ рдПрдХ рд╕рдВрджреЗрд╢ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдХрд╣рддрд╛ рд╣реИ рдХрд┐ "рдмрд╣рд┐рд╖реНрдХреГрдд: рдПрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ" рдЬрдм рдЖрдк рдПрдХреНрд╕ рдХреЛ рджреЗрдЦ рд░рд╣реЗ рд╣реЛрдВред

рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдпрд╣ рдХреЛрдИ рдорд╛рдпрдиреЗ рдирд╣реАрдВ рд░рдЦрддрд╛ред рдпреЗ рдРрд╕реА рдЪреАрдЬреЗрдВ рд╣реИрдВ рдЬреЛ рдЧрд▓рдд рд╣реЛ рд╕рдХрддреА рд╣реИрдВ, рди рдХрд┐ рдРрд╕реА рдЪреАрдЬреЗрдВ рдЬреЛ рдЧрд▓рдд рд╣реЛ рд╕рдХрддреА рд╣реИрдВред рдФрд░ рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдХрд╛ рдкрддрд╛ рд▓рд╛рдЗрдирд┐рдВрдЧ рд╕реЗ рд▓рдЧрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдирд╛рдо рдмрджрд▓рдХрд░ рдЙрдкрдирд╛рдо рдФрд░ рдЧрд▓рддреА рд╕реЗ рдмрд╣рд┐рд╖реНрдХрд░рдг рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдирд╛ред

рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд┐рдЪрд╛рд░ рдкрд╣рд▓реЗ рдкреЛрд╕реНрдЯ рдХрд┐рдП рдЧрдП рдереЗ, рд▓реЗрдХрд┐рди рдЬреНрдпрд╛рджрд╛рддрд░ рдЯреВрд▓-рдЖрдзрд╛рд░рд┐рдд "рдЧреЛрдлрд┐рдХреНрд╕"/"рдЧреЛрд░рдирд╛рдо" рдЬреИрд╕реЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рд╣реИ? рд╕рдордЭрд╛рдиреЗ рдХреЗ рд▓рд┐рдП:

  • рдХрд┐рд╕реА рднреА рдкреИрдХреЗрдЬ рдореЗрдВ рдкреБрдирд░реНрд▓реЗрдЦрди рдирд┐рдпрдореЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдореИрдкрд┐рдВрдЧ pkg.Ident => otherpkg.Ident )
  • рдЙрди рдкреБрдирд░реНрд▓реЗрдЦрди рдирд┐рдпрдореЛрдВ рдХреЛ рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рдЕрдВрджрд░ //+rewrite ... рдЯреИрдЧ рдХреЗ рд╕рд╛рде рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
  • рд╡реЗ рдкреБрдирд░реНрд▓реЗрдЦрди рдирд┐рдпрдо ABI рд╕рдВрдЧрдд рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рддрдХ рд╕реАрдорд┐рдд рдирд╣реАрдВ рд╣реИрдВ, рдЕрдиреНрдп рдХрд╛рд░реНрдп рдХрд░рдирд╛ рднреА рд╕рдВрднрд╡ рд╣реИ (рдЬреИрд╕реЗ pkg.MyFunc(a) => pkg.MyFunc(context.Contex(), a) )
  • рд╡рд░реНрддрдорд╛рди рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рд╕рднреА рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЧреЛрдлрд┐рдХреНрд╕ рдЬреИрд╕реЗ рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рд╕реЗ рдкреИрдХреЗрдЬ рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рдХреЛрдб рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
  • рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд╕рдВрдХрд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП gofix рдЯреВрд▓ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИред рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЬреЛ рдЕрднреА рднреА рдПрдХ рдирд┐рд░реНрднрд░рддрд╛ рдПрдХреНрд╕ рдХреЗ рдкреБрд░рд╛рдиреЗ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ (рдПрдХреНрд╕ рдХреЗ рдкреБрд░рд╛рдиреЗ рдФрд░ рдирдП рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рд░рд╣рдиреЗ рдХреЗ рд▓рд┐рдП) рдЕрднреА рднреА рдРрд╕рд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЧреЛ рдмрд┐рд▓реНрдб рдХрдорд╛рдВрдб рдХреЛ рдбрд┐рд╕реНрдХ рдкрд░ рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдмрджрд▓реЗ рдмрд┐рдирд╛ рдСрди-рдж-рдлреНрд▓рд╛рдИ рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдореЗрд╢рди (рдкреИрдХреЗрдЬ рдПрдХреНрд╕ рдХреЗ рд░реАрд░рд╛рдЗрдЯ рдЯреИрдЧ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ) рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЕрдВрддрд┐рдо рдЪрд░рдг рд╕рдВрдХрд▓рдХ рдХреЛ рдереЛрдбрд╝рд╛ рдЬрдЯрд┐рд▓/рдзреАрдорд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдореВрд▓ рд░реВрдк рд╕реЗ рдХреЗрд╡рд▓ рдПрдХ рдкреНрд░реА-рдкреНрд░реЛрд╕реЗрд╕рд░ рд╣реИ рдФрд░ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдХреЗ рдирд┐рдпрдореЛрдВ рдХреА рдорд╛рддреНрд░рд╛ рдХреЛ рд╡реИрд╕реЗ рднреА рдЫреЛрдЯрд╛ рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рддреЛ, рдЖрдЬ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдордВрдерди :)

рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдУрд╡рд░рд╣реЗрдб рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдирд╛рдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЧреИрд░-рдкрддреНрддреА рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЗрдирд▓рд╛рдЗрди рдХрд░рдиреЗ рдореЗрдВ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреА рдЕрдХреНрд╖рдорддрд╛ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реИрдХ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИред рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рдХрдорд┐рдпреЛрдВ рдХреЛ рднрд╛рд╖рд╛ рдХреА рдХрд▓реНрдкрдирд╛ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

@josharian рдЬрдмрдХрд┐ рдЖрдкрдиреЗ рдЙрдиреНрд╣реЗрдВ рдкреВрд░реНрдг рдкреНрд░рд╕реНрддрд╛рд╡реЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд░рд╛рджрд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдерд╛, рдореБрдЭреЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрдВ (рднрд▓реЗ рд╣реА рдХреЗрд╡рд▓, рддрд╛рдХрд┐ рдЬреЛ рдХреЛрдИ рднреА рдЖрдкрд╕реЗ рдкреНрд░реЗрд░рд┐рдд рд╣реЛ, рд╡рд╣ рддрддреНрдХрд╛рд▓ рдЖрд▓реЛрдЪрдирд╛ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦ рд╕рдХреЗ):

  1. рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд░реВрдкрд╛рдВрддрд░рдг рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИред x/net/context.Context рдЕрд╕рд╛рдЗрди рдХрд░рдиреЗ рдпреЛрдЧреНрдп/рдкрд░рд┐рд╡рд░реНрддрдиреАрдп/рдЬреЛ рдХреБрдЫ рднреА context.Context ред рд╕рдорд╕реНрдпрд╛ рдЙрдЪреНрдЪ-рдХреНрд░рдо рдХреЗ рдкреНрд░рдХрд╛рд░ рд╣реИрдВ; рдЕрд░реНрдерд╛рддреН рдкреНрд░рдХрд╛рд░ func (ctx x/net/context.Context) рдФрд░ func (ctx context.Context) рд╕рдорд╛рди рдирд╣реАрдВ рд╣реИрдВ, рднрд▓реЗ рд╣реА рддрд░реНрдХ рдЕрд╕рд╛рдЗрди рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реЛрдВред рддреЛ, рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 1 рдХреЗ рд▓рд┐рдП, type T struct { S } рдХрд╛ рдЕрд░реНрде рдпрд╣ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ T рдФрд░ S рд╕рдорд╛рди рдкреНрд░рдХрд╛рд░ рд╣реИрдВред рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ, рдХрд┐ рдЖрдк рдмрд╕ рдЙрдкрдирд╛рдореЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ (рдмрд╕ рдЗрд╕ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХрд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдЕрд▓рдЧ рдЕрд░реНрде рд╣реИ)ред

  2. рдлрд┐рд░ рд╕реЗ рдЙрдЪреНрдЪ-рдХреНрд░рдо рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЕрд╕рд╛рдЗрди рдХрд░рдиреЗ рдпреЛрдЧреНрдп/рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдкреНрд░рдХрд╛рд░реЛрдВ рдореЗрдВ рд╕рдорд╛рди рд╕реНрдореГрддрд┐ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ (рдФрд░ рдпрджрд┐ рд╡реЗ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд░реВрдк рд╕реЗ рдмрджрд▓ рд╕рдХрддреА рд╣реИ)ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ uint8 рдПрдХ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╣реИ uint64 рдФрд░ рдЙрдкрд╛рдзреНрдпрдХреНрд╖ рдкреНрд░рддрд┐рдХреВрд▓ред рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реЛрдЧрд╛ рдХрд┐, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, type T ~uint8 , рд╕рдВрдХрд▓рдХ рдпрд╣ рдирд╣реАрдВ рдЬрд╛рди рд╕рдХрддрд╛ рдХрд┐ func(T) рдХреЛ рдХреИрд╕реЗ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рдП; рдХреНрдпрд╛ рдЗрд╕реЗ рд╕реНрдЯреИрдХ рдкрд░ 1, 2,4 рдпрд╛ 8 рдмрд╛рдЗрдЯреНрд╕ рдХреЛ рдкреБрд╢ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ? рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХреЗ рддрд░реАрдХреЗ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдмрд╣реБрдд рдЬрдЯрд┐рд▓ рд▓рдЧрддрд╛ рд╣реИ (рдФрд░ рдЙрдкрдирд╛рдо рд╕реЗ рд╕рдордЭрдиреЗ рдореЗрдВ рдХрдард┐рди)ред

рдзрдиреНрдпрд╡рд╛рдж, @ рдореЗрд░реЛрд╡рд┐рдпрд╕ред

  1. рд╣рд╛рдБ, рдореИрдВ рдпрд╣рд╛рдБ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╕рдВрддреБрд╖реНрдЯрд┐ рд╕реЗ рдЪреВрдХ рдЧрдпрд╛ред рддреБрдо рд╕рд╣реА рд╣реЛ, рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

  2. рдореЗрд░реЗ рдорди рдореЗрдВ рдерд╛ "рдПрдХ рд╣реА рд╕реНрдореГрддрд┐ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рд╣реИ"ред рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдЖрдЧреЗ рдФрд░ рдкреАрдЫреЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЗрд╕рдХрд╛ рд╕рд╣реА рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдирд╣реАрдВ рд╣реИ - рдзрдиреНрдпрд╡рд╛рджред

@uluyol рд╣рд╛рдБ, рдпрд╣ рдореЛрдЯреЗ рддреМрд░ рдкрд░ рдЧреИрд░-рдкрддреНрддреА рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЗрдирд▓рд╛рдЗрди рдХрд░рдиреЗ рдореЗрдВ рд╕рдВрдХрд▓рдХ рдХреА рдЕрдХреНрд╖рдорддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╕реНрдкрд╖реНрдЯ рдПрд▓рд┐рдпрд╛рд╕рд┐рдВрдЧ рдЧреИрд░-рдкрддреНрддреА рдХреЛ рдЗрдирд▓рд╛рдЗрди рдХреЙрд▓ рдХреЛ рд╕реНрдЯреИрдХ рдЯреНрд░реЗрд╕, рд░рдирдЯрд╛рдЗрдоред рдХреЙрд▓рд░ рдЗрддреНрдпрд╛рджрд┐ рдореЗрдВ рджрд┐рдЦрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдпрд╛ рдирд╣реАрдВ, рдЗрд╕ рд╕рдВрдмрдВрдз рдореЗрдВ рдХрдо рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдХрд╣рд╛, рдпрд╣ рдПрдХ рдорд╛рдореВрд▓реА рд╕реНрдкрд░реНрд╢рд░реЗрдЦрд╛ рд╣реИред

@josarian рдЗрд╕реА рддрд░рд╣ рдХреА рд╕рдорд╕реНрдпрд╛: [2]uintptr рдФрд░ interface{} рдореЗрдВ рд╕рдорд╛рди рд╕реНрдореГрддрд┐ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рд╣реИ; рдЗрд╕рд▓рд┐рдП рдХреЗрд╡рд▓ рд╕реНрдореГрддрд┐ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рдиреЗ рд╕реЗ рдкреНрд░рдХрд╛рд░ рдХреА рд╕реБрд░рдХреНрд╖рд╛ рдХреЛ рд░реЛрдХрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдорд┐рд▓ рдЬрд╛рдПрдЧреАред uint64 рдФрд░ float64 рджреЛрдиреЛрдВ рдореЗрдВ рдПрдХ рд╣реА рдореЗрдореЛрд░реА рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рд╣реИ рдФрд░ рдЖрдЧреЗ-рдкреАрдЫреЗ рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╣реИрдВ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдХрдо рд╕реЗ рдХрдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдЬреАрдм рдкрд░рд┐рдгрд╛рдо рд╣реЛрдВрдЧреЗ, рдпрджрд┐ рдЖрдк рдирд╣реАрдВ рдЬрд╛рдирддреЗ рдХрд┐ рдХреМрди рд╕рд╛ рд╣реИред

рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЖрдк "рд╕рдорд╛рди рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдкреНрд░рдХрд╛рд░" рд╕реЗ рджреВрд░ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдирд┐рд╣рд┐рддрд╛рд░реНрде рд╣реЛрдВрдЧреЗред рдореЗрд░реА рдЯреЛрдкреА рдХреЗ рдКрдкрд░ рд╕реЗ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдлрд╝реАрд▓реНрдб рдореЗрдВ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдЗрд╕рд╕реЗ рдЧрд▓рддрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ type S1 struct { T1 } рдФрд░ type S2 struct { T2 } ( T1 рдФрд░ T2 рд╕рдорд╛рди рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╛рде) рд╣реИрдВ, рддреЛ type L1 ~T1 рддрд╣рдд рджреЛрдиреЛрдВ рдХрд╛рдо рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ type S struct { L1 } , рд▓реЗрдХрд┐рди T1 рдФрд░ T2 рдЕрднреА рднреА рдПрдХ рдЕрд▓рдЧ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдПрдХ рдЬреИрд╕реЗ рджрд┐рдЦрдиреЗ рд╡рд╛рд▓рд╛) рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдкреНрд░рдХрд╛рд░ рд╣реИ, type L2 ~S1 рдЖрдкрдХреЗ рдкрд╛рд╕ S2 рдирд╣реАрдВ рд╣реЛрдЧрд╛ S1 рдФрд░ L2 рд░реВрдк рдореЗрдВ рдкреНрд░рдпреЛрдЧ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реИрдВред

рддреЛ рдЖрдкрдХреЛ рдЗрд╕ рдХрд╛рдо рдХреЛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП "рд╕рдорд╛рди рдкреНрд░рдХрд╛рд░" рдХреЗ рд╕рд╛рде "рд╕рдорд╛рди рдкреНрд░рдХрд╛рд░" рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдпрд╛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЬреЛ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд▓рдЧрддрд╛ рд╣реИ рдФрд░ рд╕рдВрднрд╡рддрдГ рдкреНрд░рдХрд╛рд░ рдХреА рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рдкрд░рд┐рдгрд╛рдо рд╣реЛрдВрдЧреЗред "рдПрдХ рдЬреИрд╕реЗ рджрд┐рдЦрдиреЗ рд╡рд╛рд▓реЗ" рдкреНрд░рдХрд╛рд░реЛрдВ рдореЗрдВ рдЙрдкрдирд╛рдореЛрдВ, IMHO рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдФрд░ рднреА рдЕрдзрд┐рдХ рджреБрд░реБрдкрдпреЛрдЧ рдФрд░ рднреНрд░рдо рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реЛрддреА рд╣реИ, рдЬреЛ рдЙрдкрдирд╛рдореЛрдВ рдХреЗ рдЦрд┐рд▓рд╛рдл рдореБрдЦреНрдп рддрд░реНрдХ рдкреНрд░рддреАрдд рд╣реЛрддреЗ рд╣реИрдВред

рдЕрдЧрд░ рдХреЛрдИ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рдирд┐рдпрдо рдХреЗ рд╕рд╛рде рдЖ рд╕рдХрддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕рдореЗрдВ рдпреЗ рд╕рдорд╕реНрдпрд╛рдПрдВ рдирд╣реАрдВ рд╣реИрдВ, рдЗрд╕реЗ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП :)

@josharian рдХреЗ рд╡рд┐рдЪрд╛рд░ рдХреЗ рдмрд╛рдж, рдпрд╣рд╛рдВ рдЙрдирдХреЗ рдирдВрдмрд░ 2 рдХрд╛ рдПрдХ рд░реВрдкрд╛рдВрддрд░ рд╣реИ:

"рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдпреЛрдЧреНрдп рдкреНрд░рдХрд╛рд░" рдХреЗ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдВред рдпрд╣ рдЙрди рдкреНрд░рдХрд╛рд░реЛрдВ рдХреА рд╕реВрдЪреА рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рдлрд╝рдВрдХреНрд╢рди рддрд░реНрдХреЛрдВ, рд░рд┐рдЯрд░реНрди рд╡реИрд▓реНрдпреВ рдЖрджрд┐ рдореЗрдВ рдирд╛рдорд┐рдд рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдХрдВрдкрд╛рдЗрд▓рд░ рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдирд╛рдорд┐рдд рдкреНрд░рдХрд╛рд░ рдпрд╛ рдЗрд╕рдХреЗ рдХрд┐рд╕реА рднреА рд╡рд┐рдХрд▓реНрдк рдХреЗ рддрд░реНрдХ рдХреЗ рд╕рд╛рде рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред рд╕реНрдерд╛рдирд╛рдкрдиреНрди рдкреНрд░рдХрд╛рд░реЛрдВ рдореЗрдВ рдирд╛рдорд┐рдд рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рдкрд░рд┐рднрд╛рд╖рд╛ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдпрд╣рд╛рдВ рд╕рдВрдЧрдд рдХрд╛ рдЕрд░реНрде рд╣реИ рдШреЛрд╖рдгрд╛ рдореЗрдВ рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдк рдкреНрд░рдХрд╛рд░реЛрдВ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рдмрд╛рдж рд╕рдорд╛рди рд╕реНрдореГрддрд┐ рдЕрднреНрдпрд╛рд╡реЗрджрди рдФрд░ рд╕рдорд╛рди рдШреЛрд╖рдгрд╛рдПрдВред

рдПрдХ рддрд╛рддреНрдХрд╛рд▓рд┐рдХ рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕ рд╕рдВрдмрдВрдз рдХреА рджрд┐рд╢рд╛ рдЙрд░реНрдл тАЛтАЛрдкреНрд░рд╕реНрддрд╛рд╡ рдХреЗ рд╡рд┐рдкрд░реАрдд рд╣реИ рдЬреЛ рдирд┐рд░реНрднрд░рддрд╛ рдЧреНрд░рд╛рдл рдХреЛ рдЙрд▓рдЯ рджреЗрддрд╛ рд╣реИред рдпрд╣ рдЕрдХреЗрд▓реЗ рдЗрд╕реЗ рдЕрд╡реНрдпрд╡рд╣рд╛рд░рд┐рдХ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕реЗ рдпрд╣рд╛рдВ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдЕрдиреНрдп рд▓реЛрдЧ рдЗрд╕рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХрд╛ рд░рд╛рд╕реНрддрд╛ рд╕реЛрдЪ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХ рддрд░реАрдХрд╛ рдпрд╣ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╡рд┐рдХрд▓реНрдк рдХреЛ рдЖрдпрд╛рдд рдЧреНрд░рд╛рдлрд╝ рдХреЗ рдмрдЬрд╛рдп // рдЧреЛ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПред рдЗрд╕ рддрд░рд╣ рд╡реЗ рд╢рд╛рдпрдж рдЕрдзрд┐рдХ рдореИрдХреНрд░реЛрдЬрд╝ рдХреА рддрд░рд╣ рдмрди рдЬрд╛рддреЗ рд╣реИрдВред

рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд рджрд┐рд╢рд╛рддреНрдордХрддрд╛ рдХреЗ рдЗрд╕ рдЙрд▓рдЯрдлреЗрд░ рдХреЗ рдХреБрдЫ рдлрд╛рдпрджреЗ рд╣реИрдВ:

  • рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдпреЛрдЧреНрдп рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╕реЗрдЯ рдХреЛ рдирдП рдкреИрдХреЗрдЬ рдХреЗ рд▓реЗрдЦрдХ рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рд╢рдмреНрджрд╛рд░реНрде рдХреА рдЧрд╛рд░рдВрдЯреА рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣реИ
  • рдореВрд▓ рдкреИрдХреЗрдЬ рдореЗрдВ рдХреЛрдИ рдХреЛрдб рдкрд░рд┐рд╡рд░реНрддрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдирдП рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╢реБрд░реВ рдХрд░рдиреЗ рддрдХ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ

рдЗрд╕реЗ рдХреЙрдиреНрдЯреЗрдХреНрд╕реНрдЯ рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░рдирд╛: рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕рдВрджрд░реНрдн рдкреИрдХреЗрдЬ рдШреЛрд╖рд┐рдд рдХрд░реЗрдЧрд╛ рдХрд┐ context.Context рдХреЛ golang.org/x/net/context.Context рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдХреЛрдИ рднреА рдЙрдкрдпреЛрдЧ рдЬреЛ рд╕рдВрджрд░реНрдн рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИред рд╕рдВрджрд░реНрдн рдЗрд╕рдХреЗ рд╕реНрдерд╛рди рдкрд░ golang.org/x/net/context.Context рднреА рд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╕рдВрджрд░реНрдн рдкреИрдХреЗрдЬ рдореЗрдВ рдХрд╛рд░реНрдп рдЬреЛ рдПрдХ рд╕рдВрджрд░реНрдн рд▓реМрдЯрд╛рддреЗ рд╣реИрдВ рд╡рд╣ рд╣рдореЗрд╢рд╛ context.Context рд▓реМрдЯрд╛рдПрдЧрд╛ред

рдпрд╣ рдкреНрд░рд╕реНрддрд╛рд╡ рдПрдореНрдмреЗрдбрд┐рдВрдЧ рд╕рдорд╕реНрдпрд╛ (#17746) рдХреЛ рд░реЛрдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдПрдореНрдмреЗрдбреЗрдб рдкреНрд░рдХрд╛рд░ рдХрд╛ рдирд╛рдо рдХрднреА рдирд╣реАрдВ рдмрджрд▓рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдПрдХ рд╡рд┐рдХрд▓реНрдк рдкреНрд░рдХрд╛рд░ рдХреЗ рдорд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдПрдореНрдмреЗрдбреЗрдб рдкреНрд░рдХрд╛рд░ рдХреЛ рдкреНрд░рд╛рд░рдВрдн рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

@iand @josharian рдЖрдк рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╣рд╕рдВрдпреЛрдЬрдХ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдкреВрдЫ рд░рд╣реЗ рд╣реИрдВред

@ рдЬреЛрд╢реЗрд░рд┐рдпрди , рд╕реБрдЭрд╛рд╡реЛрдВ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

Re type T struct { S } , рдЬреЛ рдЙрдкрдирд╛рдо рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреА рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ, рдФрд░ рдЬрд░реВрд░реА рдирд╣реАрдВ рдХрд┐ рдПрдХ рд╕реНрдкрд╖реНрдЯ рд╣реЛред

рдкреБрди: type T ~S , рдореБрдЭреЗ рдпрд╛ рддреЛ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдЙрдкрдирд╛рдо рд╕реЗ рдХреИрд╕реЗ рднрд┐рдиреНрди рд╣реИ рдпрд╛ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдореЗрдВ (рдХрд╣рддреЗ рд╣реИрдВ, io.ByteBuffer -> рдмрд╛рдЗрдЯреНрд╕ред рдмрдлрд░), рдЖрдк рд▓рд┐рдЦреЗрдВрдЧреЗ:

package io
type ByteBuffer ~bytes.Buffer

рд▓реЗрдХрд┐рди рдлрд┐рд░, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдХрд╣рддреЗ рд╣реИрдВ, "рдЯреА рдХреЗ рд╕рд╛рде рдореВрд▓ рд░реВрдк рд╕реЗ рдХреБрдЫ рднреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЗрд╕реЗ рдПрд╕ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ", рддреЛ рд╕рднреА рдХреЛрдб io.ByteBuffer рдХреЗ рд╕рд╛рде рдХреБрдЫ рднреА рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рдкреБрди: type T S "alias" : рдКрдкрд░ рджрд┐рдП рдЧрдП @bcmills рдХрд╛ рдПрдХ рдкреНрд░рдореБрдЦ рдмрд┐рдВрджреБ рдпрд╣ рд╣реИ рдХрд┐ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдХрдИ рд╕рдорд╛рди рдирд╛рдо рд╣реЛрдиреЗ рд╕реЗ рднрд╛рд╖рд╛ рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛрддрд╛ рд╣реИ, рдЪрд╛рд╣реЗ рд╡рд╣ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реЛред рд╕рднреА рдХрдВрдкрд╛рдЗрд▓рд░реЛрдВ рдХреЛ рдпрд╣ рдЬрд╛рдирдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдХрд┐, io.ByteBuffer рдФрд░ рдмрд╛рдЗрдЯреНрд╕ред рдмрдлрд╝рд░ рд╕рдорд╛рди рд╣реИрдВ, рдЬреИрд╕реЗ рдХреЛрдИ рднреА рдЙрдкрдХрд░рдг рдЬреЛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рддрд╛ рд╣реИ рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдХреЛрдб-рдЪреЗрдХ рдХрд░рддрд╛ рд╣реИред рдЖрдкрдХреЗ рд╕реБрдЭрд╛рд╡ рдХрд╛ рдореБрдЦреНрдп рднрд╛рдЧ рдореБрдЭреЗ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИ "рд╢рд╛рдпрдж рд╣рдореЗрдВ рдЕрдиреНрдп рдкрд░рд┐рд╡рд░реНрдзрди рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рдиреА рдЪрд╛рд╣рд┐рдП"ред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЙрдирдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рд╣реЛрдЧрд╛, рдФрд░ рдпрд╣ рднреА рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╣рдо рд╕реНрдкрд╖реНрдЯ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд┐рдирд╛ рд╕рд┐рдВрдЯреИрдХреНрд╕ (рдЬреИрд╕реЗ рдЬрд╛рд╡рд╛ рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рдПрдиреЛрдЯреЗрд╢рди) рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдЕрдЧрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рдерд╛, рддрдм рднреА рд╣рдореЗрдВ рдЕрдкрдиреЗ рджреНрд╡рд╛рд░рд╛ рдкреЗрд╢ рдХрд┐рдП рдЧрдП рдХрд┐рд╕реА рднреА рдирдП рд╢рдмреНрджрд╛рд░реНрде рдХреЗ рд╕рднреА рдирд┐рд╣рд┐рддрд╛рд░реНрдереЛрдВ рдкрд░ рдзреНрдпрд╛рди рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдФрд░ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЕрднреА рднреА рднрд╛рд╖рд╛ рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛрдВрдЧреЗ рдЬрд┐рдирдХреЗ рд▓рд┐рдП рд╕рднреА рдЙрдкрдХрд░рдгреЛрдВ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА (рдЧреЛрдлрдПрдордЯреА рдХреЛ рдЫреЛрдбрд╝рдХрд░, рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ)ред рд╕рдВрддреБрд▓рди рдкрд░ рдпрд╣ рдЖрд╕рд╛рди рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдпрд╛ рджреВрд╕рд░реЗ рдкреНрд░рдХрд╛рд░ рдХреА рдореЗрдЯрд╛-рднрд╛рд╖рд╛ рдмрдирд╛рдиреЗ рдХреЗ рдмрдЬрд╛рдп рд╣рдореЗрдВ рдПрдХ-рдПрдХ рдХрд░рдХреЗ рдЙрди рд░реВрдкреЛрдВ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рд╕реНрдкрд╖реНрдЯ рддрд░реАрдХрд╛ рдЦреЛрдЬрдирд╛ рдЬрд╛рд░реА рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред

@Merovius FWIW, рдореИрдВ рдХрд╣реВрдВрдЧрд╛ рдХрд┐ [2]uintptr рдФрд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ {} рдореЗрдВ рд╕рдорд╛рди рд╕реНрдореГрддрд┐ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдирд╣реАрдВ рд╣реИред рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕{} рдПрдХ [2]рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИредрд╕реВрдЪрдХ [2]uintptr рдирд╣реАрдВ рд╣реИред рдПрдХ uintptr рдФрд░ рдПрдХ рд╕реВрдЪрдХ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рд╣реИрдВред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХрд╛ рд╕рд╛рдорд╛рдиреНрдп рдмрд┐рдВрджреБ рд╕рд╣реА рд╣реИ, рдХрд┐ рд╣рдо рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдЙрд╕ рддрд░рд╣ рдХреА рдЪреАрдЬрд╝ рдХреЗ рд╕реАрдзреЗ рд░реВрдкрд╛рдВрддрд░рдг рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ, рдХреНрдпрд╛ рдЖрдк рдЗрдВрдЯрд░рдлрд╝реЗрд╕{} рд╕реЗ [2]*рдмрд╛рдЗрдЯ рдореЗрдВ рднреА рдХрдирд╡рд░реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдпрд╣рд╛рдВ рдЬрд░реВрд░рдд рд╕реЗ рдХрд╣реАрдВ рдЬреНрдпрд╛рджрд╛ рд╣реИред

@jimmyfrasche рдФрд░ @nigeltao , re Godoc: рдореИрдВ рдорд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ рд╣рдореЗрдВ рднреА рдЬрд▓реНрджреА рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИред рдореИрдВ рд╕рд╣рдордд рд╣реВрдВ рдХрд┐ рд╣рдореЗрдВ рдЗрд╕ рдзрд╛рд░рдгрд╛ рдХреЛ рд╣рд╛рд░реНрдб-рдХреЛрдб рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП "рдирдИ рд╕реБрд╡рд┐рдзрд╛ - рдЬреЛ рднреА рд╣реЛ - рдХреЗрд╡рд▓ рдХреЛрдбрдмреЗрд╕ рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдПрдЧреА"ред рдЗрд╕рдХреЗ рдЕрдиреНрдп рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЙрдкрдпреЛрдЧ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ рдирд┐рдЧреЗрд▓ рдХреЛ рдЙрдкрдирд╛рдореЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдбреНрд░рд╛ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдкреИрдХреЗрдЬ рд▓рд┐рдЦрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд┐рд▓рд╛ред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдкрджрд╛рд╡рдирдд рдЪреАрдЬреЛрдВ рдХреЛ рдЙрдирдХреЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдмрд╣рд┐рд╖реНрдХреГрдд рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬреИрд╕рд╛ рдХрд┐ рдЬрд┐рдореА рдиреЗ рдХрд╣рд╛ рдерд╛ред рдпрджрд┐ рдХреЛрдИ рд╡рд╣рд╛рдВ рдирд╣реАрдВ рд╣реИ рддреЛ рдореИрдВрдиреЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рдбреЙрдХреНрдЯрд░ рдЯрд┐рдкреНрдкрдгреА рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╣рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рднреА рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ (рдЖрдорддреМрд░ рдкрд░ рдмреЛрд▓рдирд╛) рд╕реЗ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреБрд░рд╛рдиреЗ рдЧреЛ 1.8 рдЙрдкрдирд╛рдореЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рджрд┐рдпрд╛ рдЧрдпрд╛

type ByteBuffer => bytes.Buffer

рд╣рдо рдпрд╣ рдХрд╣рддреЗ рд╣реБрдП рдПрдХ рдбреЙрдХреНрдЯрд░ рдЯрд┐рдкреНрдкрдгреА рдХреЛ рд╕рдВрд╢реНрд▓реЗрд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ "рдмрд╛рдЗрдЯрдмрдлрд╝рд░ рдмрд╛рдЗрдЯреНрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдирд╛рдо рд╣реИред рдмрдлрд╝рд░", рд▓реЗрдХрд┐рди рдпрд╣ рдкрд░рд┐рднрд╛рд╖рд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рдмреЗрдорд╛рдиреА рд▓рдЧрддрд╛ рд╣реИред рдЕрдЧрд░ рдХреЛрдИ рдЖрдЬ "рдЯрд╛рдЗрдк рдПрдХреНрд╕ рд╕реНрдЯреНрд░рдХреНрдЪрд░ {}" рд▓рд┐рдЦрддрд╛ рд╣реИ, рддреЛ рд╣рдо "рдПрдХреНрд╕ рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдХреЗ рд▓рд┐рдП рдирд╛рдорд┐рдд рдЯрд╛рдЗрдк {}" рдХреЛ рд╕рдВрд╢реНрд▓реЗрд╖рд┐рдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред

@iand , рдзрдиреНрдпрд╡рд╛рджред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЗ рд▓рд┐рдП рдкреБрд░рд╛рдиреЗ рдкреИрдХреЗрдЬ рд╕реЗ рд╕рдЯреАрдХ рдкрд░рд┐рднрд╛рд╖рд╛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдирдП рдкреИрдХреЗрдЬ рдХреЗ рд▓реЗрдЦрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рджреЛрдиреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рд╡рд╛рд▓реА рдПрдХ рдШреЛрд╖рдгрд╛ рднреА рд╣реИ, рдЬреИрд╕реЗ (рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдмрдирд╛рдирд╛):

package old
type T { x int }

package new
import "old"
type T1 { x int }
substitutable T1 <- old.T

рдореИрдВ рд╕рд╣рдордд рд╣реВрдВ рдХрд┐ рдЖрдпрд╛рдд рдЙрд▓рдЯрдлреЗрд░ рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рд╣реИ рдФрд░ рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рдПрдХ рд╢реЛ-рд╕реНрдЯреЙрдкрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЪрд▓реЛ рдЗрд╕реЗ рдЫреЛрдбрд╝ рджреЗрдВред рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ рдХреЛрдбрдмреЗрд╕ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдЬреИрд╕реЗ рдпрд╣ рдПрдХ рдирд╛рдЬреБрдХ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣реИ: рдЕрдм рдкреИрдХреЗрдЬ рдирдП рдХреЛ рдкреБрд░рд╛рдиреЗ рдкреИрдХреЗрдЬ рдореЗрдВ рдПрдХ рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдлрд╝реАрд▓реНрдб рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрджрд▓рд╛рд╡ рд╕реЗ рддреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдпреЛрдЧреНрдп рд░реЗрдЦрд╛ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, T1 рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдПрдХ рд╣реА рд╕рдВрднрд╛рд╡рд┐рдд рдкрд░рд┐рднрд╛рд╖рд╛ рд╣реИ: рдмрд┐рд▓реНрдХреБрд▓ рдкреБрд░рд╛рдиреЗ рдХреЗ рд╕рдорд╛рдиред рдпрджрд┐ рджреЛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреА рдЕрднреА рднреА рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкрд░рд┐рднрд╛рд╖рд╛рдПрдБ рд╣реИрдВ рддреЛ рдЖрдкрдХреЛ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреА рдЪрд┐рдВрддрд╛ рдХрд░рдиреА рд╣реЛрдЧреА: рдХреНрдпрд╛ рд╡рд┐рдзрд┐ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рднреА рдореЗрд▓ рдЦрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП? рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдЖрдк рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рдПрдХ рдЯреА рдбрд╛рд▓рддреЗ рд╣реИрдВ {} рдФрд░ рдлрд┐рд░ рдЯреА 1 рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рджрд╛рд╡реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓рддреЗ рд╣реИрдВ рдФрд░ рдПрдо () рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ? рдХреНрдпрд╛ рдЖрдкрдХреЛ T1.M рдорд┐рд▓рддрд╛ рд╣реИ? рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рд╕реАрдзреЗ T1 рдирд╛рдо рджрд┐рдП рдмрд┐рдирд╛ рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ {M ()} рдХреЗ рд░реВрдк рдореЗрдВ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓рддреЗ рд╣реИрдВ, рдФрд░ M () рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ? рдХреНрдпрд╛ рдЖрдкрдХреЛ рдЯреАрдПрдо рдорд┐рд▓рддрд╛ рд╣реИ? рд╕реНрд░реЛрдд рдкреЗрдбрд╝ рдореЗрдВ рджреЛрдиреЛрдВ рдкрд░рд┐рднрд╛рд╖рд╛рдПрдВ рд╣реЛрдиреЗ рдХреА рдЕрд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рдХрд╛рд░рдг рдмрд╣реБрдд рдЬрдЯрд┐рд▓рддрд╛ рд╣реИред

рдмреЗрд╢рдХ, рдЖрдк рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдпреЛрдЧреНрдп рд░реЗрдЦрд╛ рдмрд╛рдХреА рдХреЛ рдмреЗрдорд╛рдиреА рдмрдирд╛рддреА рд╣реИ рдФрд░ рдЯрд╛рдЗрдк рдЯреА 1 рдпрд╛ рдХрд┐рд╕реА рднреА рддрд░реАрдХреЗ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред рд▓реЗрдХрд┐рди рдлрд┐рд░ рдпрд╣ рдореВрд▓ рд░реВрдк рд╕реЗ рд▓реЗрдЦрди рдЬреИрд╕рд╛ рд╣реА рд╣реИ (рдкреБрд░рд╛рдиреЗ рдЙрдкрдирд╛рдо рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдореЗрдВ) type T1 => old.T ред

рдЖрдпрд╛рдд рдЧреНрд░рд╛рдлрд╝ рдХреЗ рдореБрджреНрджреЗ рдкрд░ рд╡рд╛рдкрд╕ рдЖрдирд╛, рд╣рд╛рд▓рд╛рдБрдХрд┐ рд▓реЗрдЦ рдореЗрдВ рд╕рднреА рдЙрджрд╛рд╣рд░рдгреЛрдВ рдиреЗ рдкреБрд░рд╛рдиреЗ рдХреЛрдб рдХреЛ рдирдП рдХреЛрдб рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рд╣реИ, рдпрджрд┐ рдкреИрдХреЗрдЬ рдЧреНрд░рд╛рдлрд╝ рдРрд╕рд╛ рдерд╛ рдХрд┐ рдирдП рдХреЛ рдкреБрд░рд╛рдиреЗ рдХреЛ рдЖрдпрд╛рдд рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ, рддреЛ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рди рдХреЛ рдЗрд╕рдореЗрдВ рд░рдЦрдирд╛ рднреА рдЙрддрдирд╛ рд╣реА рдкреНрд░рднрд╛рд╡реА рд╣реИред рд╕рдВрдХреНрд░рдордг рдХреЗ рджреМрд░рд╛рди рдирдпрд╛ рдкреИрдХреЗрдЬред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рдХрд┐рд╕реА рднреА рд╕рдВрдХреНрд░рдордг рдореЗрдВ, рдирдП рдкреИрдХреЗрдЬ рдХреЗ рд▓реЗрдЦрдХ рдФрд░ рдкреБрд░рд╛рдиреЗ рдкреИрдХреЗрдЬ рдХреЗ рд▓реЗрдЦрдХ рдХреЗ рдмреАрдЪ рд╢рд╛рдпрдж рдХреЛрдИ рдЙрдкрдпреЛрдЧреА рдЕрдВрддрд░ рдирд╣реАрдВ рд╣реИред рдЕрдВрдд рддрдХ, рд▓рдХреНрд╖реНрдп рдпрд╣ рд╣реИ рдХрд┐ рдХреЛрдб рдХреЛ рдирдП рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдкреБрд░рд╛рдиреЗ рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рджреЛрдиреЛрдВ рд▓реЗрдЦрдХреЛрдВ (рдпрджрд┐ рд╡реЗ рдЕрд▓рдЧ рд╣реИрдВ) рдХреЛ рддрдм рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдФрд░ рджреЛрдиреЛрдВ рдХреЛ рдмреАрдЪ рдХреЗ рджреМрд░рд╛рди рднреА рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреА рд╕рдордиреНрд╡рд┐рдд рд╕рдВрдЧрддрддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЪрд╛рд╣реЗ рд╕реНрдкрд╖реНрдЯ (рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рди) рдпрд╛ рдирд┐рд╣рд┐рдд (рдкреНрд░рдХрд╛рд░ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛рдПрдВ рдмрд┐рд▓реНрдХреБрд▓ рдореЗрд▓ рдЦрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреИрд╕рд╛ рдХрд┐ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдореЗрдВ рд╣реИ)ред

@rsc рдХрд┐ рдЯреВрдЯрдирд╛ рдкрд░рд┐рджреГрд╢реНрдп рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдЕрд▓рд┐рдпрд╛рд╕рд┐рдВрдЧ рдХреЛ рджреНрд╡рд┐рджрд┐рд╢ рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдкрд┐рдЫрд▓реЗ рдЙрдкрдирд╛рдо рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЗ рддрд╣рдд рдирдП рдкреИрдХреЗрдЬ рдореЗрдВ рдХреЛрдИ рднреА рдмрджрд▓рд╛рд╡ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдХрд┐рд╕реА рднреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдкреИрдХреЗрдЬ рдХреЛ рддреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдХрд┐ рдкреНрд░рдХрд╛рд░ рдХреЛ рдЕрд▓рд┐рдпрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реЛрддрд╛ рд╣реИред

@iand рдпрджрд┐ рдХреЗрд╡рд▓ рдПрдХ рдкрд░рд┐рднрд╛рд╖рд╛ рд╣реИ (рдХреНрдпреЛрдВрдХрд┐ рджреВрд╕рд░рд╛ рдХрд╣рддрд╛ рд╣реИ "

#13467 рдореЗрдВ, @joegrasse рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдпрд╣ рдкреНрд░рд╕реНрддрд╛рд╡ рд╕рдорд╛рди рд╕реА рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рдХрдИ рдкреИрдХреЗрдЬреЛрдВ рдореЗрдВ рд╕реАрдЬреАрдУ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рд╕рдорд╛рди рд╕реА рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рд╕рдорд╛рди рдЧреЛ рдкреНрд░рдХрд╛рд░ рдмрдирдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рддрдВрддреНрд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдмрд┐рд▓реНрдХреБрд▓ рд╡реИрд╕реА рдирд╣реАрдВ рд╣реИ рдЬреИрд╕реА рдХрд┐ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рджреЛрдиреЛрдВ рд╕рдорд╕реНрдпрд╛рдПрдВ рдЯрд╛рдЗрдк рдПрд▓рд┐рдпрд╛рд╕рд┐рдВрдЧ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВред

рдХреНрдпрд╛ рдЙрдкрдирд╛рдореЛрдВ рдкрд░ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд/рд╕реНрд╡реАрдХреГрдд/рдЕрд╕реНрд╡реАрдХреГрдд рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ/рд╕реАрдорд╛рдУрдВ рдХрд╛ рдХреЛрдИ рд╕рд╛рд░рд╛рдВрд╢ рд╣реИ? рдХреБрдЫ рд╕рд╡рд╛рд▓ рдЬреЛ рджрд┐рдорд╛рдЧ рдореЗрдВ рдЖрддреЗ рд╣реИрдВ рд╡реЗ рд╣реИрдВ:

  • рдХреНрдпрд╛ рдЖрд░рдПрдЪрдПрд╕ рд╣рдореЗрд╢рд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдпреЛрдЧреНрдп рд╣реЛрддрд╛ рд╣реИ?
  • рдпрджрд┐ рдЙрдкрдирд╛рдореЛрдВ рдХреЗ рдЙрдкрдирд╛рдореЛрдВ рдХреА рдЕрдиреБрдорддрд┐ рд╣реИ, рддреЛ рд╣рдо рдЙрдкрдирд╛рдо рдЪрдХреНрд░реЛрдВ рдХреЛ рдХреИрд╕реЗ рд╕рдВрднрд╛рд▓реЗрдВрдЧреЗ?
  • рдХреНрдпрд╛ рдЙрдкрдирд╛рдо рдирд┐рд░реНрдпрд╛рдд рди рдХрд┐рдП рдЧрдП рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛рдУрдВ рдХреЛ рдирд┐рд░реНрдпрд╛рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП?
  • рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдЖрдк рдПрдХ рдЙрдкрдирд╛рдо рдПрдореНрдмреЗрдб рдХрд░рддреЗ рд╣реИрдВ? (рдЖрдк рдПрдореНрдмреЗрдбреЗрдб рдлрд╝реАрд▓реНрдб рддрдХ рдХреИрд╕реЗ рдкрд╣реБрдБрдЪрддреЗ рд╣реИрдВ)
  • рдХреНрдпрд╛ рдЙрдкрдирд╛рдо рдирд┐рд░реНрдорд┐рдд рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рдкреНрд░рддреАрдХреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИрдВ?
  • ldflags рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЗрдВрдЬреЗрдХреНрд╢рди: рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рд╣рдо рдПрдХ рдЙрдкрдирд╛рдо рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рддреЗ рд╣реИрдВ?

@rsc рдореИрдВ рдмрд╛рддрдЪреАрдд рдХреЛ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдирд╣реАрдВ

рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╕реНрдерд╛рдирд╛рдкрдиреНрди рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЗ рддрд╣рдд рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╡реНрдпрд╡рд╕реНрдерд╛ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ рдХрд┐ рдХреЗрд╡рд▓ рдкреБрд░рд╛рдиреЗ рдФрд░ рдирдП рджреЛрдиреЛрдВ рдХрд╛ рдПрдХ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЧреНрд░рд╛рд╣рдХ рд╣реА рдЯреВрдЯреЗрдВрдЧреЗред рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕рдВрднрд╡ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдирд┐рд░реНрджреЗрд╢ рдХреЛ рддрднреА рдорд╛рдиреНрдп рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬрдм рд╕рдВрдХрд▓рдХ "рдирдП" рдкреИрдХреЗрдЬ рдореЗрдВ "рдкреБрд░рд╛рдиреЗ" рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рддрд╛ рд╣реИред

@thwd рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЕрднреА рддрдХ рдПрдХ рдЕрдЪреНрдЫрд╛ рд░рд╛рдЗрдЯрдЕрдк рд╣реИред рдореЗрд░реА рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ:

  • рдЙрдкрдирд╛рдо рдЪрдХреНрд░ рдПрдХ рдЧреИрд░-рдореБрджреНрджрд╛ рд╣реИрдВред рдкреИрдХреЗрдЬ-рдХреНрд░реЙрд╕рд┐рдВрдЧ рдЙрдкрдирд╛рдореЛрдВ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдпрд╛рдд-рдЪрдХреНрд░ рдХреЗ рдХрд╛рд░рдг рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдЪрдХреНрд░ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рд╣реИред рдЧреИрд░ рдкреИрдХреЗрдЬ-рдХреНрд░реЙрд╕рд┐рдВрдЧ рдЙрдкрдирд╛рдореЛрдВ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЙрдиреНрд╣реЗрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреЛ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдХреНрд░рдо рдореЗрдВ рдЪрдХреНрд░реЛрдВ рдХреЗ рд╕рдорд╛рди рд╣реА рд╣реИред рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, рдореИрдВ рдЙрдкрдирд╛рдореЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдирд╛рдо рд░рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдХреНрд░рдорд┐рдХ рдорд░рдореНрдордд рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓реЛрдВ рддрдХ рд╕реАрдорд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП (рдКрдкрд░ рдореЗрд░реА рдЯрд┐рдкреНрдкрдгреА рджреЗрдЦреЗрдВ) рдФрд░ рдпрд╣ рджреБрдЦрдж рд╣реЛрдЧрд╛, рдЕрдЧрд░ рдкреИрдХреЗрдЬ рдП рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреЛ рдЖрдЧреЗ рдмрдврд╝рдиреЗ рд╕реЗ рддреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реИ рдПрдХ рдЙрдкрдирд╛рдо рдХреЗ рд╕рд╛рде рдкреИрдХреЗрдЬ рдмреА (рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ x/image/draw.Image рдЕрд▓рд┐рдпрд╛рд╕рд┐рдВрдЧ draw.Image рдФрд░ рдлрд┐рд░ рдХрд┐рд╕реА рдиреЗ draw.Image рдХреЛ рдПрдХ рдЙрдкрдирд╛рдо рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ image.Draw рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛, рдЗрд╕реЗ рд╕реБрд░рдХреНрд╖рд┐рдд рдорд╛рдирддреЗ рд╣реБрдПред рдЕрдЪрд╛рдирдХ x/image/draw рдЯреВрдЯ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЙрдкрдирд╛рдо рд╕реЗ рдЙрдкрдирд╛рдо рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рд╣реИ)ред
  • рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкрд╣рд▓реЗ рдЙрдкрдирд╛рдореЛрдВ рдХреЗ рд╕рдорд░реНрдердХреЛрдВ рдиреЗ рд╕рд╣рдорддрд┐ рд╡реНрдпрдХреНрдд рдХреА рд╣реИ рдХрд┐ рдЙрд░реНрдл-рдирд┐рд░реНрдпрд╛рдд рди рдХрд┐рдП рдЧрдП рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╢рд╛рдпрдж рдЕрдЬреАрдмрддрд╛ рдХреЗ рдХрд╛рд░рдг рдПрдХ рдмреБрд░рд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИ рдЬреЛ рдЗрд╕рдХрд╛ рдХрд╛рд░рдг рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдкреНрд░рднрд╛рд╡реА рд░реВрдк рд╕реЗ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЧреИрд░-рдирд┐рд░реНрдпрд╛рддрд┐рдд рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛рдУрдВ рдХреЗ рдЙрдкрдирд╛рдо рдмреЗрдХрд╛рд░ рд╣реИрдВ рдФрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд╕реНрд╡реАрдХреГрдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред
  • рдПрдореНрдмреЗрдбрд┐рдВрдЧ рдкреНрд░рд╢реНрди, AFAIK, рдЕрднреА рддрдХ рдЕрдирд╕реБрд▓рдЭрд╛ рд╣реИред # 17746 рдореЗрдВ рдПрдХ рдкреВрд░реА рдЪрд░реНрдЪрд╛ рд╣реИ, рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рдЪрд░реНрдЪрд╛ рдЬрд╛рд░реА рд░рд╣реЗрдЧреА рдпрджрд┐/рдХрдм/рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдпрд╣ рдЙрдкрдирд╛рдореЛрдВ рдХреЗ рд╕рд╛рде рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЬрд╛рдП (рд▓реЗрдХрд┐рди рдЕрднреА рднреА рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╕рдорд╛рдзрд╛рди рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдпрд╛ рдХреНрд░рдорд┐рдХ рдорд░рдореНрдордд рдХреЛ рд▓рдХреНрд╖реНрдп рдирд╣реАрдВ рдмрдирд╛рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд╣реИ) рдмрд┐рд▓рдХреБрд▓)

@iand , рдлрд┐рд░ рд╕реЗ "рдХреЗрд╡рд▓ рдкреБрд░рд╛рдиреЗ рдФрд░ рдирдП рджреЛрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЧреНрд░рд╛рд╣рдХ рдЯреВрдЯ рдЬрд╛рдПрдВрдЧреЗ", рдпрд╣ рдПрдХрдорд╛рддреНрд░ рджрд┐рд▓рдЪрд╕реНрдк рдорд╛рдорд▓рд╛ рд╣реИред рдпрд╣ рдорд┐рд╢реНрд░рд┐рдд рдЧреНрд░рд╛рд╣рдХ рд╣реИрдВ рдЬреЛ рдЗрд╕реЗ рдХреНрд░рдорд┐рдХ рдХреЛрдб рдорд░рдореНрдордд рдХрд░рддреЗ рд╣реИрдВред рдЬреЛ рдЧреНрд░рд╛рд╣рдХ рдХреЗрд╡рд▓ рдирдП рдХреЛрдб рдпрд╛ рдХреЗрд╡рд▓ рдкреБрд░рд╛рдиреЗ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рд╡реЗ рдЖрдЬ рдХрд╛рдо рдХрд░реЗрдВрдЧреЗред

рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдФрд░ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдореИрдВрдиреЗ рдЕрднреА рддрдХ рдХрд╣реАрдВ рдФрд░ рдирд╣реАрдВ рджреЗрдЦрд╛ рд╣реИ:

рдЪреВрдВрдХрд┐ рдпрд╣рд╛рдВ рдПрдХ рд╕реНрдкрд╖реНрдЯ рд▓рдХреНрд╖реНрдп рдмрдбрд╝реЗ рд╡рд┐рдХреЗрдиреНрджреНрд░реАрдХреГрдд рдХреЛрдбрдмреЗрд╕ рдореЗрдВ рдмрдбрд╝реЗ, рдХреНрд░рдорд┐рдХ рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдирд╛ рд╣реИ, рдРрд╕реА рд╕реНрдерд┐рддрд┐рдпрд╛рдВ рд╣реЛрдВрдЧреА рдЬрд╣рд╛рдВ рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдорд╛рд▓рд┐рдХ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреА рд╕рдлрд╛рдИ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдЕрдЬреНрдЮрд╛рдд рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЛ рдЕрдкрдирд╛ рдХреЛрдб рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА (рдЕрдВрддрд┐рдо рдореЗрдВ " рдкреБрд░рд╛рдиреЗ рдПрдкреАрдЖрдИ рдХреЛ рд░рд┐рдЯрд╛рдпрд░ рдХрд░реЗрдВ" рдЪрд░рдг)ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рддрд░реАрдХрд╛ рдПрдХ рдмрд╣рд┐рд╖реНрдХрд░рдг рдЪреЗрддрд╛рд╡рдиреА рдЬреЛрдбрд╝рдирд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЧреЛ рдХрдВрдкрд╛рдЗрд▓рд░ рдореЗрдВ рдХреЛрдИ рдЪреЗрддрд╛рд╡рдиреА рдирд╣реАрдВ рд╣реИред

рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХреА рд╕рдВрдХрд▓рдХ рдЪреЗрддрд╛рд╡рдиреА рдХреЗ рдмрд┐рдирд╛, рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдорд╛рд▓рд┐рдХ рдХреЛ рдХреИрд╕реЗ рд╡рд┐рд╢реНрд╡рд╛рд╕ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдХреЛ рдкреВрд░рд╛ рдХрд░рдирд╛ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ?

рдПрдХ рдЙрддреНрддрд░ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреА рд╕рдВрд╕реНрдХрд░рдг рдпреЛрдЬрдирд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ - рдпрд╣ рдПрдХ рдирдП рдЕрд╕рдВрдЧрдд рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреА рдПрдХ рдирдИ рд░рд┐рд▓реАрдЬ рд╣реИред рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╡рд░реНрдЬрдирд┐рдВрдЧ рд╕рдВрдкреВрд░реНрдг рдЙрддреНрддрд░ рд╣реЛ, рдЙрдкрдирд╛рдо рдЯрд╛рдЗрдк рди рдХрд░реЗрдВред

рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ, рдкреБрд╕реНрддрдХрд╛рд▓рдп рд▓реЗрдЦрдХ рдХреЛ "рдмрд╣рд┐рд╖реНрдХрд░рдг рдЪреЗрддрд╛рд╡рдиреА" рдЬреЛрдбрд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдВрдХрд▓рди _error_ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдкрд╖реНрдЯ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЗ рд╕рд╛рде рдЙрдиреНрд╣реЗрдВ рдкреНрд░рджрд░реНрд╢рди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ? рдореИрдВ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ:

Error: os.time is obsolete, use time.time instead. Run "go upgrade" to fix this.

рдкреНрд░рдХрд╛рд░ рдХреЗ рдЙрдкрдирд╛рдореЛрдВ рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЗрд╡рд▓ "рдкреБрд░рд╛рдиреЗ рдЯрд╛рдЗрдк рдХреЗ рд╕рднреА рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рдиреНрдпреВ рдЯрд╛рдЗрдк рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдЧрд╛", рд▓реЗрдХрд┐рди рд╕реВрдХреНрд╖реНрдорддрд╛рдПрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ, рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИред

рд╡реИрд╕реЗ рднреА, рдпрд╣ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд▓реЗрдЦрдХ рдХреЛ рд╕рднреА рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЛ рдЪреЗрддрд╛рд╡рдиреА рджреЗрдиреЗ рдХрд╛ рд╕рд░реНрд╡реЛрддреНрддрдо рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ рдХрд┐ рдЙрдирдХрд╛ рдХреЛрдб рдЯреВрдЯрдиреЗ рд╡рд╛рд▓рд╛ рд╣реИ, рдФрд░ рдкреБрд░рд╛рдиреЗ рдПрдкреАрдЖрдИ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╣рдЯрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЙрдиреНрд╣реЗрдВ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдкреНрд░рджрд╛рди рдХрд░реЗрдЧрд╛ред

@iainmerrick рдЗрдирдХреЗ рд▓рд┐рдП рдмрдЧ рдЦреБрд▓реЗ рд╣реИрдВ: рдЧреЛрд▓рд╛рдВрдЧ/рд▓рд┐рдВрдЯ # 238 рдФрд░ рдЧреЛрд▓рдВрдЧ/рдЬреАрдбреАрдбреАрдУ # 456

рдХреНрд░рдорд┐рдХ рдХреЛрдб рдорд░рдореНрдордд рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдирд╛, рдЬреИрд╕рд╛ рдХрд┐ @rsc рдХреЗ рд▓реЗрдЦ рдореЗрдВ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рд╣реИ, рджреЛ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╡рд┐рдирд┐рдореЗрдп рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рддрд░реАрдХреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИ (рдЬреИрд╕рд╛ рдХрд┐ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб vars, funcs рдФрд░ consts рдХреЗ рд▓рд┐рдП рдореМрдЬреВрдж рд╣реИ)ред

рдЗрд╕рдХреЗ рд▓рд┐рдП рдпрд╛ рддреЛ рдПрдХ рдЙрдкрдХрд░рдг рдпрд╛ рднрд╛рд╖рд╛ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХреА рдЬрд░реВрд░рдд рд╣реИред

рдЪреВрдВрдХрд┐ рджреЛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рд╡рд┐рдирд┐рдореЗрдп рдмрдирд╛рдирд╛, рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рднрд╛рд╖рд╛ рдХреЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЛ рдмрджрд▓рдирд╛, рдХреЛрдИ рднреА рдЙрдкрдХрд░рдг рд╕рдВрдХрд▓рдХ рдХреЗ рдмрд╛рд╣рд░ рддреБрд▓реНрдпрддрд╛ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рддрдВрддреНрд░ рд╣реЛрдЧрд╛, рд╕рдВрднрд╡рддрдГ рдкреБрд░рд╛рдиреЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рднреА рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рдирдП рдкреНрд░рдХрд╛рд░ рдореЗрдВ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдХрд░ред рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдЙрдкрдХрд░рдг рдХреЛ рдЙрд╕ рдХреЛрдб рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ рдЬреЛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдирд╣реАрдВ рд╣реИ, рдЬреИрд╕реЗ рдПрдХ рд╡рд┐рдХреНрд░реЗрддрд╛ рдкреИрдХреЗрдЬ рдЬреЛ stdlib рд╕рдВрджрд░реНрдн рдкреИрдХреЗрдЬ рдХреЗ рдмрдЬрд╛рдп golang.org/x/net/context рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд▓рд┐рдП рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдпрд╛ рддреЛ рдПрдХ рдЕрд▓рдЧ рдореЗрдирд┐рдлреЗрд╕реНрдЯ рдлрд╝рд╛рдЗрд▓ рдпрд╛ рдорд╢реАрди-рдкрдардиреАрдп рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рдЖрдк рдЙрдкрдХрд░рдг рдирд╣реАрдВ рдЪрд▓рд╛рддреЗ рд╣реИрдВ рддреЛ рдЖрдкрдХреЛ рдмрд┐рд▓реНрдб рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдорд┐рд▓рддреА рд╣реИрдВред рдЗрд╕рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдм рдЧрдбрд╝рдмрдбрд╝ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдЙрдкрдХрд░рдг рдЬрд┐рддрдиреА рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ рдЙрддрдиреА рд╣реА рд╕рдорд╕реНрдпрд╛рдПрдВ рдкреИрджрд╛ рдХрд░реЗрдЧрд╛ред рдпрд╣ рдЕрднреА рднреА рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реЛрдЧреА, рдЗрди рдкреИрдХреЗрдЬреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рдХреЛ рдЗрд╕рд╕реЗ рдирд┐рдкрдЯрдирд╛ рд╣реЛрдЧрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдХреБрдЫ рд╣рдж рддрдХ рдЕрдЪреНрдЫрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╣реИред

рдпрджрд┐ рднрд╛рд╖рд╛ рдмрджрд▓реА рдЬрд╛рддреА рд╣реИ, рддреЛ рдХреЛрдб рдХреЛ рдХреЗрд╡рд▓ рдЙрд╕рдХреЗ рдЕрдиреБрд░рдХреНрд╖рдХреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдФрд░, рдЕрдзрд┐рдХрд╛рдВрд╢ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП, рдЪреАрдЬреЗрдВ рдмрд╕ рдХрд╛рдо рдХрд░рддреА рд╣реИрдВред рдЕрдиреБрд░рдХреНрд╖рдХреЛрдВ рдХреА рд╕рд╣рд╛рдпрддрд╛ рдХреЗ рд▓рд┐рдП рдЯреВрд▓рд┐рдВрдЧ рдЕрднреА рднреА рдПрдХ рд╡рд┐рдХрд▓реНрдк рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реЛрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рд╕реНрд░реЛрдд рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рд╣реИ, рдФрд░ рдХреЗрд╡рд▓ рдкреИрдХреЗрдЬ рдХреЗ рдЕрдиреБрд░рдХреНрд╖рдХреЛрдВ рдХреЛ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред

рдЬреИрд╕рд╛ рдХрд┐ @griesemer рдиреЗ рдмрддрд╛рдпрд╛ (рдореБрдЭреЗ рдпрд╛рдж рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╕реВрддреНрд░ рд╣реИрдВ) рдЧреЛ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрд▓рд┐рдпрд╛рд╕рд┐рдВрдЧ рд╣реИ, рдЬреИрд╕реЗ рд╕рд╛рдорд╛рди рдХреЗ рд▓рд┐рдП byte тЖФ uint8 , рдФрд░ рдЬрдм рдЖрдк рдПрдХ рдкреИрдХреЗрдЬ рдЖрдпрд╛рдд рдХрд░рддреЗ рд╣реИрдВ рджреЛ рдмрд╛рд░, рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕реНрдерд╛рдиреАрдп рдирд╛рдореЛрдВ рдХреЗ рд╕рд╛рде, рдПрдХ рд╣реА рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓ рдореЗрдВред

рднрд╛рд╖рд╛ рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЙрдкрдирд╛рдо рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рд╣рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рд╢рдмреНрджрд╛рд░реНрде рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рд╕реЗ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдПрдХ рдкреНрд░рдмрдВрдзрдиреАрдп рддрд░реАрдХреЗ рд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдПрдХ рднрд╛рд╖рд╛ рдкрд░рд┐рд╡рд░реНрддрди рдЕрднреА рднреА рдПрдХ рдмрдбрд╝реА рдмрд╛рдд рд╣реИ рдФрд░ рдмрд╣реБрдд рд╕реА рдЪреАрдЬреЛрдВ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдЦрд┐рд░рдХрд╛рд░ рдпрд╣рд╛рдВ рдХрд░рдирд╛ рд╕рд╣реА рд╣реИред

рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдореБрдЭреЗ рдкрддрд╛ рд╣реИ, рдПрдХ "рдХрдорд░реЗ рдореЗрдВ рд╣рд╛рдереА" рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЙрдкрдирд╛рдореЛрдВ рдХреЗ рд▓рд┐рдП, рдЙрдирдХрд╛ рдкрд░рд┐рдЪрдп рдЧреИрд░-рдЕрд╕реНрдерд╛рдпреА (рдпрд╛рдиреА "рдЧреИрд░-рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ") рдЙрдкрдпреЛрдЧреЛрдВ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред рдореИрдВрдиреЗ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЛ рджреЗрдЦрд╛ рд╣реИ рдЬрд┐рдирдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдкрд╛рд╕рд┐рдВрдЧ рдореЗрдВ рд╣реБрдЖ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, "рдПрдкреАрдЖрдИ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреИрдХреЗрдЬ рдореЗрдВ рдЯрд╛рдЗрдк рдЖрдЗрдбреЗрдВрдЯрд┐рдлрд╝рд╛рдпрд░ рдХрд╛ рдкреБрди: рдирд┐рд░реНрдпрд╛рдд рдХрд░рдирд╛")ред рдкрд┐рдЫрд▓реЗ рдкреНрд░рд╕реНрддрд╛рд╡реЛрдВ рдХреА рдЕрдЪреНрдЫреА рдкрд░рдВрдкрд░рд╛ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП, рдХреГрдкрдпрд╛ "рдкреНрд░рднрд╛рд╡" рдЙрдкрдзрд╛рд░рд╛ рдХреЗ рдЕрдВрддрд░реНрдЧрдд рдЙрдкрдирд╛рдореЛрдВ рдХреЗ рд╕рднреА рдЬреНрдЮрд╛рдд рд╡реИрдХрд▓реНрдкрд┐рдХ рдЙрдкрдпреЛрдЧреЛрдВ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░реЗрдВ ред рдЗрд╕рд╕реЗ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рдВрднрд╛рд╡рд┐рдд рд╡реИрдХрд▓реНрдкрд┐рдХ рдЙрдкрдпреЛрдЧреЛрдВ рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд░рдиреЗ рдФрд░ рд╡рд░реНрддрдорд╛рди рдЪрд░реНрдЪрд╛ рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдкреНрд░рдХрд╛рд╢ рдореЗрдВ рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд▓реЛрдЧреЛрдВ рдХреА рдХрд▓реНрдкрдирд╛ рдХреЛ рдмрдврд╝рд╛рд╡рд╛ рджреЗрдиреЗ рдХрд╛ рд▓рд╛рдн рднреА рдорд┐рд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЬреИрд╕рд╛ рдХрд┐ рдЕрднреА рд╣реИ, рдкреНрд░рд╕реНрддрд╛рд╡ рдпрд╣ рджрд┐рдЦрд╛рд╡рд╛ рдХрд░рддрд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рд▓реЗрдЦрдХ рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░ рдХреЗ рдЙрдкрдирд╛рдореЛрдВ рдХреЗ рд╕рдВрднрд╛рд╡рд┐рдд рдЙрдкрдпреЛрдЧреЛрдВ рд╕реЗ рдкреВрд░реА рддрд░рд╣ рдЕрдирдЬрд╛рди рд╣реИрдВред рд╕рд╛рде рд╣реА, рдкреБрди: рдирд┐рд░реНрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ, Rust/OCaml рдХреЛ рдХреБрдЫ рдЕрдиреБрднрд╡ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рдЙрдирдХреЗ рд▓рд┐рдП рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред

рдЕрддрд┐рд░рд┐рдХреНрдд рдкреНрд░рд╢реНрди: рдХреГрдкрдпрд╛ рд╕реНрдкрд╖реНрдЯ рдХрд░реЗрдВ рдХрд┐ рдХреНрдпрд╛ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЙрдкрдирд╛рдо рдирдП рдкреИрдХреЗрдЬ рдореЗрдВ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдВрдЧреЗ (рдпрдХреАрдирди рдЗрдирдХреИрдкреНрд╕реБрд▓реЗрд╢рди рдХреЛ рддреЛрдбрд╝рдирд╛) рдпрд╛ рдирд╣реАрдВ? рд╕рд╛рде рд╣реА, рдХреНрдпрд╛ рдирдП рдкреИрдХреЗрдЬ рдХреЛ рдкреБрд░рд╛рдиреЗ рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдХреЗ рдирд┐рдЬреА рдХреНрд╖реЗрддреНрд░реЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдЧреА рдпрд╛ рдирд╣реАрдВ?

рдЕрддрд┐рд░рд┐рдХреНрдд рдкреНрд░рд╢реНрди: рдХреГрдкрдпрд╛ рд╕реНрдкрд╖реНрдЯ рдХрд░реЗрдВ рдХрд┐ рдХреНрдпрд╛ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЙрдкрдирд╛рдо рдирдП рдкреИрдХреЗрдЬ рдореЗрдВ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдВрдЧреЗ (рдпрдХреАрдирди рдЗрдирдХреИрдкреНрд╕реБрд▓реЗрд╢рди рдХреЛ рддреЛрдбрд╝рдирд╛) рдпрд╛ рдирд╣реАрдВ? рд╕рд╛рде рд╣реА, рдХреНрдпрд╛ рдирдП рдкреИрдХреЗрдЬ рдХреЛ рдкреБрд░рд╛рдиреЗ рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдХреЗ рдирд┐рдЬреА рдХреНрд╖реЗрддреНрд░реЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдЧреА рдпрд╛ рдирд╣реАрдВ?

рдПрдХ рдЙрдкрдирд╛рдо рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП рд╕рд┐рд░реНрдл рдПрдХ рдФрд░ рдирд╛рдо рд╣реИред рдпрд╣ рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреИрдХреЗрдЬ рдХреЛ рдирд╣реАрдВ рдмрджрд▓рддрд╛ рд╣реИред рддреЛ рдЖрдкрдХреЗ рджреЛрдиреЛрдВ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ (рдЬрдм рддрдХ рдХрд┐ рдирдпрд╛ рдкреИрдХреЗрдЬ == рдкреБрд░рд╛рдирд╛ рдкреИрдХреЗрдЬ рдирд╣реАрдВ)ред

@akavel рдЕрднреА рддрдХ, рдХреЛрдИ рдкреНрд░рд╕реНрддрд╛рд╡ рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рд╣рдо рджреЛ рджрд┐рд▓рдЪрд╕реНрдк рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ рдЬреЛ рдЧреЛ 1.8 рдЙрд░реНрдл тАЛтАЛтАЛтАЛрдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рджреМрд░рд╛рди рд╕рд╛рдордиреЗ рдЖрдИрдВред

  1. рдЙрдкрдирд╛рдо (рдпрд╛ рдХреЗрд╡рд▓ рдЙрдкрдирд╛рдо рдЯрд╛рдЗрдк рдХрд░реЗрдВ) рдбреНрд░реЙрдк-рдЗрди рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдмрдирд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗ рдЬреЛ рдЕрдиреНрдп рдкреИрдХреЗрдЬреЛрдВ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП https://go-review.googlesource.com/#/c/32145/ рджреЗрдЦреЗрдВ , рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдкреНрд░рддрд┐рдмрджреНрдз рд╕рдВрджреЗрд╢ рдореЗрдВ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдгред

  2. рдЙрдкрдирд╛рдо (рдпрд╛ рдХреЗрд╡рд▓ рдЙрдкрдирд╛рдо рдЯрд╛рдЗрдк рдХрд░реЗрдВ) рдПрдХ рдЫреЛрдЯреЗ рдПрдкреАрдЖрдИ рд╕рддрд╣ рдХреЗ рд╕рд╛рде рдПрдХ рдкреИрдХреЗрдЬ рдХреЛ рд╕рдВрд░рдЪрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧрд╛ рд▓реЗрдХрд┐рди рдмреЗрд╣рддрд░ рдЖрдВрддрд░рд┐рдХ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд▓рд┐рдП рдкреИрдХреЗрдЬреЛрдВ рдХреЗ рд╕рдВрдЧреНрд░рд╣ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдмрдбрд╝рд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд▓реЗрдХрд┐рди рдЕрднреА рднреА рдЧреНрд░рд╛рд╣рдХреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЖрдпрд╛рдд рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдПрдХ рдкреИрдХреЗрдЬ рдореМрдЬреВрдж рд╣реИред https://github.com/golang/go/issues/16339#issuecomment -232813695 рдкрд░ рдХреБрдЫ рд╣рдж рддрдХ рд╕рд╛рд░ рдЙрджрд╛рд╣рд░рдг рд╡рд░реНрдгрд┐рдд рд╣реИред

рдЙрдкрдирд╛рдореЛрдВ рдХрд╛ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд▓рдХреНрд╖реНрдп рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдХреЛрдб рдХреЛ рдкреБрди: рд╕рдХреНрд░рд┐рдп рдХрд░рдиреЗ рдХреЗ рд▓рдХреНрд╖реНрдп рдХреЗ рдкреНрд░рддрд┐ рдХрд╛рдлреА рдИрдорд╛рдирджрд╛рд░ рдирд╣реАрдВ рд╣реИрдВ, рднрд▓реЗ рд╣реА рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рдирдВрдмрд░ рдПрдХ рдкреНрд░реЗрд░рдХ рд╣реИред рдХреБрдЫ рдкреНрд░рд╕реНрддрд╛рд╡ рдирд╛рдо рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддреЗ рд╣реИрдВ, рдФрд░ рдореИрдВрдиреЗ рдЕрднреА рддрдХ рдЗрд╕рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдирд╣реАрдВ рджреЗрдЦрд╛ рд╣реИ рдХрд┐ рдкреНрд░рдХрд╛рд░ рдЖрдорддреМрд░ рдкрд░ рдЗрд╕ рддрд░рд╣ рдХреЗ рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдЕрдкрдиреА рд╕рддрд╣ рднреА рдмрджрд▓рддреЗ рд╣реИрдВред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ os.Error => error рдХрд╛ рдЙрджрд╛рд╣рд░рдг рдЕрдХреНрд╕рд░ рдЙрдкрдирд╛рдореЛрдВ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕ рддрдереНрдп рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рддрд╛ рд╣реИ рдХрд┐ os.Error рдореЗрдВ String рд╡рд┐рдзрд┐ рдереА рди рдХрд┐ Error ред рдЕрдЧрд░ рд╣рдо рд╕рд┐рд░реНрдл рдкреНрд░рдХрд╛рд░ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЙрд╕рдХрд╛ рдирд╛рдо рдмрджрд▓ рджреЗрддреЗ рд╣реИрдВ, рддреЛ рд╕рднреА рддреНрд░реБрдЯрд┐ рдкреНрд░рдмрдВрдзрди рдХреЛрдб рдХреЛ рддреЛрдбрд╝рд╛ рдЬрд╛рдПрдЧрд╛ред рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдХреЗ рджреМрд░рд╛рди рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рдЬрдЧрд╣ рд╣реИ.. рдкреБрд░рд╛рдиреА рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдирд╛рдо рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЧрд┐рд░рд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рд╣рдо рдЙрдиреНрд╣реЗрдВ рдирдП рдкреНрд░рдХрд╛рд░ рдореЗрдВ рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдирдП рдХреЛрдб рдХреЗ рд╕рд╛рде рдЕрд╕рдВрдЧрддрд┐ рдХреЛ рдмрдирд╛рдП рд░рдЦреЗрдЧрд╛ред

рдорджрдж рдХрд░рдиреЗ рдХреЗ рд╣рд┐рдд рдореЗрдВ, рдпрд╣рд╛рдБ рдПрдХ рдмреАрдЬ рд╡рд┐рдЪрд╛рд░ рд╣реИ: рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рд╣рдо рдЙрдкрдирд╛рдо рдХреЗ рдмрдЬрд╛рдп рдПрдбреЗрдкреНрдЯрд░ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдХреЛ рджреЗрдЦреЗрдВ? рдПрдХ рдПрдбреЗрдкреНрдЯрд░ рдПрдХ рдореМрдЬреВрджрд╛ рдкреНрд░рдХрд╛рд░ рдХреЛ рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рдирд╛рдо _рдФрд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕_ рджреЗрдЧрд╛, рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЙрди рдЬрдЧрд╣реЛрдВ рдкрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдореВрд▓ рдкреНрд░рдХрд╛рд░ рдкрд╣рд▓реЗ рджреЗрдЦрд╛ рдЧрдпрд╛ рдерд╛ред рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдЕрдиреБрдХреВрд▓рд┐рдд рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рдорд╛рди рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореМрдЬреВрдж рд╣реИрдВ, рдпрд╣ рдорд╛рдирдиреЗ рдХреЗ рдмрдЬрд╛рдп рдПрдбреЗрдкреНрдЯрд░ рдХреЛ рдЗрд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдпрд╣ рдХрд╛рдлреА рд╣рдж рддрдХ рдореМрдЬреВрджрд╛ type foo bar рд╡реНрдпрд╡рд╣рд╛рд░ рдЬреИрд╕рд╛ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдХреБрдЫ рдЕрддрд┐рд░рд┐рдХреНрдд рд╢рдмреНрджрд╛рд░реНрде рдХреЗ рд╕рд╛рдеред

рдЖрдИрдУ.рдмрд╛рдЗрдЯрдмрдлрд░

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣рд╛рдВ рдЕрд╕реНрдерд╛рдпреА "рдЕрдиреБрдХреВрд▓рди" рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП io.ByteBuffer рдорд╛рдорд▓реЗ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХрдВрдХрд╛рд▓ рд╣реИ:

type ByteBuffer adapts bytes.Buffer

func (old *ByteBuffer) Write(b []byte) (n int, err error) {
        buf := (*bytes.Buffer)(old)
        return buf.Write(b)
}

(... etc ...)

рддреЛ, рдЙрд╕ рдПрдбреЗрдкреНрдЯрд░ рдХреЗ рд╕рд╛рде, рдпрд╣ рдХреЛрдб рд╕рднреА рдорд╛рдиреНрдп рд╣реЛрдЧрд╛:

func newfunc(b *bytes.Buffer) { ... }
func oldfunc(b *io.ByteBuffer) { ... }

func main() {
        var newvar bytes.Buffer
        var oldvar io.BytesBuffer

        // New code using the new type obviously just works.
        newfunc(&newvar)

        // New code using the old type receive the underlying value that was adapted.
        newfunc(&oldvar)

        // Old code using the old type receive the adapted value unchanged.
        oldfunc(&oldvar)

        // Old code gets new variable adapted on the way in. 
        oldfunc(&newvar)
}

newfunc рдФрд░ oldfunc рдЗрдВрдЯрд░рдлреЗрд╕ рд╕рдВрдЧрдд рд╣реИрдВред рджреЛрдиреЛрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ *bytes.Buffer рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ, oldfunc рдЗрд╕реЗ рд░рд╛рд╕реНрддреЗ рдореЗрдВ *io.BytesBuffer рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рд╡рд╣реА рдЕрд╡рдзрд╛рд░рдгрд╛ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ, рдкрд░рд┐рдгрд╛рдо рдЗрддреНрдпрд╛рджрд┐ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддреА рд╣реИред

рдУрдПрд╕.рддреНрд░реБрдЯрд┐

рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкрд░ рднреА рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╢рд╛рдпрдж рд╡рд╣реА рддрд░реНрдХ рдмрдирд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕рдХрд╛ рдХрдВрдкрд╛рдЗрд▓рд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдереЛрдбрд╝рд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред рдпрд╣рд╛рдВ os.Error => error рд▓рд┐рдП рдПрдХ рдЙрджрд╛рд╣рд░рдг рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рдЗрд╕ рддрдереНрдп рдХреЛ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИ рдХрд┐ рд╡рд┐рдзрд┐ рдХрд╛ рдирд╛рдо рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:

package os

type Error adapts error

func (e Error) String() string { return error(e).Error() }

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдФрд░ рд╕реЛрдЪрдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рддрд░реАрдХреЗ:

func (v *T) Read(b []byte) (int, os.Error) { ... }`

рдПрдХ рдкреНрд░рдХрд╛рд░ рд▓реМрдЯрд╛рдПрдЧрд╛ рдЬрд┐рд╕рдореЗрдВ String рд╡рд┐рдзрд┐ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЖрдорддреМрд░ рдкрд░ рд╡рд┐рдкрд░реАрдд рджрд┐рд╢рд╛ рдореЗрдВ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдХреЛрдб рдзреАрд░реЗ-рдзреАрд░реЗ рддрдп рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред

_рдЕрджреНрдпрддрди: рдЖрдЧреЗ рд╕реЛрдЪрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред_

рдПрдореНрдмреЗрдбрд┐рдВрдЧ рд╕рдорд╕реНрдпрд╛

рдПрдореНрдмреЗрдбрд┐рдВрдЧ рдмрдЧ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ, рдЬрд┐рд╕рдиреЗ рдлреАрдЪрд░ рдХреЛ 1.8 рд╕реЗ рдмрд╛рд╣рд░ рдЦреАрдВрдЪ рд▓рд┐рдпрд╛, рдкрд░рд┐рдгрд╛рдо рдПрдбреЗрдкреНрдЯрд░ рдХреЗ рд╕рд╛рде рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рд╕реНрдкрд╖реНрдЯ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдПрдХ рд╣реА рдЪреАрдЬрд╝ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдирдП рдирд╛рдо рдирд╣реАрдВ рд╣реИрдВ: рдпрджрд┐ рдПрдбреЗрдкреНрдЯрд░ рдПрдореНрдмреЗрдбреЗрдб рд╣реИ, рддреЛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдлрд╝реАрд▓реНрдб рдирд╛рдо рд╣реИ рдПрдбреЗрдкреНрдЯрд░ рдЗрддрдирд╛ рдкреБрд░рд╛рдирд╛ рддрд░реНрдХ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдлрд╝реАрд▓реНрдб рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдбреЗрдкреНрдЯрд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЬрдм рддрдХ рдХрд┐ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдПрдХ рдРрд╕реЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдирд╣реАрдВ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдкреНрд░рдХрд╛рд░ рд▓реЗрддрд╛ рд╣реИред рдпрджрд┐ рдЧреИрд░-рдЕрдиреБрдХреВрд▓рд┐рдд рдкреНрд░рдХрд╛рд░ рдПрдореНрдмреЗрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рд╕рд╛рдорд╛рдиреНрдп рд╣реЛрддрд╛ рд╣реИред

рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕, рдбреЙрдХрд░

рдкреЛрд╕реНрдЯ рдореЗрдВ рдмрддрд╛рдИ рдЧрдИ рд╕рдорд╕реНрдпрд╛рдПрдВ рдЙрдкрд░реЛрдХреНрдд рдореБрджреНрджреЛрдВ рдХреЗ рдмрджрд▓рд╛рд╡ рдХреА рддрд░рд╣ рд▓рдЧрддреА рд╣реИрдВ, рдФрд░ рдкреНрд░рд╕реНрддрд╛рд╡ рджреНрд╡рд╛рд░рд╛ рд╣рд▓ рдХреА рдЬрд╛рддреА рд╣реИрдВред

рд╡рд╛рд░реНрд╕, const

рдЙрд╕ рдкрд░рд┐рджреГрд╢реНрдп рдХреЗ рддрд╣рдд рдЪрд░ рдпрд╛ рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рд╕реАрдзреЗ рдЙрдирдХреЗ рд╕рд╛рде рдирд╣реАрдВ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдЙрдирдХреЗ рдкреНрд░рдХрд╛рд░ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдпрд╛ рдирд╣реАрдВред

рдЧреЛрдбреЛрдХ

рд╣рдо рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд╣реЛрдВрдЧреЗ рдХрд┐ рдЪреАрдЬрд╝ рдПрдХ рдПрдбреЗрдкреНрдЯрд░ рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рдЕрдиреБрдХреВрд▓рд┐рдд рдЪреАрдЬрд╝ рд╕реЗ рдПрдХ рд╕реНрд╡рддрдВрддреНрд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣реЛрддрд╛ рд╣реИред

рд╡рд╛рдХреНрдп - рд╡рд┐рдиреНрдпрд╛рд╕

рдХреГрдкрдпрд╛ рдХреБрдЫ рдЕрдЪреНрдЫрд╛ рдЪреБрдиреЗрдВред ;)

@iainmerrick @zombiezen

рдХреНрдпрд╛ рд╣рдореЗрдВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдпрд╣ рднреА рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдПрдХ рдЙрдкрдирд╛рдорд┐рдд рдкреНрд░рдХрд╛рд░ рд╡рд┐рд░рд╛рд╕рдд рд╣реИ рдФрд░ рдЗрд╕реЗ рдирдП рдкреНрд░рдХрд╛рд░ рд╕реЗ рдмрджрд▓рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП? рдпрджрд┐ рд╣рдо рдкреБрд░рд╛рдиреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдмрд╣рд┐рд╖реНрдХреГрдд рдХреЗ рд░реВрдк рдореЗрдВ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЧреЙрд▓рд┐рдВрдЯ, рдЧреЛрдбреЛрдХ рдФрд░ рдЗрд╕реА рддрд░рд╣ рдХреЗ рдЙрдкрдХрд░рдгреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдПрд▓рд┐рдпрд╛рд╕рд┐рдВрдЧ рдкреНрд░рдХрд╛рд░ рдХреЗ рджреБрд░реБрдкрдпреЛрдЧ рдХреЛ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд░реВрдк рд╕реЗ рд╕реАрдорд┐рдд рдХрд░ рджреЗрдЧрд╛ред рдФрд░ рдЕрд▓рд┐рдпрд╛рд╕рд┐рдВрдЧ рдлреАрдЪрд░ рдХреЗ рджреБрд░реБрдкрдпреЛрдЧ рдХреА рдЕрдВрддрд┐рдо рдЪрд┐рдВрддрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рджреЛ рдЕрд╡рд▓реЛрдХрди:

1. рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рдВрджрд░реНрднреЛрдВ рдХреЗ рд╢рдмреНрджрд╛рд░реНрде рд╕рдорд░реНрдерд┐рдд рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреЗ рд╣реИрдВ

рдЧреБрд╕реНрддрд╛рд╡реЛ рдХреЗ рдкреНрд░рд╕реНрддрд╛рд╡ рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рдВрджрд░реНрднреЛрдВ рдФрд░ рдкрд░рд┐рдгрд╛рдореА рд╢рдмреНрджрд╛рд░реНрде рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдкрд░ рдЕрдзрд┐рдХ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рд░реЙрд╕ рдХреЗ рдирдП рдкреНрд░рд╕реНрддрд╛рд╡ рдореЗрдВ рдПрдХ рдирдпрд╛ рд╕рд┐рдВрдЯреИрдХреНрд╕ type OldAPI = newpkg.newAPI ред рд▓реЗрдХрд┐рди рд╢рдмреНрджрд╛рд░реНрде рдХреНрдпрд╛ рд╣реИрдВ? рдХреНрдпрд╛ OldAPI рдХреЛ рдкреБрд░рд╛рдиреЗ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рддрд░реАрдХреЛрдВ рдпрд╛ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рд╕рд╛рде рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ? рдПрдХ рдЙрддреНрддрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╣рд╛рдБ рдорд╛рдирддреЗ рд╣реБрдП рд╕рдВрдЧрддрддрд╛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рднреА рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╡рд┐рдзрд┐рдпреЛрдВ рдФрд░ OldAPI рдХреЗ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП newAPI рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ OldAPI рдХреЗ рд╕рд╛рде рдкреИрдХреЗрдЬ рдореЗрдВ рдХреЛрдИ рднреА рдХреЛрдб рдЬреЛ рдирд┐рдЬреА рдХреНрд╖реЗрддреНрд░реЛрдВ рдФрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рдЙрд╕реЗ рдХреЗрд╡рд▓ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ newAPI рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдпрд╣ рдорд╛рдирддреЗ рд╣реБрдП рдХрд┐ рд╕рдВрдХреБрд▓ рдХреА рджреГрд╢реНрдпрддрд╛ рдмрд╛рдзрд╛рдУрдВ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдирд╛ рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ рдмрд╛рд╣рд░ рд╣реИред

рд╡реИрдХрд▓реНрдкрд┐рдХ рдкрде OldAPI рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣ рд╕рднреА рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдкреБрд░рд╛рдиреЗ рддрд░реАрдХреЛрдВ рдХреЛ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдиреНрдпреВрдПрдкреАрдЖрдИ рдкрд░ рдмреЛрдЭ рдХреЛ рдХрдо рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ OldAPI рдХреЛ NewAPI рд╕реЗ рдЕрд▓рдЧ рдкреНрд░рдХрд╛рд░ рдмрдирд╛ рджреЗрдЧрд╛ред рджреЛ рдкреНрд░рдХрд╛рд░ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЗ рдмреАрдЪ рд╕рдордиреБрджреЗрд╢рди рдХреЗ рдХрд┐рд╕реА рди рдХрд┐рд╕реА рд░реВрдк рдХреЛ рдмрдирд╛рдП рд░рдЦрдирд╛ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдирд┐рдпрдо рдЬрдЯрд┐рд▓ рд╣реЛ рдЬрд╛рдПрдВрдЧреЗред рдлрд╝реАрд▓реНрдб рдЬреЛрдбрд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рд╕реЗ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓рддрд╛ рд╣реЛрдЧреАред

2. NewAPI рдХреЗ рд╕рд╛рде рдкреИрдХреЗрдЬ OldAPI рдХреЗ рд╕рд╛рде рдкреИрдХреЗрдЬ рдЖрдпрд╛рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛

OldAPI рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрд╕ рдкреИрдХреЗрдЬ O рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ OldAPI рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рд╣реЛ, NewAPI рдХреЗ рд╕рд╛рде рдкреИрдХреЗрдЬ N рдЖрдпрд╛рдд рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдкреИрдХреЗрдЬ рдПрди рдУ рдЖрдпрд╛рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд╢рд╛рдпрдж рдпрд╣ рдЗрддрдирд╛ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдореБрдЭреЗ рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдзрд╛ рд▓рдЧрддрд╛ рд╣реИред

рдЕрджреНрдпрддрди: рдкреИрдХреЗрдЬ N рдХреА рдкреИрдХреЗрдЬ O рдкрд░ рдХреЛрдИ рдирд┐рд░реНрднрд░рддрд╛ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдпрд╣ O рдХреЛ рдЖрдпрд╛рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдкреИрдХреЗрдЬ рдХреЛ рдЖрдпрд╛рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

@niemeyer рдПрдХ рд╡рд┐рдзрд┐ рдХрд╛ рдирд╛рдо рдмрджрд▓рдиреЗ рдЬреИрд╕реЗ рдкрд░рд┐рд╡рд░реНрддрди рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдзреАрд░реЗ-рдзреАрд░реЗ рд╕рдВрднрд╡ рд╣реИрдВ: рдП) рдирдИ рд╡рд┐рдзрд┐ рдЬреЛрдбрд╝реЗрдВ, рд╣реБрдб рдХреЗ рдиреАрдЪреЗ рдкреБрд░рд╛рдиреЗ рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВ (рдпрд╛ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд), рдмреА) рдзреАрд░реЗ-рдзреАрд░реЗ рд╕рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдирдИ рд╡рд┐рдзрд┐ рдореЗрдВ рдмрджрд▓реЗрдВ, рд╕реА) рдкреБрд░рд╛рдиреА рд╡рд┐рдзрд┐ рдХреЛ рд╣рдЯрд╛ рджреЗрдВред рдЖрдк рдЗрд╕реЗ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЙрдкрдирд╛рдо рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдЯрд╛рдЗрдк-рдореВрд╡рд┐рдВрдЧ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХрдорд╛рддреНрд░ рдРрд╕реА рдЪреАрдЬ рд╣реИ рдЬрд┐рд╕реЗ рдкрд╣рдЪрд╛рдирд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рдЕрднреА рддрдХ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИред рдЕрдиреНрдп рд╕рднреА рдкрд╣рдЪрд╛рдиреЗ рдЧрдП рдкрд░рд┐рд╡рд░реНрддрди рд╕рдВрднрд╡ рд╣реИрдВ, рднрд▓реЗ рд╣реА рд╡реЗ рдХрдИ рдЪрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рд╡рд┐рдзрд┐ рдХреЗ рддрд░реНрдХреЛрдВ рдХреЗ рд╕реЗрдЯ рдХреЛ рдмрд┐рдирд╛ рдирд╛рдо рдмрджрд▓реЗ рдмрджрд▓рдирд╛)ред рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рдХрдо рд╕рддрд╣ рдХреНрд╖реЗрддреНрд░ (рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрдо рдЪреАрдЬреЗрдВ) рдХреЗ рд╕рд╛рде рдПрдХ рдлрд┐рдХреНрд╕ рдЪреБрдирдирд╛ рдмреЗрд╣рддрд░ рд╣реИред

@rakyll рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, рдЕрдЧрд░ рдореИрдВ рдХреБрдЫ рдЧреИрд░-рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ (рдЬреИрд╕реЗ рд░реИрдкрд░-рдкреИрдХреЗрдЬ, рдЬреЛ рдореБрдЭреЗ рдПрдХ рдЙрддреНрдХреГрд╖реНрдЯ рдЙрдкрдпреЛрдЧ рдХреЗрд╕ рдорд┐рд▓рддрд╛ рд╣реИ) рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рдЙрдкрдирд╛рдореЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдореИрдВ рдмрд╕ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдмрд╣рд┐рд╖реНрдХрд░рдг-рдЪреЗрддрд╛рд╡рдирд┐рдпрд╛рдВ рд╢рд╛рдкрд┐рдд рд╣реЛ рдЬрд╛рддреА рд╣реИрдВред рдореБрдЭреЗ рдЗрд╕ рдмрд╛рдд рдкрд░ рдЕрдлрд╝рд╕реЛрд╕ рд╣реЛрдЧрд╛ рдХрд┐ рдЬрд┐рд╕рдиреЗ рднреА рдЙрдиреНрд╣реЗрдВ рдХреГрддреНрд░рд┐рдо рд░реВрдк рд╕реЗ рдЕрдкрдВрдЧ рдХрд┐рдпрд╛ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЕрдкрдиреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рднреНрд░рдорд┐рдд рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдореИрдВ рдирд┐рд░рд╛рд╢ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдмрд┐рдВрджреБ рдкрд░ рдЗрд╕ рдкрд░ рдмрд╣рд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд░реИрдкрд░-рдкреИрдХреЗрдЬ, рдкреНрд░реЛрдЯреЛрдмрдл рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЖрдпрд╛рдд рдпрд╛ рдЖрдВрддрд░рд┐рдХ рдкреИрдХреЗрдЬ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ-рдПрдкреАрдЖрдИ рдЗрддрдиреА рдмреБрд░реА рдЪреАрдЬ рд╣реИ (рдФрд░ рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдХрд┐рд╕реА рдПрдХ рдкрдХреНрд╖ рдХреЗ рдмрд┐рдирд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреА рдмрд╣рд╕ рдХреИрд╕реЗ рдХрд░реЗрдВред рдмрд╛рд░-рдмрд╛рд░ рд╡реЗ рдЕрдкрдардиреАрдп рд╣реИрдВ рдФрд░ рджреВрд╕рд░рд╛ рдХрд╣ рд░рд╣рд╛ рд╣реИ "рдирд╣реАрдВ рд╡реЗ рдирд╣реАрдВ рд╣реИрдВред рдпрд╣рд╛рдБ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╡рд╕реНрддреБрдирд┐рд╖реНрда рддрд░реНрдХ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ)ред

рдореБрдЭреЗ рдХрдо рд╕реЗ рдХрдо (рдЬрд╛рд╣рд┐рд░ рд╣реИ) рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рдПрдХ рдЕрдЪреНрдЫреА рдЪреАрдЬ рд╣реИрдВ рдФрд░ рдореЗрд░реА рднреА рд░рд╛рдп рд╣реИ рдХрд┐ рдПрдХ рднрд╛рд╖рд╛ рд╕реБрд╡рд┐рдзрд╛ рдЬреЛрдбрд╝рдирд╛ рдФрд░ рдХреГрддреНрд░рд┐рдо рд░реВрдк рд╕реЗ рдЗрд╕реЗ рдХреЗрд╡рд▓ рдПрдХ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕реАрдорд┐рдд рдХрд░рдирд╛ рдПрдХ рдмреБрд░реА рдмрд╛рдд рд╣реИ; рдПрдХ рдСрд░реНрдереЛрдЧреЛрдирд▓, рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдбрд┐рдЬрд╝рд╛рдЗрди рдХреА рдЧрдИ рднрд╛рд╖рд╛ рдЖрдкрдХреЛ рдпрдерд╛рд╕рдВрднрд╡ рдХрдо рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЙрддрдирд╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХреА рд╕реБрд╡рд┐рдзрд╛рдПрдВ рдпрдерд╛рд╕рдВрднрд╡ "рд╕рдВрднрд╛рд╡рд┐рдд рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЗ рдлреИрд▓реЗ рд╣реБрдП рд╡реЗрдХреНрдЯрд░ рд╕реНрдерд╛рди" рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░реЗрдВ, рдЗрд╕рд▓рд┐рдП рдПрдХ рдРрд╕реА рд╕реБрд╡рд┐рдзрд╛ рдЬреЛрдбрд╝рдирд╛ рдЬреЛ рдЕрдВрддрд░рд┐рдХреНрд╖ рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдмрд┐рдВрджреБ рдЬреЛрдбрд╝рддрд╛ рд╣реИ рдореБрдЭреЗ рдЕрдЬреАрдм рд▓рдЧрддрд╛ рд╣реИред

рдореИрдВ рдПрдХ рдФрд░, рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдирд╛рдо рдкреНрд░рд╕реНрддрд╛рд╡ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдпрджреНрдпрдкрд┐ рдЗрд╕ рдореБрджреНрджреЗ рдореЗрдВ рд╣рдо рдЬрд┐рд╕ рдореБрдЦреНрдп рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд╡рд╣ рдЯрд╛рдЗрдк _replacement_ рд╣реИ, рдЯрд╛рдЗрдк рдПрд▓рд┐рдпрд╛рд╕ рднреА рдПрдХ рдкреНрд░рдХрд╛рд░ рдкрд░ рдирд┐рд░реНрднрд░рддрд╛ рд╕реЗ рдХреЛрдб рдХреЗ рд╢рд░реАрд░ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдПрдХ рдкреНрд░рдХрд╛рд░ "рдЕрд╕реНрдерд┐рд░" рдирд┐рдХрд▓рд╛ (рдЕрд░реНрдерд╛рдд рдпрд╣ рдмрджрд▓рддрд╛ рд░рд╣рддрд╛ рд╣реИ, рд╢рд╛рдпрдж рдЕрд╕рдВрдЧрдд рддрд░реАрдХреЛрдВ рд╕реЗ)ред рддрдм рдЗрд╕рдХреЗ рдХреБрдЫ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ "рд╕реНрдерд┐рд░" рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдкреНрд░рдХрд╛рд░ рдореЗрдВ рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣ рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВ рдЬреАрдердм рдЖрджрд┐ рдкрд░ рд╡рд┐рдХрд╛рд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдВ, рдЬрд╣рд╛рдВ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рдорд╛рд▓рд┐рдХ рдФрд░ рдЙрд╕рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЬрд░реВрд░реА рдирд╣реАрдВ рдХрд┐ рдПрдХ рд╕рд╛рде рдорд┐рд▓рдХрд░ рдХрд╛рдо рдХрд░реЗрдВ рдпрд╛ рд╕реНрдерд┐рд░рддрд╛ рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рдкрд░ рд╕рд╣рдордд рд╣реЛрдВред

рдЕрдиреНрдп рдЙрджрд╛рд╣рд░рдг рд╣реЛрдВрдЧреЗ рдЬрд╣рд╛рдВ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рдкреНрд░рдХрд╛рд░ рдПрдХ рдмрдбрд╝реЗ рдпрд╛ рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рдкреИрдХреЗрдЬ рдкрд░ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рд╣рдЯрд╛рдП рдЬрд╛рдиреЗ рд╕реЗ рд░реЛрдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЬрд╣рд╛рдВ рдПрдХ рд▓рд╛рдЗрд╕реЗрдВрд╕ рдЕрд╕рдВрдЧрддрддрд╛ рдХреА рдЦреЛрдЬ рдХреА рдЧрдИ рд╣реИред

рддреЛ рдпрд╣рд╛рдБ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реЛрдЧреА:

  1. рдЙрдкрдирд╛рдо рдкреНрд░рдХрд╛рд░ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ
  2. рдЙрдкрдирд╛рдо рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХреЗ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдирд┐рдХрд╛рдп рдХреЛ рдмрджрд▓реЗрдВ
  3. рдЯрд╛рдЗрдк рдПрд▓рд┐рдпрд╛рд╕ рдХреЛ рдЯрд╛рдЗрдк рдбреЗрдлрд┐рдирд┐рд╢рди рд╕реЗ рдмрджрд▓реЗрдВред

рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдЕрдВрдд рдореЗрдВ, рджреЛ рд╕реНрд╡рддрдВрддреНрд░ рдкреНрд░рдХрд╛рд░ рд╣реЛрдВрдЧреЗ рдЬреЛ рдЕрдкрдиреА рджрд┐рд╢рд╛рдУрдВ рдореЗрдВ рд╡рд┐рдХрд╕рд┐рдд рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рд╣реЛрдВрдЧреЗред

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЗрд╕ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ:

  • рд╡рд╣рд╛рдБ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдирд╛рдо рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдореВрд▓ рдкреНрд░рдХрд╛рд░ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рд╡рд╛рд▓реЗ рдкреИрдХреЗрдЬ рдХреЛ рдмрджрд▓рдиреЗ рдХрд╛ рдХреЛрдИ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд╣реИ (рдХреНрдпреЛрдВрдХрд┐ рдорд╛рд▓рд┐рдХреЛрдВ рдХреЗ рдЗрд╕рд╕реЗ рд╕рд╣рдордд рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИ)
  • рдореВрд▓ рдкреНрд░рдХрд╛рд░ рдХреЛ рдмрд╣рд┐рд╖реНрдХреГрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рд╣рд╛рд▓рд╛рдБрдХрд┐ рдЗрд╕реЗ рдХреЛрдб рдХреЗ рдореБрдЦреНрдп рднрд╛рдЧ рдореЗрдВ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ "рд╡реАрди рдСрдл" рд╣реЛрдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ)ред

@Merovius рдЬрд┐рд╕ рдХреНрд╖рдг рдЖрдк рдкреБрд░рд╛рдиреА рдкрджреНрдзрддрд┐ рдХреЛ рд╣рдЯрд╛рддреЗ рд╣реИрдВ рдпрд╛ рдЙрд╕рдХрд╛ рдирд╛рдо рдмрджрд▓рддреЗ рд╣реИрдВ, рдЖрдк рдПрдХ рд╣реА рдмрд╛рд░ рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рддреНрдпреЗрдХ рдЧреНрд░рд╛рд╣рдХ рдХреЛ рдорд╛рд░ рджреЗрддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИрдВ, рддреЛ рдПрдХ рдмрд╛рд░ рдореЗрдВ рд╣реА рдЯреВрдЯрдиреЗ рд╕реЗ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рднрд╛рд╖рд╛ рд╕реБрд╡рд┐рдзрд╛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдкреВрд░реА рдЧреИрд░-рддреБрдЪреНрдЫ рдХрд╡рд╛рдпрдж рд╡рд┐рд╡рд╛рджрд╛рд╕реНрдкрдж рд╣реИред рд╣рдо рдХреЛрдб рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдареАрдХ рдпрд╣реА рдмрд╛рдд рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ: рдмрд╕ рдПрдХ рд╣реА рдмрд╛рд░ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдХреЙрд▓ рд╕рд╛рдЗрдЯ рдкрд░ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдирд╛рдо рдмрджрд▓реЗрдВред рдХрд┐рдпрд╛ рд╣реБрдЖред рджреЛрдиреЛрдВ рдХреНрд░рд┐рдпрд╛рдПрдВ рдХреЗрд╡рд▓ рдкрд░рдорд╛рдгреБ рдирд╛рдо рд╣реИрдВ, рдЬреЛ рдЖрдо рддреМрд░ рдкрд░ рдХреЙрд▓ рд╕рд╛рдЗрдЯреЛрдВ рдореЗрдВ рдХреЛрдб рдХреА рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддрд┐ рддрдХ рдкреВрд░реНрдг рдкрд╣реБрдВрдЪ рдорд╛рдирддреА рд╣реИрдВред рдпрд╣ Google рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдмрдбрд╝реЗ рдЦреБрд▓реЗ рд╕реНрд░реЛрдд рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдФрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рдЕрдиреБрд░рдХреНрд╖рдХ рдХреЗ рд░реВрдк рдореЗрдВ, рдпрд╣ рд╡рд╣ рджреБрдирд┐рдпрд╛ рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдореИрдВ рд░рд╣рддрд╛ рд╣реВрдВред

рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрд▓реЛрдЪрдирд╛ рдЕрдиреБрдЪрд┐рдд рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЧреЛ рдЯреАрдо рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдмрд╛рд╣рд░реА рдкрд╛рд░реНрдЯрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рд╡реЗрд╢реА рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдбрд╝реА рд▓рдВрдмрд╛рдИ рд╕реЗ рдЧреБрдЬрд░рддреА рд╣реИ, рд▓реЗрдХрд┐рди рдЬрд┐рд╕ рдХреНрд╖рдг рдЖрдк рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреЛрдб рдХреА рд╣рд░ рдПрдХ рдкрдВрдХреНрддрд┐ рддрдХ рдкрд╣реБрдВрдЪ рд╣реИ рдЬреЛ рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рдкреИрдХреЗрдЬ рдХреЛ рдХреЙрд▓ рдХрд░ рд░рд╣рд╛ рд╣реИ, рд╡рд╣ рдПрдХ рджреАрд╡рд╛рд░ рд╣реИ рдмрдЧреАрдЪрд╛ рдЬреЛ рдПрдХ рдЦреБрд▓реЗ рд╕реНрд░реЛрдд рд╕рдореБрджрд╛рдп рдХреЗ рд╕рдВрджрд░реНрдн рд╕реЗ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддрд╛ред рдПрдХ рднрд╛рд╖рд╛-рд╕реНрддрд░реАрдп рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рд╕реБрд╡рд┐рдзрд╛ рдЬреЛрдбрд╝рдирд╛ рдЬреЛ рдХреЗрд╡рд▓ рджреАрд╡рд╛рд░реЛрдВ рд╡рд╛рд▓реЗ рдмрдЧреАрдЪреЛрдВ рдХреЗ рдЕрдВрджрд░ рдХрд╛рдо рдХрд░рддреА рд╣реИ, рдХрдо рд╕реЗ рдХрдо рдХрд╣рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрд╕рд╛рдорд╛рдиреНрдп рд╣реЛрдЧреАред

@niemeyer рдореИрдВрдиреЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЦреБрдж рдХреЛ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдореИрдВ рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ рдкреБрд░рд╛рдиреЗ рдПрдкреАрдЖрдИ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреА рд╡рдХрд╛рд▓рдд рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рдерд╛, рдореИрдВ рд╕рд┐рд░реНрдл рдпрд╣ рдЗрдВрдЧрд┐рдд рдХрд░ рд░рд╣рд╛ рдерд╛ рдХрд┐ рдХреЛрдИ рднреА рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдЬрд┐рд╕реЗ рд╣рдо рдкреНрд░рдХрд╛рд░ рдХреЗ рдЙрдкрдирд╛рдореЛрдВ рдХреЗ рд╕рд╛рде рд╕рдХреНрд╖рдо рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдирд╛рдо рдмрджрд▓рдиреЗ рдХреЗ рддрд░реАрдХреЛрдВ (рдЪрд╛рд╣реЗ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рд╣реЛ рдпрд╛ рдирд╣реАрдВ) рдХреЗ рд╕рд╛рде рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдВрднрд╡ рд╣реИред рддреЛ, рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рдЖрдк рдХреНрдпрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐

  1. рдирдпрд╛ рдПрдкреАрдЖрдИ рдЬреЛрдбрд╝реЗрдВ, рдкреБрд░рд╛рдиреЗ рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рд╡рд┐рдирд┐рдореЗрдп
  2. рдзреАрд░реЗ-рдзреАрд░реЗ рдЙрдкрднреЛрдХреНрддрд╛рдУрдВ рдХреЛ рдирдП рдПрдкреАрдЖрдИ рдореЗрдВ рдмрджрд▓реЗрдВ
    3рдП. рдПрдХ рдмрд╛рд░ рдЬрдм рд╕рдм рдХреБрдЫ рдорд╛рдЗрдЧреНрд░реЗрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдпрд╛ рдмрд╣рд┐рд╖реНрдХрд░рдг рдЕрд╡рдзрд┐ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддреА рд╣реИ, рддреЛ рдкреБрд░рд╛рдиреЗ рдПрдкреАрдЖрдИ рдХреЛ рд╣рдЯрд╛ рджреЗрдВ
    3рдмреА. рджреЛрдиреЛрдВ рдПрдкреАрдЖрдИ рдХреЛ рд╣рдореЗрд╢рд╛ рдХреЗ рд▓рд┐рдП рдЖрд╕рдкрд╛рд╕ рд░рдЦрдХрд░ рдЕрдирд┐рд╢реНрдЪрд┐рддрдХрд╛рд▓реАрди рд╕реНрдерд┐рд░рддрд╛ рдкреНрд░рджрд╛рди рдХрд░реЗрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд▓реЗрдЦ рдХрд╛ рдпрд╣ рднрд╛рдЧ рджреЗрдЦреЗрдВ )

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк 3a рдмрдирд╛рдо 3b рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣рд╕ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЬреЛ рдореИрдВ рдЗрдВрдЧрд┐рдд рдХрд░ рд░рд╣рд╛ рдерд╛, рд╡рд╣ 1. рд╡рд┐рдзрд┐-рдирд╛рдореЛрдВ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдВрднрд╡ рд╣реИ рд▓реЗрдХрд┐рди рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ, рдпрд╣реА рд╡рд╣ рд╣реИред

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЕрдм рдореБрдЭреЗ рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ рд╣реИ рдХрд┐ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдЖрдкрдХреЛ рдЧрд▓рдд рд╕рдордЭрд╛ :) рдЖрдк рд╢рд╛рдпрдж рдЗрд╢рд╛рд░рд╛ рдХрд░ рд░рд╣реЗ рд╣реЛрдВрдЧреЗ, рдХрд┐ os.Error рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЗрдВрдЯрд░рдлрд╝реЗрд╕-рдкрд░рд┐рднрд╛рд╖рд╛рдПрдБ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдХрджрдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдорд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдЪ рд╣реИ; рдпрджрд┐ рдЖрдк рдПрдкреАрдЖрдИ рдХреЛ рд╣рдЯрд╛рдиреЗ рд╕реЗ рдордирд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЙрдкрдирд╛рдо рдЯрд╛рдЗрдк рдХрд░рдиреЗ рд╕реЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рддрд░реАрдХреЛрдВ рдХрд╛ рдирд╛рдо рдмрджрд▓рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдореЗрд░реЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдПрдбреЙрдкреНрдЯрд░ рд╡рд┐рдЪрд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рдХрд░ рд╕рдХреЗрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐: рдХреНрдпрд╛ рд╡рд╣ рдХрд┐рд╕реА рднреА fmt.Stringer рдХреЛ os.Error рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрдЧрд╛ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, os.Error рдорд╛рдорд▓реЗ рдореЗрдВ)?

рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ, рдПрдбреЗрдкреНрдЯрд░ рд╡рд┐рдЪрд╛рд░ рдЖрдЧреЗ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд╛рдпрдХ рд▓рдЧрддрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рдореБрдЭреЗ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рд╕рдВрджреЗрд╣ рд╣реЛред рд▓реЗрдХрд┐рди рд╕рдВрднрд╛рд╡рд┐рдд рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдХрд░реНрддрд╛рдУрдВ рдФрд░/рдпрд╛ рдЙрдкрднреЛрдХреНрддрд╛рдУрдВ рдХреЛ рддреЛрдбрд╝реЗ рдмрд┐рдирд╛ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рдзреАрд░реЗ-рдзреАрд░реЗ рд░рд┐рдлрд▓реЗрдХреНрдЯрд░ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реЛрдирд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рд▓рдХреНрд╖реНрдп рд╣реИред

@niemeyer рд╣рд╛рдВ, рдЖрдк рддреНрд░реБрдЯрд┐ рдореЗрдВ рднреА рд╡рд┐рдзрд┐ рдирд╛рдо рдмрджрд▓рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдЕрдЪреНрдЫреА рдмрд╛рдд рд▓рд╛рддреЗ рд╣реИрдВред рдпрд╣ рдХрдИ рдЬрдЯрд┐рд▓рддрд╛рдУрдВ рдХрд╛ рдкрд░рд┐рдЪрдп рджреЗрддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдРрд╕рд╛ рдХреБрдЫ рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВ рдпрд╣рд╛рдВ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдХреНрдпреЛрдВрдХрд┐ рддреНрд░реБрдЯрд┐/рдУрдПрд╕ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреЛрдб рдХрд╛ рдХреЗрд╡рд▓ рдПрдХ рдЕрдВрд╢ред рддреНрд░реБрдЯрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рддреА рд╣реИ, рдпрд╣ рдХрджрдо рд╡рд┐рдзрд┐ рдкрд░рд┐рд╡рд░реНрддрди рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рджрд░реНрджрдирд╛рдХ рд╣рд┐рд╕реНрд╕рд╛ рдерд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдХреЛрдб рд╕реНрдерд╛рди рдмрджрд▓рдиреЗ рд╕реЗ рд╡рд┐рдзрд┐ рдирд╛рдордХрд░рдг рдХреЛ рдПрдХ рд╕реНрд╡рддрдВрддреНрд░ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рди рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдпрд╣ рдХрджрдо рдЖрдЬ рд╣реЛ рд░рд╣рд╛ рдерд╛ рдФрд░ рд╣рдо рдкреИрдХреЗрдЬ рдХрд╛ рдкреБрдирд░реНрдЧрдарди рдирд┐рд░реНрдмрд╛рдз рд░реВрдк рд╕реЗ рдХрд░ рд╕рдХрддреЗ рдереЗ, рд▓реЗрдХрд┐рди рдкреБрд░рд╛рдиреА рдкрджреНрдзрддрд┐ рдХреЗ рдирд╛рдо рд╕реЗ рдЪрд┐рдкрдХреЗ рд░рд╣рддреЗ рдереЗ, рддрдм рднреА рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкреНрд░рдЧрддрд┐ рд╣реЛрдЧреАред рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдХреЛрдб рд╕реНрдерд╛рди рдкрд░ рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдирд╛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИред

рдореИрдВ рдорд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ рдЕрдЧрд░ рдХреБрдЫ рд╕рд╛рдорд╛рдиреНрдп рд╕реБрдзрд╛рд░ рдереЗ рдЬреЛ рджреЛрдиреЛрдВ рдкреНрд░рдХрд╛рд░ рдХреЗ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓рддреЗ рдереЗ, рддреЛ рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред рдореИрдВ рдирд╣реАрдВ рджреЗрдЦрддрд╛ рдХрд┐ рд╡рд╣ рдлрд┐рдХреНрд╕ рдХреНрдпрд╛ рд╣реИред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдореБрдЭреЗ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛ рдХрд┐ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгрд┐рдд рдПрдбреЗрдкреНрдЯрд░ рдХреЗ рд╕рд╛рде рдЯрд╛рдЗрдк рд╕реНрд╡рд┐рдЪ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ: рдХреНрдпрд╛ рдорд╛рди рдХрд┐рд╕реА рддрд░рд╣ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЯрд╛рдЗрдк рд╕реНрд╡рд┐рдЪ рдХреЗ рджреМрд░рд╛рди рдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ? рдкреНрд░рддрд┐рдмрд┐рдВрдм рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛? рджреЛ рдирд╛рдореЛрдВ рдХреЗ рд╕рд╛рде рдХреЗрд╡рд▓ рдПрдХ рдкреНрд░рдХрд╛рд░ рд╣реЛрдиреЗ рд╕реЗ рдХрдИ рд╕рдорд╕реНрдпрд╛рдУрдВ рд╕реЗ рдмрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рджреЛ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╣реЛрдиреЗ рд╕реЗ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИрдВ рдЬреЛ рдЖрдЧреЗ рдФрд░ рдкреАрдЫреЗ рд╕реНрд╡рддрдГ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реЛрддреА рд╣реИрдВред

@rsc рд╣рд╛рдВ, рдПрдбреЙрдкреНрдЯрд░ рд▓рдЧрд╛рддрд╛рд░ рд╣рд░ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реЛрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдЯрд╛рдЗрдк рд╕реНрд╡рд┐рдЪ рдЕрд▓рдЧ рдирд╣реАрдВ рд╣реЛрдВрдЧреЗред рд╣рдо рдПрдбреЙрдкреНрдЯрд░ рдФрд░ рдЙрд╕рдХреЗ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдкреНрд░рдХрд╛рд░ рджреЛрдиреЛрдВ рд╡рд╛рд▓реЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕реНрд╡рд┐рдЪ рдХреЛ рдордирд╛ рдХрд░реЗрдВрдЧреЗ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЕрд╕реНрдкрд╖реНрдЯ рд╣реЛрдЧрд╛ред рдореБрдЭреЗ рдХреБрдЫ рдпрд╛рдж рдЖ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрднреА рддрдХ рдкреНрд░рддрд┐рдмрд┐рдВрдм рдХреЗ рд╕рд╛рде рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рджрд┐рдЦрд╛рдИ рджреЗ рд░рд╣реА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдХреЛрдб рд╕рдВрджрд░реНрдн рдХреЛ рдпрд╛ рддреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдкреНрд░рдХрд╛рд░, рдпрд╛ рдЗрд╕рдХреЗ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЖрдЬ рдХреА рддрд░рд╣, рд╣рдо рдпрд╣ рдЬрд╛рдиреЗ рдмрд┐рдирд╛ рдХрд┐ рд╣рдо рд╡рд╣рд╛рдВ рдХреИрд╕реЗ рдкрд╣реБрдВрдЪреЗ, рд╣рдо interface{} рдореЗрдВ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддреЗ, рдЕрдЧрд░ рдпрд╣ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред

@Merovius рдКрдкрд░

@niemeyer рдЬреЛ рдареЛрд╕ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓реЗрдЧрд╛ред .(interface{String() string}) рдмрдирд╛рдо .(interface{Error() string}) рдпрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдЬреЛ рднреА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЯреБрдХрдбрд╝реЗ рдмрджрд▓ рдЧрдП рд╣реИрдВ, рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рджрд╛рд╡реЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛? рдХреНрдпрд╛ рдЪреЗрдХ рдХреЛ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕рдВрднрд╛рд╡рд┐рдд рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдкреНрд░рдХрд╛рд░реЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рд╣реИ?

@niemeyer рдирд╣реАрдВред рдПрдХ рд╡рд┐рдзрд┐ рдХрд╛ рдирд╛рдо рдмрджрд▓рдирд╛ рдЧреИрд░-рдкрд░рдорд╛рдгреБ рд░реВрдк рд╕реЗ рд╕рдВрднрд╡ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП A.Foo рд╕реЗ A.Bar рддрдХ рдПрдХ рд╡рд┐рдзрд┐ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, do

  1. рд╡рд┐рдзрд┐ A.Bar рдХреЛ рд▓рдЧрднрдЧ A.Foo рд░реИрдкрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ
  2. рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдХреЗрд╡рд▓ A.Bar рдкрд░ рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ рдХрдИ рдХрдорд┐рдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд░реЗрдВ
  3. рдпрд╛ рддреЛ рд╣рдЯрд╛рдПрдВ A.Foo , рдпрд╛ рдирд╣реАрдВ, рдЗрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдПрдХ рдмрд╣рд┐рд╖реНрдХрд░рдг рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рдЗрдЪреНрдЫреБрдХ рд╣реИрдВ рдпрд╛ рдирд╣реАрдВред

рдкрд░рд┐рд╡рд░реНрддрди рдХрд╛рд░реНрдп рддрд░реНрдХ рдЧреИрд░-рдкрд░рдорд╛рдгреБ рд░реВрдк рд╕реЗ рд╕рдВрднрд╡ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП x int рдХреЛ func Foo() рдкреИрд░рд╛рдореАрдЯрд░ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдХрд░реЗрдВ

  1. func FooWithInt(x int) { Foo(); // use x somehow; }
  2. рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ рдХрдИ рдХрдорд┐рдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреИрд░рд╛рдореАрдЯрд░ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд░реЗрдВ
  3. рдпрджрд┐ рдЖрдк рдПрдХ рдкрджрд╛рд╡рдирддрд┐ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдирд╣реАрдВ рд╣реИрдВ (рдпрд╛ рдЖрдк WithInt рд╣реЛрдиреЗ рд╕реЗ рдкрд░реЗрд╢рд╛рди рдирд╣реАрдВ рд╣реИрдВ), рддреЛ рдЖрдк рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдЕрдиреНрдпрдерд╛ рдлреВ рдХреЛ func Foo(x int) { FooWithInt(x) } рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░реЗрдВред
  4. рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ s/FooWithInt/Foo/g рдХреЗ рд╕рд╛рде рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ рдХрдИ рдХрдорд┐рдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд░реЗрдВред
  5. FooWithInt рд╣рдЯрд╛рдПрдВред

рдЪрд▓рддреА рдкреНрд░рдХрд╛рд░ (рдФрд░, рд╕рдЦреНрддреА рд╕реЗ рдмреЛрд▓рдирд╛, vars) рдХрджрдо рдЙрдард╛рдиреЗ рдХреЗ рд▓рд┐рдП , рдПрдХ рд╕рдВрд╢реЛрдзрди рдХреЗ рдмрдЬрд╛рдп, рдЖрдкрдХреЛ рдмрд╣рд┐рд╖реНрдХрд░рдг рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд░рд╣рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рдЗрд╕рд▓рд┐рдП рд╕рдВрднрд╛рд╡рд┐рдд рдЕрдЬреНрдЮрд╛рдд рдХреЛрдб рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЛ рддреЛрдбрд╝рдирд╛, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЗрд╕реЗ рд╡реНрдпрд╛рдкрдХ рдФрд░ рд╕рдордп рдкрд░ рдШреЛрд╖рдгрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ)ред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рдирд╣реАрдВ рднреА рд╣реИрдВ, рддреЛ рдПрдкреАрдЖрдИ рдХреЛ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдирд╛рдо рдпрд╛ рдЕрдиреНрдп рдЙрдкрдпреЛрдЧреА рд░реИрдкрд┐рдВрдЧ (рдПрдХреНрд╕/рдЗрдореЗрдЬ/рдбреНрд░рд╛ рджреЗрдЦреЗрдВ) рдХреЗ рд╕рд╛рде рдмрдврд╝рд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рднреА рдкреБрд░рд╛рдиреЗ рдирд╛рдо рдХреЛ рдирдП рдирд╛рдо рд╕реЗ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрддред

рдЖрдЬ рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рдХрд╛рд░реЛрдВ рдФрд░ рдЖрдЬ рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдирд╛рдо рдмрджрд▓рдиреЗ рдХреЗ рдмреАрдЪ рдХрд╛ рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рдкреВрд░реНрд╡ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдкрдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдкрд░рдорд╛рдгреБ рдкрд░рд┐рд╡рд░реНрддрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬрдмрдХрд┐ рдмрд╛рдж рдХреЗ рд▓рд┐рдП, рдЖрдк рд╕реНрд╡рддрдВрддреНрд░ рд░реЗрдкреЛ рдФрд░ рдХрдорд┐рдЯреНрд╕ рдкрд░ рдзреАрд░реЗ-рдзреАрд░реЗ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред "рдореИрдВ рдПрдХ рдкреНрд░рддрд┐рдмрджреНрдзрддрд╛ рдмрдирд╛рдКрдВрдЧрд╛ рдЬреЛ рдПрд╕/рдлреВ/рдмрд╛рд░/" рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдХрд░рдиреЗ рдХреА рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реИред

рд╡реИрд╕реЗ рднреАред рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рд╣рдо рдХрд╣рд╛рдБ рд╣реИрдВ, рдЬрд╛рд╣рд┐рд░рд╛ рддреМрд░ рдкрд░, рдПрдХ рджреВрд╕рд░реЗ рд╕реЗ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдореБрдЭреЗ рдЕрдкрдиреЗ рдкреАрдУрд╡реА рдХреЛ рд╡реНрдпрдХреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП @rsc рдХрд╛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдмрд╣реБрдд рд╕реНрдкрд╖реНрдЯ рд▓рдЧрддрд╛ рд╣реИ рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрдкрдХрд╛ рдирд╣реАрдВ рдорд┐рд▓рддрд╛ :)

@rsc рдореИрдВ рджреЛ рдЙрдЪрд┐рдд рдЙрддреНрддрд░ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВред рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рдЬреЛ рд╕рд░рд▓ рд╣реИ, рд╡рд╣ рдЙрд╕ рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╣реИ рдЬреЛ рдПрдбреЗрдкреНрдЯрд░ рдпрд╛ рдЕрдиреНрдпрдерд╛, рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рд╢рдмреНрджрд╛рд░реНрде рд▓рд╛рдЧреВ рд╣реЛрддреЗ рд╣реИрдВ рдЬрдм рдЗрдВрдЯрд░рдлрд╝реЗрд╕-рдЬреЛрд░ рджреЗрддреЗ рд╣реИрдВред рджреВрд╕рд░рд╛ рдпрд╣ рд╣реИ рдХрд┐ рдпрджрд┐ рдорд╛рди рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд╕рдВрддреБрд╖реНрдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдорд╛рди рдХрд░рддрд╛ рд╣реИ рддреЛ рдорд╛рди рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдкрд╣рд▓рд╛ рд╕рд░рд▓ рд╣реИ рдФрд░ рд╢рд╛рдпрдж рд╣рдорд╛рд░реЗ рджрд┐рдорд╛рдЧ рдореЗрдВ рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рдЬрдмрдХрд┐ рдмрд╛рдж рд╡рд╛рд▓рд╛ рд╢рд╛рдпрдж рдЗрд╕ рд╡рд┐рдЪрд╛рд░ рдХреЗ рд╕рд╛рде рдЕрдзрд┐рдХ рд╕реБрд╕рдВрдЧрдд рд╣реИ рдХрд┐ рд╣рдо рдЗрд╕реЗ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдкреНрд░рдХрд╛рд░ рдкрд░ рднреА рдЯрд╛рдЗрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

@Merovius рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдПрдХ рд╡рд┐рдзрд┐ рдХрд╛ рдирд╛рдо рдмрджрд▓рдирд╛ рддрдм рддрдХ рд╕рдВрднрд╡ рд╣реИ рдЬрдм рддрдХ _you рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕рдХрд╛ рдирд╛рдо рдирд╣реАрдВ рдмрджрд▓рддреЗ рд╣реИрдВ рдФрд░ рдХреЙрд▓ рд╕рд╛рдЗрдЯреЛрдВ рдХреЛ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдПрдХ рдирдИ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕реА рддрд░рд╣, рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреЛ рддрдм рддрдХ рд▓реЗ рдЬрд╛рдирд╛ рд╕рдВрднрд╡ рд╣реИ рдЬрдм рддрдХ _рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдХреЙрд▓ рд╕рд╛рдЗрдЯреЛрдВ рдХреЛ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдПрдХ рдирдП рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рддреЗ рд╣реИрдВред рдкреБрд░рд╛рдиреЗ рдХреЛрдб рдХреЛ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдо рд╕рднреА рд╡рд░реНрд╖реЛрдВ рд╕реЗ рдЗрди рджреЛрдиреЛрдВ рдЪреАрдЬреЛрдВ рдХреЛ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

@niemeyer рд▓реЗрдХрд┐рди рдлрд┐рд░ рд╕реЗ: рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП, рдЖрдк рдЪреАрдЬреЛрдВ рдХреЛ рд╕рднреНрдп рддрд░реАрдХреЗ рд╕реЗ рднреА рдирд╣реАрдВ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХреНрд╕/рдЫрд╡рд┐/рдбреНрд░рд╛ рджреЗрдЦреЗрдВред рдФрд░ рд╣рд░ рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ рд╕реНрдерд┐рд░рддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдРрд╕рд╛ рдкреВрд░реНрдг рджреГрд╖реНрдЯрд┐рдХреЛрдг рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ; рдореИрдВ, рд╕реНрд╡рдпрдВ, рдпрд╣ рдХрд╣рдХрд░ рдареАрдХ рд╣реВрдВ рдХрд┐ "6,12,тАж рдорд╣реАрдиреЛрдВ рдореЗрдВ $function,$type,тАж рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЖрдк рдЙрд╕ рдмрд┐рдВрджреБ рдкрд░ рдЗрд╕рд╕реЗ рджреВрд░ рдЪрд▓реЗ рдЧрдП рд╣реИрдВ" рдФрд░ рдлрд┐рд░ рдХреЗрд╡рд▓ рдЙрд╕ рдЕрд╕рдВрдмрджреНрдз рдХреЛрдб рдХреЛ рддреЛрдбрд╝ рджреЗрдВ рдЬреЛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдЙрд╕ рдмрд╣рд┐рд╖реНрдХрд░рдг рдиреЛрдЯрд┐рд╕ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░реЗрдВ (рдпрджрд┐ рдХрд┐рд╕реА рдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдПрдкреАрдЖрдИ рдХреЗ рд▓рд┐рдП рджреАрд░реНрдШрдХрд╛рд▓рд┐рдХ рд╕рдорд░реНрдерди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рд╡реЗ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕реЗ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреБрдЧрддрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рдХреЛ рдвреВрдВрдв рд╕рдХрддреЗ рд╣реИрдВ)ред рдореИрдВ рдпрд╣ рднреА рджрд╛рд╡рд╛ рдХрд░реВрдВрдЧрд╛ рдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рд▓реЛрдЧреЛрдВ рдХрд╛ рд╕реНрдерд┐рд░рддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреВрд░реНрдг рджреГрд╖реНрдЯрд┐рдХреЛрдг рдирд╣реАрдВ рд╣реИ; рд╕рд┐рдореЗрдВрдЯрд┐рдХ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рд╣рд╛рд▓рд┐рдпрд╛ рдзрдХреНрдХрд╛ рджреЗрдЦреЗрдВ, рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЗрд╡рд▓ рддрднреА рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рдЬрдм рдЖрдк рд╕рдВрдЧрддрддрд╛ рдХреЛ рддреЛрдбрд╝рдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдФрд░ рдбреЙрдХреНрдЯрд░ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рддрд░реНрдХ рджреЗрддреЗ рд╣реИрдВ рдХрд┐ рдХреИрд╕реЗ, рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рднреА, рдЖрдк рдзреАрд░реЗ-рдзреАрд░реЗ рдорд░рдореНрдордд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╕реЗ рд▓рд╛рдн рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗ рдФрд░ рдпрд╣ рдХреИрд╕реЗ рдХрдо рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдпрджрд┐ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рд╣реАрд░рд╛ рдирд┐рд░реНрднрд░рддрд╛ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЖрдк рдзреАрд░реЗ-рдзреАрд░реЗ рдорд░рдореНрдордд рдХреЗ рд▓рд┐рдП рдЙрдкрдирд╛рдореЛрдВ рдХреЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЛ рдЦрд╛рд░рд┐рдЬ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд╕реНрдерд┐рд░рддрд╛ рдкрд░ рдЖрдкрдХрд╛ рд░реБрдЦ рдирд┐рд░рдкреЗрдХреНрд╖ рд╣реИред рд▓реЗрдХрд┐рди рдореИрдВ рджрд╛рд╡рд╛ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЧреЛ рд╕рдореБрджрд╛рдп рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЕрд▓рдЧ рд╣реИ, рдХрд┐ рдЯреВрдЯрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдФрд░ рдЬрдм рд╡реЗ рд╣реЛрддреЗ рд╣реИрдВ рддреЛ рдЙрдиреНрд╣реЗрдВ рдпрдерд╛рд╕рдВрднрд╡ рд╕реБрдЪрд╛рд░реВ рд░реВрдк рд╕реЗ рдмрдирд╛рдиреЗ рдореЗрдВ рдЙрдкрдпреЛрдЧ рд╣реЛрддрд╛ рд╣реИред

@niemeyer @rsc @Merovius рдореИрдВ рдЖрдкрдХреА рдЪрд░реНрдЪрд╛ (рдФрд░ рдкреВрд░реА рдЪрд░реНрдЪрд╛) рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдореИрдВ рдЗрд╕ рдкреЛрд╕реНрдЯ рдХреЛ рдареАрдХ рдЗрд╕рдХреЗ рдмреАрдЪ рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕реНрдореИрдХ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред

рдЬрд┐рддрдирд╛ рдЕрдзрд┐рдХ рд╣рдо рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдкреБрдирд░рд╛рд╡реГрддрд┐ рдХрд░рддреЗ рд╣реИрдВ, рд╣рдо рдХрд┐рд╕реА рди рдХрд┐рд╕реА рд░реВрдк рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рд╕рд╣рд╕рдВрдпреЛрдЬрдХ рд╢рдмреНрджрд╛рд░реНрде рдХреЗ рдХрд░реАрдм рдЖрддреЗ рд╣реИрдВред рддреЛ, рдпрд╣рд╛рдБ рдПрдХ рд╡рд┐рдЪрд╛рд░ рд╣реИ: рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЙрдкрдкреНрд░рдХрд╛рд░ рд╢рдмреНрджрд╛рд░реНрде ("is-a") рд╣реИ рдЬреЛ рдареЛрд╕ рдкреНрд░рдХрд╛рд░реЛрдВ рд╕реЗ рд▓реЗрдХрд░ рдЗрдВрдЯрд░рдлреЗрд╕ рдФрд░ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рдмреАрдЪ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реИред рдореЗрд░рд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдЙрдирдХреЗ рддрд░реАрдХреЛрдВ рдХреЗ рддрд░реНрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рдкреБрдирд░рд╛рд╡рд░реНрддреА рд╕рд╣рд╕рдВрдпреЛрдЬрдХ (рд╡рд░реНрддрдорд╛рди рд╡рд┐рдЪрд░рдг рдирд┐рдпрдореЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░) рдмрдирд╛рдирд╛ рд╣реИред

рдпрд╣ рд╕рднреА рдореМрдЬреВрджрд╛ рдкреИрдХреЗрдЬреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рднрд╡рд┐рд╖реНрдп рдХреЗ рд╕рднреА рдкреИрдХреЗрдЬреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдлрд┐рд░ рднреА рд▓рд┐рдЦрд╛ рдЬрд╛рдирд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдПрдкреАрдЖрдИ рдХреЗ "рдЪрд▓рдиреЗ рдпреЛрдЧреНрдп рд╣рд┐рд╕реНрд╕реЗ" рдЗрдВрдЯрд░рдлреЗрд╕ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ (рдЕрдЪреНрдЫреЗ рдбрд┐рдЬрд╛рдЗрди рдХреЛ рднреА рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░рддреЗ рд╣реИрдВ)ред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдЗрд╕ рддрд░рд╣ рдЗрдВрдЯрд░рдлреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ (рдПрдмреА) рд╕рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдХреНрдпрд╛ рд╣рдо рдЧреЛ 1.0 рддреЛрдбрд╝ рд░рд╣реЗ рд╣реИрдВ? рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдирд╣реАрдВ рд╣реИрдВред

@thwd рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ "рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рдкреБрдирд░рд╛рд╡рд░реНрддреА рд░реВрдк рд╕реЗ рд╕рд╣рд╕рдВрдпреЛрдЬрдХ рдмрдирд╛рдиреЗ" рд╕реЗ рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЖрдорддреМрд░ рдкрд░, рд╕рдмрдЯрд╛рдЗрдкрд┐рдВрдЧ рдореЗрдВ, рд╡рд┐рдзрд┐ рддрд░реНрдХреЛрдВ рдХреЛ рд╡рд┐рдкрд░реАрдд рддрд░реАрдХреЛрдВ рдореЗрдВ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдФрд░ рдкрд░рд┐рдгрд╛рдо рд╕рд╣рд╕рдВрдпреЛрдЬрдХ рддрд░реАрдХреЛрдВ рд╕реЗ рд╣реЛрддреЗ рд╣реИрдВред рд╕рд╛рде рд╣реА, рдЖрдк рдЬреЛ рдХрд╣ рд░рд╣реЗ рд╣реИрдВ рдЙрд╕рд╕реЗ рдХрдВрдХреНрд░реАрдЯ (рдЧреИрд░-рдЗрдВрдЯрд░рдлрд╝реЗрд╕) рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рднреА рдореМрдЬреВрджрд╛ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

@thwd рдореИрдВ рдЕрд╕рд╣рдордд рд╣реВрдВ, рдХрд┐ рдЗрдВрдЯрд░рдлреЗрд╕ (рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рд╕рдм рдХреБрдЫ рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА (рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рдХрднреА рдирд╣реАрдВ рдЬрд╛рдирддреЗ рдХрд┐ рдЖрдк рдХрд┐рд╕реА рдмрд┐рдВрджреБ рдкрд░ рдХреНрдпрд╛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд/рдмрджрд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ), рдЬрд┐рд╕рдореЗрдВ vars/consts/funcs/тАж рдФрд░ рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдкрд░ рд╕рдм, рдпрд╣ рдЕрдЪреНрдЫрд╛ рдбрд┐рдЬрд╛рдЗрди рд╣реИ (рдореИрдВрдиреЗ рдЗрд╕реЗ рдЬрд╛рд╡рд╛ рдореЗрдВ рджреЗрдЦрд╛ рд╣реИред рдпрд╣ рдореБрдЭреЗ рдмрдврд╝рд╛рддрд╛ рд╣реИ)ред рдЕрдЧрд░ рдХреБрдЫ рд╕рдВрд░рдЪрдирд╛ рд╣реИ, рддреЛ рдмрд╕ рдЗрд╕реЗ рдПрдХ рд╕рдВрд░рдЪрдирд╛ рдмрдирд╛рдПрдВред рдмрд╛рдХреА рд╕рдм рдХреБрдЫ рдЖрдкрдХреЗ рдкреИрдХреЗрдЬ рдореЗрдВ рдЕрдЬреАрдм рд╡рд╛рдХреНрдп рд░рдЪрдирд╛рддреНрдордХ рдУрд╡рд░рд╣реЗрдб рдЬреЛрдбрд╝рддрд╛ рд╣реИ рдФрд░ рд╡рд╕реНрддреБрддрдГ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд▓рд╛рдн рдХреЗ рд╣рд░ рд░рд┐рд╡рд░реНрд╕ рдирд┐рд░реНрднрд░рддрд╛ рдЬреЛрдбрд╝рддрд╛ рд╣реИред рдЬрдм рдЖрдк рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рд╕рдЪреЗрдд рд░рд╣рдиреЗ рдХрд╛ рдпрд╣реА рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рд╣реИ; рд╕рд░рд▓ рд╢реБрд░реБрдЖрдд рдХрд░реЗрдВ рдФрд░ рдмрд╛рдж рдореЗрдВ рдХреБрдЫ рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рдХрд░реЗрдВред рдПрдкреАрдЖрдИ рдореЗрдВ рдмрд╣реБрдд рд╕реА рдЬрдЯрд┐рд▓рддрд╛рдПрдВ рдЬреЛ рдореИрдВрдиреЗ рдЕрдм рддрдХ рджреЗрдЦреА рд╣реИрдВ, рд╡реЗ рд▓реЛрдЧреЛрдВ рд╕реЗ рдЖрддреА рд╣реИрдВ рдЬреЛ рдПрдкреАрдЖрдИ рдбрд┐рдЬрд╛рдЗрди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд░рд╣реА рд╣реИрдВ рдФрд░ рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдЕрдзрд┐рдХ рд╡реНрдпрд╛рдкрдХрддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдЙрд╕рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВред рдФрд░ рдлрд┐рд░, рдорд╛рдорд▓реЛрдВ рдХреЗ 80% (рд╡рд╣ рд╕рдВрдЦреНрдпрд╛ рдПрдХ рд╕реНрдкрд╖реНрдЯ рдЭреВрда рд╣реИ) рдореЗрдВ, рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдХреЛрдИ "рдХреНрд▓реАрди рдПрдкреАрдЖрдИ рдбрд┐рдЬрд╝рд╛рдЗрди" рдирд╣реАрдВ рд╣реИред

(рд╕реНрдкрд╖реНрдЯ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП: рдореИрдВ рдпрд╣ рдирд╣реАрдВ рдХрд╣ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рд╕рд╣рд╕рдВрдпреЛрдЬрдХ рдЗрдВрдЯрд░рдлреЗрд╕ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рд╣реИред рдореИрдВ рд╕рд┐рд░реНрдл рдЗрддрдирд╛ рдХрд╣ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рд╡реЗ рдЗрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИрдВ)

@Merovius рдХреЗ рдмрд┐рдВрджреБ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рджреЗрдЦрд╛ рд╣реИ рдХрд┐ рдХрдИ рдХреНрд░рдорд┐рдХ рдХреЛрдб рдорд░рдореНрдордд рдиреЗ рдЖрдо рддреМрд░ рдкрд░ рдЙрдкрдпреЛрдЧреА рдЧреИрд░-рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЛ рдПрдХ рдмрдбрд╝реЗ рдкреИрдХреЗрдЬ рд╕реЗ рдмрд╛рд╣рд░ рд▓реЗ рдЬрд╛рдиреЗ рдХрд╛ рд░реВрдк рд▓реЗ рд▓рд┐рдпрд╛ рд╣реИред рдирд┐рдореНрди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:

package foo

type Authority struct {
  Host string
  Port int
}

рд╕рдордп рдХреЗ рд╕рд╛рде, foo рдкреИрдХреЗрдЬ рдмрдврд╝рддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдХрд┐рд╕реА рдРрд╕реЗ рд╡реНрдпрдХреНрддрд┐ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд┐рдореНрдореЗрджрд╛рд░реА (рдФрд░ рдХреЛрдб рдЖрдХрд╛рд░) рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ Authority рдкреНрд░рдХрд╛рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рддреЛ рдПрдХ fooauthority рдкреИрдХреЗрдЬ рдмрдирд╛рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдХреЗрд╡рд▓ Authority рдФрд░ foo.Authority рдореМрдЬреВрджрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрднреА рднреА рдХрд╛рдо рдХрд░рдирд╛ рдПрдХ рд╡рд╛рдВрдЫрдиреАрдп рдЙрдкрдпреЛрдЧ-рдорд╛рдорд▓рд╛ рд╣реИред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдХреЛрдИ рднреА рд╕рдорд╛рдзрд╛рди рдЬреЛ рдХреЗрд╡рд▓ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкреНрд░рдХрд╛рд░реЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рдпрд╣рд╛рдВ рдорджрдж рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред

@Merovius рдЖрдкрдХреА рдкрд┐рдЫрд▓реА рдЯрд┐рдкреНрдкрдгреА рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╡реНрдпрдХреНрддрд┐рдкрд░рдХ рд░рд╣реА рд╣реИ рдФрд░ рдореЗрд░реЗ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЗ рдмрдЬрд╛рдп рдореБрдЭреЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░ рд░рд╣реА рд╣реИред рдпрд╣ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕рдорд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЪрд░реНрдЪрд╛ рдХреА рдЙрд╕ рдкрдВрдХреНрддрд┐ рдХреЛ рдпрд╣реАрдВ рд╕рдорд╛рдкреНрдд рдХрд░ рджреВрдВрдЧрд╛ред

@griesemer @Merovius рдореИрдВ рдЖрдк рджреЛрдиреЛрдВ рд╕реЗ рд╕рд╣рдордд рд╣реВрдВред рд▓реВрдк рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЗрд╕ рдмрд╛рдд рд╕реЗ рд╕рд╣рдордд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЕрдм рддрдХ рдХреА рдЪрд░реНрдЪрд╛ рдиреЗ рд╣рдореЗрдВ рдЙрдкрдкреНрд░рдХрд╛рд░/рд╕рд╣рдкреНрд░рд╕рд░рдг рдХреА рдХреБрдЫ рдзрд╛рд░рдгрд╛рдУрдВ рдХреА рдУрд░ рдЕрдЧреНрд░рд╕рд░ рдХрд┐рдпрд╛ рд╣реИред рд╕рд╛рде рд╣реА, рдЗрд╕рдХреЗ рдХрд┐рд╕реА рднреА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдХреЛрдИ рд░рдирдЯрд╛рдЗрдо рд╕рдВрдХреЗрдд рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕ рддрд░рд╣ рдХрд╛ @niemeyer рдкреНрд░рд╕реНрддрд╛рд╡ рджреЗ рд░рд╣рд╛ рдерд╛ (рдЕрдЧрд░ рдореИрдВ рдЙрд╕реЗ рд╕рд╣реА рд╕рдордЭрд╛)ред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдФрд░ рд╡рд┐рдЪрд╛рд░ рдкрдврд╝рдирд╛ рдЕрдЪреНрдЫрд╛ рд▓рдЧреЗрдЧрд╛ред рдореИрдВ рднреА рд╕рдорд╕реНрдпрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪреВрдВрдЧрд╛ред

@niemeyer @Merovius рдХреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ

рдЬрд┐рд╕ рдХреНрд╖рдг рдЖрдк рдкреБрд░рд╛рдиреА рдкрджреНрдзрддрд┐ рдХреЛ рд╣рдЯрд╛рддреЗ рд╣реИрдВ рдпрд╛ рдЙрд╕рдХрд╛ рдирд╛рдо рдмрджрд▓рддреЗ рд╣реИрдВ, рдЖрдк рдПрдХ рд╣реА рдмрд╛рд░ рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рддреНрдпреЗрдХ рдЧреНрд░рд╛рд╣рдХ рдХреЛ рдорд╛рд░ рджреЗрддреЗ рд╣реИрдВред

рддрдерд╛

рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдПрдХ рд╡рд┐рдзрд┐ рдХрд╛ рдирд╛рдо рдмрджрд▓рдирд╛ рддрдм рддрдХ рд╕рдВрднрд╡ рд╣реИ рдЬрдм рддрдХ рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕рдХрд╛ рдирд╛рдо рдирд╣реАрдВ рдмрджрд▓рддреЗ рд╣реИрдВ рдФрд░ рдХреЙрд▓ рд╕рд╛рдЗрдЯреЛрдВ рдХреЛ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдПрдХ рдирдП рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕реА рддрд░рд╣, рдЬрдм рддрдХ рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддрдм рддрдХ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ, рдФрд░ рдХреЙрд▓ рд╕рд╛рдЗрдЯреЛрдВ рдХреЛ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдПрдХ рдирдП рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░реЗрдВред рдкреБрд░рд╛рдиреЗ рдХреЛрдб рдХреЛ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдо рд╕рднреА рд╡рд░реНрд╖реЛрдВ рд╕реЗ рдЗрди рджреЛрдиреЛрдВ рдЪреАрдЬреЛрдВ рдХреЛ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рдореБрдЭреЗ рдЙрди рдмрдпрд╛рдиреЛрдВ рд╕реЗ рдореЗрд░реЛрд╡рд┐рдпрд╕ рдХреА рддрд░рд╣ рд╣реА рдЖрднрд╛рд╕ рд╣реБрдЖ - рдХрд┐ рдЖрдк рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рдЪреАрдЬрд╝ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╣рд╛рдиреБрднреВрддрд┐ рдирд╣реАрдВ рд░рдЦрддреЗ рд╣реИрдВ, рдлрд┐рд░ рдЕрдВрддрддрдГ рдЙрд╕реЗ рд╣рдЯрд╛ рджреЗрддреЗ рд╣реИрдВ; рдХрд┐ рдЖрдк рдЕрдирд┐рд╢реНрдЪрд┐рдд рдХрд╛рд▓ рддрдХ рд╡рд╛рдЗрд▓реНрдб рд╡рд░реНрдХрд┐рдВрдЧ рдореЗрдВ рдХреЛрдб рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдмрджреНрдз рд╣реИрдВ; рдХрд┐ "рд╕реНрдерд┐рд░рддрд╛ рдкрд░ рдЖрдкрдХрд╛ рд░реБрдЦ рдирд┐рд░рдкреЗрдХреНрд╖ рд╣реИ"ред (рдФрд░ рдЖрдЧреЗ рдХреА рдЧрд▓рддрдлрд╣рдореА рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЖрдкрдХреЗ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП "рдЖрдк" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЖрдкрдХреЗ рд╡реНрдпрдХреНрддрд┐рддреНрд╡ рдХрд╛ рдирд╣реАрдВред)

@niemeyer рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ adapts рдШреЛрд╖рдгрд╛ рд╣рд╛рд╕реНрдХреЗрд▓ рдЯрд╛рдЗрдкрдХреНрд▓рд╛рд╕ рд╕реЗ instance рд╕реЗ рдирд┐рдХрдЯрддрд╛ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдкреНрд░рддреАрдд рд╣реЛрддреА рд╣реИред рдЗрд╕рдХрд╛ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдЧреЛ рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд░рддреЗ рд╣реБрдП, рдпрд╣ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦ рд╕рдХрддрд╛ рд╣реИ:

package os

type Error interface {
  String() string
}

instance error Error (
  func (e error) String() string { return e.Error() }
)

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ ( @zombiezen рдиреЛрдЯреНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ), рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдЧреИрд░-рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдХреИрд╕реЗ рдорджрдж рдХрд░реЗрдЧрд╛ред

рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рднреА рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдкреНрд░рдХрд╛рд░реЛрдВ (рддрд░реНрдХ рдФрд░ рд░рд┐рдЯрд░реНрди-рд╡реИрд▓реНрдпреВ) рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдЗрдВрдЯрд░реИрдХреНрдЯ рдХрд░реЗрдЧрд╛; рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, adapts рдХрд╛ рд╢рдмреНрджрд╛рд░реНрде Context рдХреЛ рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдХреИрд╕реЗ рдорджрдж рдХрд░реЗрдЧрд╛?

рдореБрдЭреЗ рдЙрди рдмрдпрд╛рдиреЛрдВ рд╕реЗ рдореЗрд░реЛрд╡рд┐рдпрд╕ рдХреЗ рд╕рдорд╛рди рд╣реА рдЖрднрд╛рд╕ рд╣реБрдЖ - рдХрд┐ рдЖрдк рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рдЪреАрдЬрд╝ рдХреЛ рдЪрд┐рддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╣рд╛рдиреБрднреВрддрд┐ рдирд╣реАрдВ рд░рдЦрддреЗ рд╣реИрдВ

@jba рдпреЗ рдкреВрд░реНрдг рддрдереНрдп рд╣реИрдВ, рдкреВрд░реНрдг рд░рд╛рдп рдирд╣реАрдВред рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рд╡рд┐рдзрд┐ рдпрд╛ рдкреНрд░рдХрд╛рд░ рдХреЛ рд╣рдЯрд╛рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЧреЛ рдХреЛрдб рдЯреВрдЯ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрди рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдкрд░рдорд╛рдгреБ рд░реВрдк рд╕реЗ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореЗрд░рд╛ рдкреНрд░рд╕реНрддрд╛рд╡, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХреЛрдб рдХреЗ рдХреНрд░рдорд┐рдХ рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ, рдЬреЛ рдХрд┐ рдпрд╣рд╛рдВ рд╡рд┐рд╖рдп рд╣реИ рдФрд░ рдкрджрд╛рд╡рдирддрд┐ рдХрд╛ рддрд╛рддреНрдкрд░реНрдп рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдкрджрд╛рд╡рдирддрд┐ рдХреА рд╡рд╣ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕рд╣рд╛рдиреБрднреВрддрд┐ рдХреА рдмрд╛рдд рдирд╣реАрдВ рд╣реИред рдореЗрд░реЗ рдкрд╛рд╕ рдХрдИ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЧреЛ рдкреИрдХреЗрдЬ рд╣реИрдВ рдЬрд┐рдирдореЗрдВ рд╣рдЬрд╛рд░реЛрдВ рдЬрдВрдЧрд▓реА рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рд╣реИрдВ, рдФрд░ рдЙрд╕ рдХреНрд░рдорд┐рдХ рд╡рд┐рдХрд╛рд╕ рдХреЗ рдХрд╛рд░рдг рдХрдИ рд╕реНрд╡рддрдВрддреНрд░ рдПрдкреАрдЖрдИ рд╣реИрдВред рдЬрдм рд╣рдо рдПрдХ рдПрдкреАрдЖрдИ рддреЛрдбрд╝рддреЗ рд╣реИрдВ, рддреЛ рдмреИрдЪреЛрдВ рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдмреНрд░реЗрдХреЗрдЬ рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрддрд╛ рд╣реИ, рдмрдЬрд╛рдп рдЙрдиреНрд╣реЗрдВ рд╕реНрдЯреНрд░реАрдо рдХрд░рдиреЗ рдХреЗ, рдЕрдЧрд░ рд╣рдо рд▓реЛрдЧреЛрдВ рдХреЛ рдкрд╛рдЧрд▓ рдирд╣реАрдВ рд╣реЛрдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░рддреЗ рд╣реИрдВред рдЬрдм рддрдХ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЖрдк рдПрдХ рджреАрд╡рд╛рд░ рд╡рд╛рд▓реЗ рдмрдЧреАрдЪреЗ рдореЗрдВ рд░рд╣рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рд░ рдХреЙрд▓ рд╕рд╛рдЗрдЯ рддрдХ рдкрд╣реБрдВрдЪ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдореИрдВ рдЦреБрдж рдХреЛ рджреЛрд╣рд░рд╛ рд░рд╣рд╛ рд╣реВрдВ.. рд╡рд╣ рд╕рдм рдКрдкрд░ рдореВрд▓ рдкреНрд░рд╕реНрддрд╛рд╡ рдореЗрдВ рдЕрдзрд┐рдХ рд╕реНрдкрд╖реНрдЯ рддрд░реАрдХреЗ рд╕реЗ рдкрдврд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

@рдореЗрд░реЛрд╡рд┐рдпрд╕

рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, рдЕрдЧрд░ рдореИрдВ рдХреБрдЫ рдЧреИрд░-рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рдЙрдкрдирд╛рдореЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддрд╛ рд╣реВрдВ (рдЬреИрд╕реЗ рд░реИрдкрд░-рдкреИрдХреЗрдЬ, рдЬреЛ рдореБрдЭреЗ рдПрдХ рдЙрддреНрдХреГрд╖реНрдЯ рдЙрдкрдпреЛрдЧ рдХреЗрд╕ рдорд┐рд▓рддрд╛ рд╣реИ) рдореИрдВ рдмрд╕ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдмрд╣рд┐рд╖реНрдХрд░рдг-рдЪреЗрддрд╛рд╡рдирд┐рдпрд╛рдВ рд╢рд╛рдкрд┐рдд рд╣реЛ рдЬрд╛рддреА рд╣реИрдВред

рд╣рдо рдмреЗрддрд╣рд╛рд╢рд╛ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдирдП рдФрд░ рдмрд╣рд┐рд╖реНрдХреГрдд рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рдкреИрдХреЗрдЬ рдмрдирд╛рдП рд░рдЦрддреЗ рд╣реИрдВ рдФрд░ рдкреБрд░рд╛рдиреЗ (рдЙрдкрдирд╛рдо) рдкреНрд░рдХрд╛рд░ рдХреА рд╕реНрдерд┐рддрд┐ рдХреА рд╕реНрдкрд╖реНрдЯ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреЗ рдмрд┐рдирд╛ рдЙрдкрдирд╛рдо рд╣реЛрдиреЗ рд╕реЗ рдХреНрд░рдорд┐рдХ рдХреЛрдб рдорд░рдореНрдордд рдореЗрдВ рдорджрдж рдирд╣реАрдВ рдорд┐рд▓реЗрдЧреА рдФрд░ рдХреЗрд╡рд▓ рдмрдврд╝реА рд╣реБрдИ рдПрдкреАрдЖрдИ рд╕рддрд╣ рдХреА рднрд╛рд░реАрддрд╛ рдореЗрдВ рдпреЛрдЧрджрд╛рди рд╣реЛрдЧрд╛ред рдореИрдВ @niemeyer рд╕реЗ рд╕рд╣рдордд

рдореИрдВ рдПрдХ рдЕрд▓рдЧ рд╡рд┐рд╖рдп рдХреЗ рддрд╣рдд рдкреНрд░рдХрд╛рд░ рдЕрд▓рд┐рдпрд╛рд╕рд┐рдВрдЧ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛ рдЬреИрд╕реЗ рдХрд┐ рдПрдХ рдкреНрд░рдХрд╛рд░ рдпрд╛ рдЖрдВрд╢рд┐рдХ рдкреИрдХреЗрдЬ рдХреЛ рд╡рд┐рд╕реНрддрд╛рд░ рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рд▓реЗрдХрд┐рди рдЗрд╕ рдзрд╛рдЧреЗ рдкрд░ рдирд╣реАрдВред рдХрд┐рд╕реА рднреА рд╡рд┐рдЪрд╛рд░ рд╕реЗ рдкрд╣рд▓реЗ рдЙрд╕ рд╡рд┐рд╖рдп рдХреЛ рд╕реНрд╡рдпрдВ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд┐рдиреНрди рдПрдирдХреИрдкреНрд╕реБрд▓реЗрд╢рди-рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВред

рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдСрдкрд░реЗрдЯрд░ рдпрд╛ рдЗрд╕рдХрд╛ рдЕрд░реНрде рдпрд╣ рд╣реИ рдХрд┐ рдЙрдкрдирд╛рдо рдЯрд╛рдЗрдк рдХреЛ рдХреБрдЫ рд╣рдж рддрдХ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдпрд╣ рдмрддрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рд╕реНрде рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреА рднрд┐рдиреНрдирддрд╛ рдЯреВрд▓ рдХреЛ рдмрджрд▓реЗ рдЧрдП рдПрдкреАрдЖрдИ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдмрдирд╛рддреА рд╣реИред

рд╕реНрдкрд╖реНрдЯ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдмрд╛рд╣рд░ рдХреЗ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдмрд╣рд┐рд╖реНрдХрд░рдг рдиреАрддрд┐ рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИред рдПрд▓рд┐рдпрд╛рд╕рд┐рдВрдЧ рдкреИрдХреЗрдЬ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреЗрд╡рд▓ рдкреБрд░рд╛рдирд╛ рд╣реИред рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рд╣рдо рдЗрд╕реЗ рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рдореЗрдВ рдХрднреА рднреА рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдореИрдВ рдЕрднреА рднреА рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЙрдкрдирд╛рдореЛрдВ рдХреЛ рд╕рдЦреНрддреА рд╕реЗ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ (рдЙрдЪрд┐рдд рдмрд╣рд┐рд╖реНрдХрд░рдг рдиреЛрдЯрд┐рд╕ рджреНрд╡рд╛рд░рд╛ рд╕рдВрдХреЗрддрд┐рдд)ред

рдореИрдВ рдпрд╣ рднреА рд╕реБрдЭрд╛рд╡ рджреЗ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рд╣рдо рдЕрдкрдиреЗ рдореВрд▓ рдЙрдкрдХрд░рдгреЛрдВ (рдЧреЛрд▓рд┐рдВрдЯ, рдЧреЛрдбреЛрдХ, рдЖрджрд┐) рдореЗрдВ рд╕рдорд╛рдирд╛рдВрддрд░ рдЪрд░реНрдЪрд╛ рдФрд░ рдЙрдирдХреЗ рд▓рд┐рдП рднреВрдорд┐ рд╕рдорд░реНрдерди рдореЗрдВ рдкрджрд╛рд╡рдирддрд┐ рдХреА рдзрд╛рд░рдгрд╛ рдХреЛ рдорд╛рдирдХреАрдХреГрдд рдХрд░реЗрдВред рдЧреЛ рдЗрдХреЛрд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдбрд┐рдкреНрд░реЗрд╢рди рдиреЛрдЯрд┐рд╕ рдХрд╛ рдЕрднрд╛рд╡ рд╕рдмрд╕реЗ рдмрдбрд╝реА рд╕рдорд╕реНрдпрд╛ рд╣реИ рдФрд░ рдХреНрд░рдорд┐рдХ рдХреЛрдб рдорд░рдореНрдордд рдХреА рд╕рдорд╕реНрдпрд╛ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рд╡реНрдпрд╛рдкрдХ рд╣реИред

@rakyll рдореИрдВ рдХрдВрдкреНрдпреВрдЯрд░-рдкрдардиреАрдп рдмрд╣рд┐рд╖реНрдХрд░рдг рдиреЛрдЯрд┐рд╕ рд░рдЦрдиреЗ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕рд╣рд╛рдиреБрднреВрддрд┐

рдП рдХреЗ рд▓рд┐рдП), рдЗрд╕ рддрдереНрдп рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХрд┐ рдореИрдВ рдЪрд╛рд▓ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЕрдиреНрдп рдЪреАрдЬреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрддреНрдкрд╛рджрдХ рд░реВрдк рд╕реЗ рдЙрдкрдирд╛рдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдпрд╣ рдХреЗрд╡рд▓ рдмрд╣рд┐рд╖реНрдХрд░рдг рдХреЗ рдмрд╣реБрдд рдЫреЛрдЯреЗ рд╕реЗрдЯ рдХреЗ рд▓рд┐рдП рднреА рд▓рд╛рдЧреВ рд╣реЛрдЧрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдорд╛рди рд▓реЗрдВ рдХрд┐ рдореИрдВ рдХреБрдЫ рд░рд┐рд▓реАрдЬ рдореЗрдВ рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рдХреБрдЫ рдкреИрд░рд╛рдореАрдЯрд░ рдирд┐рдХрд╛рд▓рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ; рдореИрдВ рдЙрдкрдирд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдХреНрдпреЛрдВрдХрд┐ рдирдП рдПрдкреАрдЖрдИ рдХреЗ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдЕрд▓рдЧ рд╣реЛрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдореИрдВ рдЕрднреА рднреА рдЗрд╕рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдмреА рдХреЗ рд▓рд┐рдП), рдЖрдИрдПрдордПрдЪрдУ рдХрдВрдкрд╛рдЗрд▓рд░ рдЪреЗрддрд╛рд╡рдирд┐рдпрд╛рдВ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рд░реВрдк рд╕реЗ рдЦрд░рд╛рдм рд╣реИрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЬреНрдпрд╛рджрд╛рддрд░ рдЧреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрд░ рд░рд╣рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЗрд╕реЗ рдФрдЪрд┐рддреНрдп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдЖрдк рдмрд╣рд┐рд╖реНрдХрд░рдг рдиреЛрдЯрд┐рд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬреЛ рдХреБрдЫ рднреА рдХрд╣ рд░рд╣реЗ рд╣реИрдВ, рдореИрдВ рдЙрд╕рд╕реЗ рд╕рд╣рдордд рд╣реВрдВред рдЗрд╕рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╣реИ, рдЬрд╛рд╣рд┐рд░рд╛ рддреМрд░ рдкрд░: # 10909, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдФрд░ рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧреА рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдЧрд▓рд╛ рдХрджрдо рдЯреВрд▓-рд╕рдкреЛрд░реНрдЯ рдХреЛ рдЧреЙрдбреЛрдХ рдореЗрдВ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд░рдХреЗ рдмрдврд╝рд╛рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдПрдХ рдЪреЗрдХ рд╣реЛрдЧрд╛ рдЬреЛ рдЙрдирдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪреЗрддрд╛рд╡рдиреА рджреЗрддрд╛ рд╣реИ (рдЬреИрд╕реЗ рдХрд┐ рдЧреЛ рдкрд╢реБ рдЪрд┐рдХрд┐рддреНрд╕рдХ, рдЧреЛрд▓рд┐рдВрдЯ рдпрд╛ рдПрдХ рд╕рд╛рде рдПрдХ рдЕрд▓рдЧ рдЙрдкрдХрд░рдг)ред

@rakyll рдореИрдВ рдорд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ stdlib рдХреЛ рдЙрдкрдирд╛рдореЛрдВ рдХреЗ рд░реВрдврд╝рд┐рд╡рд╛рджреА рдЙрдкрдпреЛрдЧ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпрд╛ рдЙрдиреНрд╣реЗрдВ рдкреЗрд╢ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред


рд╕рд╛рдЗрдбрдмрд╛рд░:

рдЧреЛ рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рдЯреВрд▓рд┐рдВрдЧ рдореЗрдВ рдкрджрд╛рд╡рдирддрд┐ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреА рд╕реНрдерд┐рддрд┐ рд╕реЗ рдЕрдирдЬрд╛рди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдкреГрд╖реНрдарднреВрдорд┐, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХрд╛рдлреА рдлреИрд▓рд╛ рд╣реБрдЖ рд╣реИ:

рдЬреИрд╕рд╛ рдХрд┐ @Merovius рдиреЗ рдКрдкрд░ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ, рдЖрдЗрдЯрдо рдХреЛ рдкрджрд╛рд╡рдирдд рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╛рдирдХ рдкрд░рдВрдкрд░рд╛ рд╣реИ, #10909, рджреЗрдЦреЗрдВ https://blog.golang.org/godoc-documenting-go-code

TL; DR: рдкрджрд╛рд╡рдирдд рдЖрдЗрдЯрдо рдХреЗ рдбреЙрдХреНрд╕ рдореЗрдВ рдПрдХ рдкреИрд░рд╛рдЧреНрд░рд╛рдл рдмрдирд╛рдПрдВ рдЬреЛ "рдмрд╣рд┐рд╖реНрдХреГрдд:" рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХреНрдпрд╛ рд╣реИред

рдкрджрд╛рд╡рдирдд рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧреА рддрд░реАрдХреЗ рд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЧреЛрдбреЛрдХ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрд╡реАрдХреГрдд рдкреНрд░рд╕реНрддрд╛рд╡ рд╣реИ: # 17056ред

@rakyll рдиреЗ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд┐рдпрд╛ рдХрд┐ рдЬрдм рдкрджрд╛рд╡рдирдд рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдЧреЙрд▓рд┐рдВрдЯ рдЪреЗрддрд╛рд╡рдиреА рджреЗрддрд╛ рд╣реИ: рдЧреЛрд▓рд╛рдВрдЧ/рд▓рд┐рдВрдЯ # 238ред


рднрд▓реЗ рд╣реА stdlib, stdlib рдХреЗ рднреАрддрд░ рдЙрдкрдирд╛рдореЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдкрд░ рдПрдХ рд░реВрдврд╝рд┐рд╡рд╛рджреА рд░реБрдЦ рд▓реЗрддрд╛ рд╣реИ, рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЙрдкрдирд╛рдо рдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдХрд╛ рдЕрд░реНрде рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП (рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдЬреЛ рдпрдВрддреНрд░рд╡рддреН рдпрд╛ рдиреЗрддреНрд░рд╣реАрди рд░реВрдк рд╕реЗ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ) рдХрд┐ рдкреБрд░рд╛рдиреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдмрд╣рд┐рд╖реНрдХреГрдд рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдЕрдЧрд░ рдЗрд╕рдХрд╛ рд╣рдореЗрд╢рд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВред

рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рдЕрд░реНрде рд╣реЛрдЧрд╛ рдЗрдирдореЗрдВ рд╕реЗ рдПрдХ:

  • рдЕрдиреНрдп stdlib pakages рдХреЛ рд╕реНрдХреИрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛ рдХреЛрдИ рдкреНрд░рдХрд╛рд░, рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдмрд╣рд┐рд╖реНрдХреГрдд рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдирд╣реАрдВ рд╣реИ, рдХрд╣реАрдВ рдФрд░ рдЙрдкрдирд╛рдо рд╣реИ
  • рд╕рднреА stdlib рдЙрдкрдирд╛рдореЛрдВ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдЙрдкрдХрд░рдгреЛрдВ рдореЗрдВ рд╣рд╛рд░реНрдбрдХреЛрдб рдХрд░рдирд╛
  • рдХреЗрд╡рд▓ рдпрд╣ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рдирд╛ рдХрд┐ рдкреБрд░рд╛рдиреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдмрд╣рд┐рд╖реНрдХреГрдд рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬрдм рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕рдХреЗ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХреЛ рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВ, рдЬреЛ рдЦреЛрдЬ рдореЗрдВ рдорджрдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ

рдЬрдм рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдирд╛рдо рдкреЗрд╢ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдкреБрд░рд╛рдиреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдмрд╣рд┐рд╖реНрдХреГрдд рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рдирдП рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рдВрджрд░реНрдн рдХреЗ рд╕рд╛рде, рдкреБрд░рд╛рдиреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдмрд╣рд┐рд╖реНрдХреГрдд рдХрд░рдХреЗ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рднрд▓реЗ рд╣реАред

рдпрд╣ рдмреЗрд╣рддрд░ рдЯреВрд▓рд┐рдВрдЧ рдХреЛ рд╕рд░рд▓ рдФрд░ рдЕрдзрд┐рдХ рд╕рд╛рдорд╛рдиреНрдп рд╣реЛрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдХрд░ рдореМрдЬреВрдж рд╣реЛрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдмрдирд╛рддрд╛ рд╣реИ: рдЗрд╕реЗ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЙрдкрдирд╛рдореЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреА рдкрддрд╛ рд╣реИ: рдЗрд╕реЗ рдХреЗрд╡рд▓ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ "рдмрд╣рд┐рд╖реНрдХреГрдд:" рд╕реЗ рдореЗрд▓ рдЦрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдПрдХ рдЕрдзрд┐рдХрд╛рд░реА, рдпрджрд┐ рд╢рд╛рдпрдж рдЕрд╕реНрдерд╛рдпреА, рдиреАрддрд┐ рд╣реИ рдХрд┐ stdlib рдореЗрдВ рдПрдХ рдЙрдкрдирд╛рдо рдХреЗрд╡рд▓ рдмрд╣рд┐рд╖реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдХреЗрд╡рд▓ рдорд╛рдирдХ рдмрд╣рд┐рд╖реНрдХрд░рдг рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЕрдиреНрдп рдЙрдкрдпреЛрдЧреЛрдВ рдХреЛ рдЗрд╕реЗ рдкрд┐рдЫрд▓реЗ рдХреЛрдб рд╕рдореАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

@niemeyer рдореЗрд░рд╛ рдкрд┐рдЫрд▓рд╛ рдЬрд╡рд╛рдм рдмрд┐рдЬрд▓реА рдХреЗ рдиреБрдХрд╕рд╛рди рдХреЗ рдХрд╛рд░рдг рдЦреЛ рдЧрдпрд╛ :( рдХреНрд░рдо рд╕реЗ рдмрд╛рд╣рд░:

рд▓реЗрдХрд┐рди рдореИрдВ рдЦреБрдж рдХреЛ рджреЛрд╣рд░рд╛ рд░рд╣рд╛ рд╣реВрдВ..

рдПрдлрдбрдмреНрд▓реНрдпреВрдЖрдИрдбрдмреНрд▓реНрдпреВ, рдореБрдЭреЗ рдЖрдкрдХрд╛ рдЕрдВрддрд┐рдо рдЙрддреНрддрд░ рдХрд╛рдлреА рдорджрджрдЧрд╛рд░ рд▓рдЧрд╛ред рдЗрд╕рдиреЗ рдореБрдЭреЗ рдЖрд╢реНрд╡рд╕реНрдд рдХрд┐рдпрд╛, рдХрд┐ рд╣рдо рдкрд╣рд▓реЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рд╕рд╣рдордд рд╣реИрдВ (рдФрд░ рдпрд╣ рдЕрднреА рднреА рдЖрдкрдХреЛ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ)ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЕрднреА рднреА рдХрд╣реАрдВ рди рдХрд╣реАрдВ рдЧрд▓рдд рд╕рдВрдЪрд╛рд░ рд▓рдЧрддрд╛ рд╣реИред

рдореЗрд░рд╛ рдкреНрд░рд╕реНрддрд╛рд╡, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХреЛрдб рдХреЗ рдХреНрд░рдорд┐рдХ рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ

рдпрд╣ рдЧреИрд░-рд╡рд┐рд╡рд╛рджрд╛рд╕реНрдкрдж рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИред :) рдореИрдВ рд╢реБрд░реВ рд╕реЗ рд╣реА рд╕рд╣рдордд рдерд╛ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рдЖрдкрдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рд╡рд┐рдХрд▓реНрдк рд╣реИ рдЬрд┐рд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕ рддрд░рд╣ рдХреЗ рдмрдпрд╛рди рдореБрдЭреЗ рднреНрд░рдорд┐рдд рдХрд░рддреЗ рд╣реИрдВ:

рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рд╡рд┐рдзрд┐ рдпрд╛ рдкреНрд░рдХрд╛рд░ рдХреЛ рд╣рдЯрд╛рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЧреЛ рдХреЛрдб рдЯреВрдЯ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрди рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдкрд░рдорд╛рдгреБ рд░реВрдк рд╕реЗ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдореБрдЭреЗ рдЕрднреА рднреА рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдЖрдкрдХрд╛ рддрд░реНрдХ рдпрд╣рд╛рдБ рдХреНрдпрд╛ рд╣реИред рдореИрдВ рдкрд░рдорд╛рдгреБрддрд╛ рдХреА рдЗрдХрд╛рдИ рдХреЛ рд╕рд┐рдВрдЧрд▓ рдХрдорд┐рдЯ рд╕рдордЭрддрд╛ рд╣реВрдВред рдЙрд╕ рдзрд╛рд░рдгрд╛ рдХреЗ рд╕рд╛рде, рдореБрдЭреЗ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛ рдХрд┐ рдЖрдк рдХреНрдпреЛрдВ рдЖрд╢реНрд╡рд╕реНрдд рд╣реИрдВ рдХрд┐ рдХрд┐рд╕реА рд╡рд┐рдзрд┐ рдпрд╛ рдкреНрд░рдХрд╛рд░ рдХреЛ рд╣рдЯрд╛рдирд╛ рдкрд╣рд▓реЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ, рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ рдХрдИ рдирд┐рд░реНрднрд░ рднрдВрдбрд╛рд░реЛрдВ рдореЗрдВ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░, рдПрдХ рдмрд╛рд░ рдХреЛрдИ рд╕реНрдкрд╖реНрдЯ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╣реАрдВ рд╣реИ (рдФрд░ рдПрдХ рдкрд░реНрдпрд╛рдкреНрдд рдмрд╣рд┐рд╖реНрдХрд░рдг рдЕрдВрддрд░рд╛рд▓ рдмреАрдд рдЪреБрдХрд╛ рд╣реИ) рдПрдХ рдкреНрд░рддрд┐рдмрджреНрдз рдЕрдкрд╕реНрдЯреНрд░реАрдо рдореЗрдВ рд╡рд┐рдзрд┐ рдпрд╛ рдкреНрд░рдХрд╛рд░ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдмрд┐рдирд╛ рдХреБрдЫ рддреЛрдбрд╝реЗ, рдХреНрдпреЛрдВрдХрд┐ рдХреЛрдИ рднреА рдЕрдм рдирд┐рд░реНрднрд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ)ред рдореИрдВ рдорд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ рд░рд┐рд╡рд░реНрд╕ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЕрд╕реНрдкрд╖реНрдЯрддрд╛ рдХрд╛рд░рдХ рд╣реИ рдЬреЛ рдХрд┐ рдкрджрд╛рд╡рдирддрд┐ рдХрд╛ рдкрд╛рд▓рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдпрд╛ рдЬрд┐рд╕реЗ рдЖрдк рдирд╣реАрдВ рдвреВрдВрдв рд╕рдХрддреЗ (рдпрд╛ рдЙрдЪрд┐рдд рд░реВрдк рд╕реЗ рдареАрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ), рд▓реЗрдХрд┐рди рд╡рд╣, рдореЗрд░реЗ рд▓рд┐рдП, рдЗрд╕ рдорд╛рдорд▓реЗ рд╕реЗ рдХрд╛рдлреА рд╣рдж рддрдХ рд╕реНрд╡рддрдВрддреНрд░ рд▓рдЧрддрд╛ рд╣реИ; рдЬрдм рднреА рдЖрдк рдХреЛрдИ рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЖрдк рдЗрд╕реЗ рдХреИрд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рд╡рд╣ рд╕рдорд╕реНрдпрд╛ рд╣реЛрдЧреАред

рдФрд░, рдирд┐рд╖реНрдкрдХреНрд╖ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП: рднреНрд░рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡рд╛рдХреНрдпреЛрдВ рд╕реЗ рдорджрдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдЬреИрд╕реЗ

рдЬрдм рддрдХ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЖрдк рдПрдХ рджреАрд╡рд╛рд░ рд╡рд╛рд▓реЗ рдмрдЧреАрдЪреЗ рдореЗрдВ рд░рд╣рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рд░ рдХреЙрд▓ рд╕рд╛рдЗрдЯ рддрдХ рдкрд╣реБрдВрдЪ рд╕рдХрддреЗ рд╣реИрдВред

рдЕрдЧрд░ рдореИрдВрдиреЗ рдЬреЛ рдХреБрдЫ рднреА рдХрд╣рд╛ рд╣реИ, рдЙрд╕рд╕реЗ рдЖрдкрдХреЛ рдпрд╣ рдЖрднрд╛рд╕ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд╣ рдмрд┐рдВрджреБ рд╣реИ рдЬрд┐рд╕рд╕реЗ рдореИрдВ рдмрд╣рд╕ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЖрдк рдПрдХ рдХрджрдо рдкреАрдЫреЗ рд╣рдЯ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╢рд╛рдпрдж рдЗрд╕реЗ рдЗрд╕ рдзрд╛рд░рдгрд╛ рдХреЗ рддрд╣рдд рдлрд┐рд░ рд╕реЗ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдореИрдВ рдЦреБрд▓реЗ рд╕реНрд░реЛрдд рдХреА рд╕реНрдерд┐рддрд┐ рд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмрд╣рд╕ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рд╕рдореБрджрд╛рдп (рдпрджрд┐ рдЖрдк рдореБрдЭ рдкрд░ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдореЗрд░реЗ рдкрд┐рдЫрд▓реЗ рдпреЛрдЧрджрд╛рдиреЛрдВ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рдорд╣рд╕реВрд╕ рдХрд░реЗрдВ; рдореИрдВ рд╣рдореЗрд╢рд╛ рдпрд╣ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдкрд╣рд▓рд╛ рд╡реНрдпрдХреНрддрд┐ рд╣реВрдВ рдХрд┐ рдпрд╣ рдПрдХ рдореЛрдиреЛрд░реЗрдкреЛ рд╕рдорд╕реНрдпрд╛ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рд╕рд╛рдореБрджрд╛рдпрд┐рдХ рд╕рдорд╕реНрдпрд╛ рд╣реИред рдореЛрдиреЛрд░реЗрдкреЛ рдХреЗ рдкрд╛рд╕ рдЗрд╕рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХреЗ рддрд░реАрдХреЗ рд╣реИрдВ , рдЬреИрд╕рд╛ рдЖрдкрдиреЗ рдмрддрд╛рдпрд╛)ред

рд╡реИрд╕реЗ рднреАред рдореБрдЭреЗ рдпрд╣ рдЖрдкрдХреЗ рдЬреИрд╕рд╛ рд╣реА рд╕реВрдЦрд╛ рд▓рдЧрддрд╛ рд╣реИред рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдореИрдВ рдХрд┐рд╕реА рдмрд┐рдВрджреБ рдкрд░ рдЖрдкрдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕рдордЭреВрдВрдЧрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ред

рд╕рд╛рде рд╣реА рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВ рдХрд┐ рдкреНрд░реЛрдЯреЛрдмрдл рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЖрдпрд╛рдд рдЬреИрд╕реА рдЪреАрдЬреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХреИрд╕реЗ рдХрд░реЗрдВ рдФрд░ рдХреИрд╕реЗ рдХрд░реЗрдВ ...
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдмрд┐рдВрджреБ рдкрд░ рдЗрд╕ рдкрд░ рдмрд╣рд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд░реИрдкрд░-рдкреИрдХреЗрдЬ, рдкреНрд░реЛрдЯреЛрдмрдл рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЖрдпрд╛рдд рдпрд╛ рдЖрдВрддрд░рд┐рдХ рдкреИрдХреЗрдЬ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ-рдПрдкреАрдЖрдИ рдЗрддрдиреА рдмреБрд░реА рдЪреАрдЬ рд╣реИ

рдирд╛рдЗрдЯ: рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдкреНрд░реЛрдЯреЛрдмрдл рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЖрдпрд╛рдд рдХреЛ рд╡рд┐рд╢реЗрд╖ рдорд╛рдзреНрдпрдорд┐рдХ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╡реЗ рдХреНрд░рдорд┐рдХ рдХреЛрдб рдорд░рдореНрдордд рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдП рдЧрдП рдереЗ, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдВрддрд░рд┐рдХ рдбрд┐рдЬрд╝рд╛рдЗрди рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рджреЛрдиреЛрдВ рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╡реЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕ рдореБрджреНрджреЗ рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгрд┐рдд рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреА рдЫрддреНрд░рдЫрд╛рдпрд╛ рдореЗрдВ рдЖрддреЗ рд╣реИрдВред рд╕рд╛рде рд╣реА, рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рдкреНрд░реЛрдЯреЛрдмрдл рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЖрдпрд╛рдд рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯрд╛рдЗрдк рдЙрдкрдирд╛рдо рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдВрдЧреЗред (рдкреНрд░реЛрдЯреЛ рдХрдВрдкрд╛рдЗрд▓рд░ vars рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡реЗ рддрд╛рд░реНрдХрд┐рдХ рд░реВрдк рд╕реЗ рд╕реНрдерд┐рд░ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП "var Enum_name = import.Enum_name" рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред)

@Merovius рдЙрддреНрдкрд╛рджрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдореБрдЭреЗ рдХреБрдЫ рд╕рдВрджрд░реНрдн рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ:

рдореБрдЭреЗ рдЕрднреА рднреА рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдЖрдкрдХрд╛ рддрд░реНрдХ рдпрд╣рд╛рдБ рдХреНрдпрд╛ рд╣реИред рдореИрдВ рдкрд░рдорд╛рдгреБрддрд╛ рдХреА рдЗрдХрд╛рдИ рдХреЛ рд╕рд┐рдВрдЧрд▓ рдХрдорд┐рдЯ рд╕рдордЭрддрд╛ рд╣реВрдВред рдЙрд╕ рдзрд╛рд░рдгрд╛ рдХреЗ рд╕рд╛рде, рдореБрдЭреЗ рдпрд╣ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдХреНрдпреЛрдВ рдЖрд╢реНрд╡рд╕реНрдд рд╣реИрдВ рдХрд┐ рдХрд┐рд╕реА рд╡рд┐рдзрд┐ рдпрд╛ рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╡рд┐рд▓реЛрдкрди рдкрд╣рд▓реЗ рдЕрд▓рдЧ рд╕реЗ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ,

рдХрднреА рдирд╣реАрдВ рдХрд╣рд╛ рдХрд┐ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ред рдореИрдВ рдПрдХ рдХрджрдо рдкреАрдЫреЗ рд╣рдЯрддрд╛ рд╣реВрдВ рдФрд░ рдЕрдзрд┐рдХ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдмрддрд╛рддрд╛ рд╣реВрдВред

рд╣рдо рд╕рднреА рд╢рд╛рдпрдж рдЗрд╕ рдмрд╛рдд рд╕реЗ рд╕рд╣рдордд рд╣реИрдВ рдХрд┐ рдЕрдВрддрд┐рдо рд▓рдХреНрд╖реНрдп рджреЛ рдЧреБрдирд╛ рд╣реИ: рд╣рдо рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдФрд░ рд╣рдо рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рд╣рдо рдЗрд╕ рдкрд░ рдПрдХ рд╕рдордЭрджрд╛рд░ рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦ рд╕рдХреЗрдВред рдЙрддреНрддрд░рд╛рд░реНрджреНрдз рдореЗрдВ рд╕реЗ рдХреБрдЫ рдкрд░рд┐рд╡рд░реНрддрди рддреЛрдбрд╝ рд░рд╣реЗ рд╣реИрдВ, рдЗрд╕реЗ рдкреВрд░реНрд╡ рд▓рдХреНрд╖реНрдп рдХреЗ рд╕рд╛рде рдмрд╛рдзрд╛рдУрдВ рдореЗрдВ рдбрд╛рд▓ рд░рд╣реЗ рд╣реИрдВред рддреЛ рд╡рд╣рд╛рдБ рддрдирд╛рд╡ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЬрд╣рд╛рдБ рдореАрдард╛ рд╕реНрдерд╛рди рд╣реИ, рд╡рд╣рд╛рдБ рдХреБрдЫ рд╡реНрдпрдХреНрддрд┐рдкрд░рдХрддрд╛ рд╣реИред рд╣рдорд╛рд░реА рдмрд╣рд╕ рдХрд╛ рджрд┐рд▓рдЪрд╕реНрдк рд╣рд┐рд╕реНрд╕рд╛ рдпрд╣реАрдВ рд╣реИред

рдЙрд╕ рдордзреБрд░ рд╕реНрдерд╛рди рдХреЛ рдЦреЛрдЬрдиреЗ рдХрд╛ рдПрдХ рд╕рд╣рд╛рдпрдХ рддрд░реАрдХрд╛ рдорд╛рдирд╡реАрдп рд╣рд╕реНрддрдХреНрд╖реЗрдкреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдирд╛ рд╣реИред рдпрд╣реА рд╣реИ, рдПрдХ рдмрд╛рд░ рдЬрдм рдЖрдк рдХреБрдЫ рдРрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд▓реЛрдЧреЛрдВ рдХреЛ рдЗрд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рддреЛ рдЬрдбрд╝рддрд╛ рд╣реЛрддреА рд╣реИред рд╕рднреА рдЖрд╢реНрд░рд┐рдд рдХреЛрдб рдЖрдзрд╛рд░реЛрдВ рдХреЗ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рднрд╛рдЧ рдХреЛ рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реЗ рдЧреБрдЬрд░рдиреЗ рдореЗрдВ рд▓рдВрдмрд╛ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИред рд╣рдо рд╡реНрдпрд╕реНрдд рд▓реЛрдЧреЛрдВ рд╕реЗ рдРрд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╡реЗ рдкрд░реЗрд╢рд╛рди рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗред

рдЙрд╕ рдореАрдареЗ рд╕реНрдерд╛рди рдХреЛ рджреЗрдЦрдиреЗ рдХрд╛ рдПрдХ рдФрд░ рддрд░реАрдХрд╛ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рд╣рдо рд▓реЛрдЧреЛрдВ рд╕реЗ рдмрд╣рд┐рд╖реНрдХреГрдд рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рддрдирд╛ рдХрд╣рддреЗ рд╣реИрдВред рдпрджрд┐ рдпрд╣ рдЖрд╕рд╛рдиреА рд╕реЗ рд╕реБрд▓рдн рд╣реИ рдФрд░ рдпрд╣ рдпрд╣рд╛рдВ рдФрд░ рдЕрднреА рдЙрдирдХреА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЕрдзрд┐рдХрд╛рдВрд╢ рдбреЗрд╡рд▓рдкрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдпрд╣рд╛рдБ рдЖрдо рдкреНрд░рддрд┐рд╡рд╛рдж рд╣реИ: _рдУрд╣, рд▓реЗрдХрд┐рди рдЬрдм рдпрд╣ рдЯреВрдЯрддрд╛ рд╣реИ рддреЛ рдпрд╣ рдЙрдирдХреА рд╕рдорд╕реНрдпрд╛ рд╣реИ!_ рд▓реЗрдХрд┐рди рдпрд╣ рдмрддрд╛рдП рдЧрдП рд▓рдХреНрд╖реНрдп рдХреЗ рд╡рд┐рд░реБрджреНрдз рдЬрд╛рддрд╛ рд╣реИ: рд╣рдо рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд╕рд╣реА рдирд╣реАрдВ рд╣реЛрдирд╛ред

рддреЛ, рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рдХреБрдЫ рдФрд░ рдЕрдВрддрд░реНрджреГрд╖реНрдЯрд┐ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпреЛрдВ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рдЕрдиреБрдкрдпреЛрдЧреА рд▓рдЧрддрд╛ рд╣реИред рд▓реЛрдЧреЛрдВ рдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрд╕ рдирдП рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЕрдкрдиреЗ рдирдП рдШрд░ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдорд╛рдирд╡реАрдп рд╣рд╕реНрддрдХреНрд╖реЗрдк рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЬрдм рд▓реЛрдЧ рдЕрдкрдиреЗ рдХреЛрдб рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдмрджрд▓рдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдирд┐рдкрдЯрддреЗ рд╣реИрдВ, рддреЛ рдПрдХ рд╣рд╕реНрддрдХреНрд╖реЗрдк рдХрд░рдирд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдЖрдиреЗ рд╡рд╛рд▓реЗ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЙрдирдХреЗ рдкреИрд░реЛрдВ рдХреЗ рдиреАрдЪреЗ рдЬрд▓реНрдж рд╣реА рдлрд┐рд░ рд╕реЗ рдмрджрд▓рдиреЗ рд╡рд╛рд▓реА рдХрд┐рд╕реА рдЪреАрдЬрд╝ рдХреЗ рдмрдЬрд╛рдп _рдирдП рдкреНрд░рдХрд╛рд░_ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рд╣рдо рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рднрд╛рд╖рд╛ рд╕реБрд╡рд┐рдзрд╛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдкрд░реЗрд╢рд╛рдиреА рд╕реЗ рдЧреБрдЬрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ рдпрд╣ рд▓реЛрдЧреЛрдВ рдХреЛ рдЕрдкрдиреЗ рдХреЛрдб рдХреЛ рдзреАрд░реЗ-рдзреАрд░реЗ рдЙрд╕ рдирдП рдкреНрд░рдХрд╛рд░ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛, рди рдХрд┐ рдХреЗрд╡рд▓ рдПрдХ рдирдП рдШрд░ рдореЗрдВ, рдЙрдкрд░реЛрдХреНрдд рдХрд╛рд░рдгреЛрдВ рд╕реЗред

рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЕрдм рдЖрдкрдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдмреЗрд╣рддрд░ рдврдВрдЧ рд╕реЗ рд╕рдордЭрддрд╛ рд╣реВрдВ рдФрд░ рдЖрдкрдХреА рдзрд╛рд░рдгрд╛рдУрдВ рд╕реЗ рд╕рд╣рдордд рд╣реВрдВ (рдЕрд░реНрдерд╛рддреН, рд▓реЛрдЧ рдмрд╣рд┐рд╖реНрдХреГрдд рд╕рд╛рдорд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛, рдЗрд╕рд▓рд┐рдП рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХреЗ рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рдорд╛рд░реНрдЧрджрд░реНрд╢рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рднреА рд╕рд╣рд╛рдпрддрд╛ рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рд╕рд░реНрд╡реЛрдкрд░рд┐ рд╣реИ)ред рдПрдлрдбрдмреНрд▓реНрдпреВрдЖрдИрдбрдмреНрд▓реНрдпреВ, рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрд░реА рднреЛрд▓реА рдпреЛрдЬрдирд╛ (рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рдзреАрд░реЗ-рдзреАрд░реЗ рдорд░рдореНрдордд рдХреЗ рд▓рд┐рдП рд╣рдо рдХрд┐рд╕ рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рд╛рде рдЬрд╛рдПрдВрдЧреЗ) рдПрдХ рдЙрдкрдХрд░рдг рдХреА рддрд░рд╣ рдПрдХ рдЙрдкрдХрд░рдг рд╣реИ рдЬреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдмрд╣рд┐рд╖реНрдХрд░рдг рдЕрд╡рдзрд┐ рдореЗрдВ рдХреЛрдб рдкреИрдХреЗрдЬ-рджрд░-рдкреИрдХреЗрдЬ рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдЯреЛрдкреА рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реВрдВ рдореИрдВрдиреЗ рдЕрднреА рддрдХ рдпрд╣ рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХреА рд╣реИ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдФрд░ рдЕрдЧрд░ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

@niemeyer рдореБрдЭреЗ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрдкрдХрд╛ рд╕реБрдЭрд╛рд╡ рдЧреЛ рдЯрд╛рдЗрдк рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдЧрдВрднреАрд░ рд╡реНрдпрд╡рдзрд╛рди рдХреЗ рдмрд┐рдирд╛ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд╣реИред

рдЗрд╕ рдХреЛрдб рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╕реНрддреБрдд рджреБрд╡рд┐рдзрд╛ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:

package old
import "new"
type A adapts new.A
func (a A) NewA() {}

package new
type A struct{}
func (a A) OldA() {}

package main
import (
    "new"
    "old"
    "reflect"
)
func main() {
    oldv := reflect.ValueOf(old.A{})
    newv := reflect.ValueOf(new.A{})
    if oldv.Type() == newv.Type() {
        // The two types are equal, therefore they must
        // have exactly the same method set, so either
        // oldv doesn't have the OldA method or newv doesn't
        // have the NewA method - both of which imply a contradiction
        // in the type system.
    } else {
         // The two types are not equal, which means that the
         // old adapted type is not fully compatible with the old
         // one. Any type that includes either new.A or new.B will
         // be incompatible as one of its components will likewise be
         // unequal, so any code that relies on dynamic type checking
         // will fail when presented with the type that's not using the
         // expected version.
    }
 }

рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рдкреИрдХреЗрдЬ рдХреЗ рд╡рд░реНрддрдорд╛рди рд╕реНрд╡рдпрдВрд╕рд┐рджреНрдзреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдпрд╣ рд╣реИ рдХрд┐ рдпрджрд┐ рджреЛ рдкреНрд░рдХрд╛рд░ рд╕рдорд╛рди рд╣реИрдВ, рддреЛ рдЙрдирдХрд╛ рдкреНрд░рддрд┐рдмрд┐рдВрдмред рдкреНрд░рдХрд╛рд░ рдорд╛рди рд╕рдорд╛рди рд╣реИрдВред рдпрд╣ рдЧреЛ рдХреЗ рд░рдирдЯрд╛рдЗрдо рдкреНрд░рдХрд╛рд░ рд░реВрдкрд╛рдВрддрд░рдг рдХреА рджрдХреНрд╖рддрд╛ рдХреА рдиреАрдВрд╡ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдореИрдВ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдЗрд╕реЗ рддреЛрдбрд╝рдиреЗ рдХреЗ рдмрд┐рдирд╛ "рдЕрдиреБрдХреВрд▓рди" рдХреАрд╡рд░реНрдб рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред

@rogpeppe рдКрдкрд░ рдкреНрд░рддрд┐рдмрд┐рдВрдм рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ @rsc рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рджреЗрдЦреЗрдВред рджреЛ рдкреНрд░рдХрд╛рд░ рд╕рдорд╛рди рдирд╣реАрдВ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рдХреЗрд╡рд▓ рд╕рдЪ рдХрд╣реЗрдЧрд╛ рдФрд░ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреВрдЫреЗ рдЬрд╛рдиреЗ рдкрд░ рдПрдбреЗрдкреНрдЯрд░ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╡рд░рдг рдкреНрд░рджрд╛рди рдХрд░реЗрдЧрд╛ред

@niemeyer рдпрджрд┐ рджреЛ рдкреНрд░рдХрд╛рд░ рд╕рдорд╛рди рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд╣рдо рдкреИрдХреЗрдЬ рдХреЗ рдмреАрдЪ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ рд╕рдордп рдХреНрд░рдорд┐рдХ рдХреЛрдб рдорд░рдореНрдордд рдХрд╛ рд╕рдорд░реНрдерди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдо рдПрдХ рдирдпрд╛ рдЗрдореЗрдЬ рдкреИрдХреЗрдЬ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬреЛ рдЯрд╛рдЗрдк рд╕рдВрдЧрддрддрд╛ рдмрдирд╛рдП рд░рдЦрддрд╛ рд╣реИред

рд╣рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

package newimage
import "image"
type RGBA adapts image.RGB
func (r *RGBA) At(x, y) color.Color {
    return (*image.Buffer)(r).At(x, y)
}
etc for all the methods

рдХреНрд░рдорд┐рдХ рдХреЛрдб рдорд░рдореНрдордд рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЙрдореНрдореАрдж рдХрд░рдирд╛ рдЙрдЪрд┐рдд рд╣реИ
рдирдП рдкреИрдХреЗрдЬ рдореЗрдВ рдмрдирд╛рдИ рдЧрдИ рдЫрд╡рд┐ рдореМрдЬреВрджрд╛ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдЕрдиреБрдХреВрд▓ рд╣реИ
рдЬреЛ рдкреБрд░рд╛рдиреЗ рдЫрд╡рд┐ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред

рдЖрдЗрдП рддрд░реНрдХ рдХреЗ рд▓рд┐рдП рдорд╛рди рд▓реЗрдВ рдХрд┐ рдЫрд╡рд┐/рдкреАрдПрдирдЬреА рдкреИрдХреЗрдЬ рд╣реИ
рдирдИ рдЫрд╡рд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдЫрд╡рд┐/рдЬреЗрдкреАрдИрдЬреА рдирд╣реАрдВ рд╣реИред

рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рд╣рдореЗрдВ рдЗрд╕ рдХреЛрдб рдХреЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП:

img, err := png.Decode(r)
if err != nil { ... }
err = jpeg.Encode(w, img, nil)

рд▓реЗрдХрд┐рди, рдЪреВрдВрдХрд┐ рдпрд╣ *image.RGBA рдирд╣реАрдВ *newimage.RGBA рдХреЗ рдЦрд┐рд▓рд╛рдл рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЬреЛрд░ рджреЗрддрд╛ рд╣реИ,
рдпрд╣ AFAICS рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рдПрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рдХрд╛рд░ рднрд┐рдиреНрди рд╣реИрдВред

рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдордиреЗ рдЙрдкрд░реЛрдХреНрдд рдкреНрд░рдХрд╛рд░ рдХреЛ рд╕рдлрд▓ рдмрдирд╛рдпрд╛ рд╣реИ, рдЪрд╛рд╣реЗ рд╡рд╣ рдкреНрд░рдХрд╛рд░ *image.RGBA . рд╣реЛ
рдпрд╛ рдирд╣реАрдВред рдпрд╣ рд╡рд░реНрддрдорд╛рди рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдХреЛ рддреЛрдбрд╝ рджреЗрдЧрд╛ рдХрд┐:

рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рдХрд░реЗрдВред рдЯрд╛рдЗрдкрдСрдл (рдПрдХреНрд╕) == рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рдХрд░реЗрдВред рдЯрд╛рдЗрдкрдСрдл (рдПрдХреНрд╕ред (рдХрд┐рд╕реА рднреА рд╕реНрдЯреЗрдЯрд┐рдХ рдЯрд╛рдЗрдк))

рдпрд╣реА рд╣реИ, рдПрдХ рд╕реНрдерд┐рд░ рдкреНрд░рдХрд╛рд░ рдХреЗ рджрд╛рд╡реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рд╕реНрдерд┐рд░ рдкреНрд░рдХрд╛рд░ рдХреЗ a . рдкрд░ рдЬреЛрд░ рдирд╣реАрдВ рджреЗрдЧрд╛
рдореВрд▓реНрдп рд▓реЗрдХрд┐рди рдХрднреА-рдХрднреА рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕реЗ рдмрджрд▓ рджреЗрдЧрд╛ред

рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдордиреЗ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдХрд┐ рдареАрдХ рдерд╛, рддреЛ рд╢рд╛рдпрдж рд╣рдореЗрдВ рднреА рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА
рдПрдХ рдЕрдиреБрдХреВрд▓рд┐рдд рдкреНрд░рдХрд╛рд░ рдХреЛ рдХрд┐рд╕реА рднреА рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЛ рдЗрд╕рдХреЗ рдХрд┐рд╕реА рднреА рд╕рдВрдЧрдд рд╣реИ
рдЕрдиреБрдХреВрд▓рд┐рдд рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╕рдорд░реНрдерди, рдЕрдиреНрдпрдерд╛ рдпрд╛ рддреЛ рдирдпрд╛ рдпрд╛ рдкреБрд░рд╛рдирд╛ рдХреЛрдб рдмрдВрдж рд╣реЛ рдЬрд╛рдПрдЧрд╛
рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкреНрд░рдХрд╛рд░реЛрдВ рдореЗрдВ рдХрдирд╡рд░реНрдЯ рдХрд░рддреЗ рд╕рдордп рдХрд╛рдо рдХрд░рдирд╛
рдкреНрд░рдХрд╛рд░ рд╡реЗ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рдпрд╣ рдПрдХ рдФрд░ рд╡рд┐рд░реЛрдзрд╛рднрд╛рд╕реА рд╕реНрдерд┐рддрд┐ рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИ:

// oldInterface is some interface with methods that
// are only supported by the old type.
type oldInterface interface {
    OldMethod()
}
var x = interface{} = newpackage.Type{}
switch x.(type) {
case oldInterface:
    // This would fail because the newpackage.Type
    // does not implement OldMethod, even though we
    // we just supposedly checked that x implements OldMethod.
    reflect.TypeOf(x).Method("OldMethod")
}

рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рджреЛ рдкреНрд░рдХрд╛рд░ рд╣реИрдВ рдЬреЛ рджреЛрдиреЛрдВ рд╕рдорд╛рди рд╣реИрдВ рд▓реЗрдХрд┐рди рдЕрд▓рдЧ рд╣реИрдВ
рдЯрд╛рдЗрдк рд╕рд┐рд╕реНрдЯрдо рдФрд░ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рдЕрд╕рдВрдЧрддрддрд╛рдУрдВ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рдиреЗ рдореЗрдВ рдмрд╣реБрдд рдХрдард┐рди рд╣реЛрдЧрд╛
рдХреЛрдб рдореЗрдВ рдЬреЛ рдЧрддрд┐рд╢реАрд▓ рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред

рдореИрдВ "рдЯрд╛рдЗрдк рдПрдХреНрд╕ = рд╡рд╛рдИ" рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реВрдВред рдЗрд╕реЗ рд╕рдордЭрд╛рдирд╛ рдЖрд╕рд╛рди рд╣реИ рдФрд░ рдирд╣реАрдВ
рдЯрд╛рдЗрдк рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдмрд╣реБрдд рдЬреНрдпрд╛рджрд╛ рдмрд╛рдзрд┐рдд рдХрд░реЗрдВред

@rogpeppe : рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ @niemeyer рдХрд╛ рд╕реБрдЭрд╛рд╡ рдПрдХ рдЕрдиреБрдХреВрд▓рд┐рдд рдкреНрд░рдХрд╛рд░ рдХреЛ рдЗрд╕рдХреЗ рдореВрд▓ рдкреНрд░рдХрд╛рд░ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдирд╛ рд╣реИ, рдЬреЛ @josharian рдХреЗ рдкрд╣рд▓реЗ рдХреЗ рд╕реБрдЭрд╛рд╡реЛрдВ рдХреЗ рд╕рдорд╛рди рд╣реИред

рдзреАрд░реЗ-рдзреАрд░реЗ рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЙрд╕ рдХрд╛рдо рдХреЛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕реЗ рдЕрдиреБрдХреВрд▓рд┐рдд рдкреНрд░рдХрд╛рд░ рдХреЗ рддрд░реНрдХреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдкрд░реЛрдХреНрд╖ рд░реВрдк рд╕реЗ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛; рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдЗрд╕реЗ рднрд╛рд╖рд╛ рдореЗрдВ рд╕рд╣рдкреНрд░рд╕рд░рдг рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рдЕрд╕рдВрднрд╡ рдХрд╛рд░реНрдп рдирд╣реАрдВ рд╣реИ - рдмрд╣реБрдд рд╕реА рднрд╛рд╖рд╛рдПрдВ рд╕рд╣рдкреНрд░рд╕рд░рдг рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИрдВ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕рдорд╛рди рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╕рдВрд░рдЪрдирд╛ рд╡рд╛рд▓реЗ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП - рд▓реЗрдХрд┐рди рдпрд╣ рдЯрд╛рдЗрдк рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓рддрд╛ рдЬреЛрдбрд╝рддреА рд╣реИ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП ред

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдкрдиреЗ рдиреЛрдЯ рдХрд┐рдпрд╛ рд╣реИ, рдЗрд╕рд╕реЗ рдХреБрдЫ рджрд┐рд▓рдЪрд╕реНрдк рдХрд┐рдирд╛рд░реЗ рдХреЗ рдорд╛рдорд▓реЗ рд╕рд╛рдордиреЗ рдЖрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡реЗ рдЬрд░реВрд░реА рдирд╣реАрдВ рдХрд┐ "рд╡рд┐рд░реЛрдзрд╛рднрд╛рд╕реА" рд╣реЛрдВ:

type oldInterface interface {
    OldMethod()
}
var x = interface{} = newpackage.Type{}
switch y := x.(type) {
case oldInterface:
    reflect.TypeOf(y).Method("OldMethod")  // ok
    reflect.TypeOf(x).Method("NewMethod")  // ok

    // This would fail because y has been implicitly converted to oldInterface.
    reflect.TypeOf(y).Method("NewMethod")

    // This would fail because accessing OldMethod on newpackage.Type requires
    // a conversion to oldInterface.
    reflect.TypeOf(x).Method("OldMethod")
}
// This would fail because accessing OldMethod on newpackage.Type requires
// a conversion to oldInterface.

рдпрд╣ рдЕрднреА рднреА рдореЗрд░реЗ рд▓рд┐рдП рд╡рд┐рд░реЛрдзрд╛рднрд╛рд╕реА рд▓рдЧрддрд╛ рд╣реИред рд╡рд░реНрддрдорд╛рди рдореЙрдбрд▓ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рд╣реИ: рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдорд╛рди рдореЗрдВ рдПрдХ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╕реНрдерд┐рд░ рдкреНрд░рдХрд╛рд░ рд╣реЛрддрд╛ рд╣реИред рдЙрдкрд░реЛрдХреНрдд рдХреЛрдб рдореЗрдВ рд╣рдо рдЙрд╕ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдкреНрд░рдХрд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЬрдм рд╣рдо рдореВрд▓реНрдп рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рд╡реИрд╕рд╛ рдирд╣реАрдВ рджрд┐рдЦрддрд╛ рдЬреИрд╕рд╛ рд╣рдордиреЗ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдпрд╛ рд╣реИред рдпрд╣ рдореЗрд░реЗ рд╡рд┐рдЪрд╛рд░ рдореЗрдВ рднрд╛рд╖рд╛ рдореЗрдВ рдПрдХ рдЧрдВрднреАрд░ (рдФрд░ рд╕рдордЭрд╛рдиреЗ рдореЗрдВ рдХрдард┐рди) рдкрд░рд┐рд╡рд░реНрддрди рд╣реИред

рдпрд╣рд╛рдВ рдЪрд░реНрдЪрд╛ рд╕рдорд╛рдкреНрдд рд╣реЛрддреА рджрд┐рдЦ рд░рд╣реА рд╣реИред https://github.com/golang/go/issues/16339#issuecomment -247536289 рдореЗрдВ

рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣рд╛рдБ рднрд╛рд╡рдирд╛ рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рдЙрдкрдирд╛рдореЛрдВ рдХреЗ рдмрдЬрд╛рдп рдкреНрд░рдХрд╛рд░ рдХреЗ рдЙрдкрдирд╛рдореЛрдВ рдХреЗ рд▓рд┐рдП рд╣реИред рд╕рдВрднрд╡рддрдГ рдЧреБрд╕реНрддрд╛рд╡реЛ рдХрд╛ рдПрдбреЗрдкреНрдЯрд░ рд╡рд┐рдЪрд╛рд░ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЙрдкрдирд╛рдореЛрдВ рдХреЛ рд╡рд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди рд╕рдВрднрд╡рддрдГ рдирд╣реАрдВред рдлрд┐рд▓рд╣рд╛рд▓ рдпрд╣ рдереЛрдбрд╝рд╛ рдЬрдЯрд┐рд▓ рд▓рдЧрддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╢рд╛рдпрдж рдЪрд░реНрдЪрд╛ рдХреЗ рдЕрдВрдд рддрдХ рдПрдХ рд╕рд░рд▓ рд░реВрдк рдореЗрдВ рдкрд╣реБрдВрдЪ рдЬрд╛рдПрдЧрд╛ред рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдЪрд░реНрдЪрд╛ рдереЛрдбрд╝реА рджреЗрд░ рдФрд░ рдЬрд╛рд░реА рд░рд╣реЗред

рдореБрдЭреЗ рдЕрднреА рднреА рд╡рд┐рд╢реНрд╡рд╛рд╕ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╡реИрд╢реНрд╡рд┐рдХ рд╕рдВрд╕реНрдХрд░рдг "рдЖрдорддреМрд░ рдкрд░ рдПрдХ рдмрдЧ" рд╣реЛрддреЗ рд╣реИрдВ (рдФрд░ рдЙрди рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЬрд╣рд╛рдВ рд╡реЗ рдПрдХ рдмрдЧ рд╣реИрдВ, рд░реЗрд╕ рдбрд┐рдЯреЗрдХреНрдЯрд░ рдЙрд╕ рддрд░рд╣ рдХреА рдмрдЧ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╕рдВрдж рдХрд╛ рдЙрдкрдХрд░рдг рд╣реИ)ред рдореИрдВ рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐, рдпрджрд┐ рдЙрд╕ рддрд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдХреНрд╕реНрдЯреЗрдВрд╕рд┐рдмрд▓ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреА рдХрдореА рдХреЛ рдЙрдЪрд┐рдд рдард╣рд░рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдПрдХ рдкрд╢реБ рдЪрд┐рдХрд┐рддреНрд╕рдХ-рдЬрд╛рдВрдЪ рд▓рд╛рдЧреВ рдХреА рдЬрд╛рддреА рд╣реИ - рдХрд╣реЗрдВ - рдХреЛрдб рдореЗрдВ рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рдХреЗ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдХреЗ рд▓рд┐рдП рдЬрд╛рдВрдЪ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ init() рдпрд╛ рдЙрдирдХреА рдШреЛрд╖рдгрд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИред рдореИрдВ рднреЛрд▓реЗрдкрди рд╕реЗ рд╕реЛрдЪрддрд╛ рд╣реВрдВ рдХрд┐ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдХрдард┐рди рдирд╣реАрдВ рд╣реИ рдФрд░ рдЗрд╕реЗ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдХрд╛рдо рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП - рдХрд╣рддреЗ рд╣реИрдВ - рд╕рднреА godoc.org рдкрдВрдЬреАрдХреГрдд рдкреИрдХреЗрдЬ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓ рд╡реИрд╢реНрд╡рд┐рдХ var рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреНрдпрд╛ рд╣реИрдВ рдФрд░ рдХреНрдпрд╛ рд╣рдо рдХрд░рддреЗ рд╣реИрдВ рдЙрди рд╕рднреА рдмрдЧ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред

(рдореИрдВ рдпрд╣ рднреА рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐, рдпрджрд┐ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╡реИрд╢реНрд╡рд┐рдХ рдпреБрджреНрдз рдмрдврд╝рддреЗ рд╣реИрдВ, рддреЛ рдЙрдиреНрд╣реЗрдВ рдХреЙрдиреНрд╕-рдШреЛрд╖рдгрд╛рдУрдВ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдЕрд╡рдзрд╛рд░рдгрд╛рддреНрдордХ рд░реВрдк рд╕реЗ рдпрд╣реА рд╣реИрдВ рдФрд░ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдкреАрдЫреЗ рдХреА рдУрд░ рд╕рдВрдЧрдд рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдореИрдВ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдЗрд╕рд╕реЗ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдиреЗрддреГрддреНрд╡ рд╣реЛрдЧрд╛ рд╕рд░рдгреА-рдкреНрд░рдХрд╛рд░реЛрдВ рдореЗрдВ рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЬрдЯрд┐рд▓рддрд╛рдУрдВ рдФрд░ рдЕрдзрд┐рдХ рд╕реЛрдЪ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА)

рдкреБрди: "рдкреНрд░рддрд┐рдмрдВрдз? рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рдЙрдкрдирд╛рдо рдХреЗрд╡рд▓ рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдШреЛрд╖рд┐рдд рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред" -- рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдпрд╣ x/image/draw рд▓рд┐рдП рдбреНрд░реЙрдк-рдЗрди рдЙрдкрдпреЛрдЧрдХреЗрд╕ рдХреЛ рд░реЛрдХреЗрдЧрд╛, рдПрдХ рдореМрдЬреВрджрд╛ рдкреИрдХреЗрдЬ рдЬрд┐рд╕рдиреЗ рдЙрдкрдирд╛рдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд░реБрдЪрд┐ рд╡реНрдпрдХреНрдд рдХреА рд╣реИред рдореИрдВ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд▓реНрдкрдирд╛ рднреА рдХрд░ рд╕рдХрддрд╛ рдерд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд░рд╛рдЙрдЯрд░ рдкреИрдХреЗрдЬ рдпрд╛ рд╕рдорд╛рди рд░реВрдк рд╕реЗ net/http рдореЗрдВ рдЙрдкрдирд╛рдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ ( рд▓рд╣рд░реЗрдВ рд╣рд╛рде )ред

рдореИрдВ рдкреНрд░рддрд┐рд╡рд╛рджреЛрдВ рд╕реЗ рднреА рд╕рд╣рдордд рд╣реВрдВ рд╕рднреА рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рдХреЛ рд╣рдЯрд╛ рджреЗрдВ, рдЕрд░реНрдерд╛рдд рдореИрдВ рдЙрдирдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдирд╣реАрдВ рд░рдЦрдиреЗ рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рд╣реВрдВред

@Merovius , рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓ _exported_ рд╡реИрд╢реНрд╡рд┐рдХ рдпреБрджреНрдзреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛? рдпрд╣ рд╕рдЪ рд╣реИ рдХрд┐ рдПрдХ рдЧреИрд░-рдирд┐рд░реНрдпрд╛рддрд┐рдд рд╡реИрд╢реНрд╡рд┐рдХ рдареАрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдкреИрдХреЗрдЬ рдореЗрдВ рд╕рднреА рдХреЛрдб рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдареАрдХ рд╕реЗ рдХреИрд╕реЗ рд╕рдВрднрд╛рд▓рдирд╛ рд╣реИред рдпрд╣ рдХрдо рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдП рдЧрдП рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдЧреНрд▓реЛрдмрд▓реНрд╕ рдХрднреА рднреА рд╕рдордЭ рдореЗрдВ рдЖрддреЗ рд╣реИрдВред рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рд╣рдордиреЗ рдЦреБрдж рдХрдИ рдмрд╛рд░ рдпрд╣ рдЧрд▓рддреА рдХреА рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд░рдирдЯрд╛рдЗрдо рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реБрд░рдХреНрд╖рд┐рдд рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред MemProfileRateред рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдЖрдк рдпрд╣ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕реЗ рдЕрдкрдиреЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рдЬрд▓реНрджреА рд╕реЗрдЯ рдХрд░реЗрдВ рдФрд░ рдЖрд╢рд╛ рдХрд░реЗрдВ рдХрд┐ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЖрдпрд╛рдд рдХрд┐рдП рдЧрдП рдХрд┐рд╕реА рднреА рдкреИрдХреЗрдЬ рдиреЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЧреЛрд░реМрдЯрд╛рдЗрди рдХреЛ рд▓рд╛рдд рдирд╣реАрдВ рдорд╛рд░реА рдЬреЛ рд╕реНрдореГрддрд┐ рдЖрд╡рдВрдЯрд┐рдд рдХрд░ рд╕рдХрддреА рд╣реИред рдЖрдк var рдмрдирд╛рдо const рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рд╣реА рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рдо рдЗрд╕реЗ рдПрдХ рдФрд░ рджрд┐рди рдХреЗ рд▓рд┐рдП рдЫреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред

рдПрдХреНрд╕/рдЫрд╡рд┐/рдбреНрд░рд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдЪреНрдЫрд╛ рдмрд┐рдВрджреБред рдЕрдЧрд▓реЗ рдЕрдкрдбреЗрдЯ рдореЗрдВ рд╕рд╛рд░рд╛рдВрд╢ рдореЗрдВ рдЬреЛрдбрд╝ рджреЗрдВрдЧреЗред

рдореИрдВ рдЧреЛ рдХреЛрдб рдХреЗ рдПрдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХреЛрд╖ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЬрд┐рд╕рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд╣рдо рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЙрдард╛рдП рдЧрдП рд╕рд╡рд╛рд▓реЛрдВ рдХреЗ рдЬрд╡рд╛рдм рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВрдиреЗ рдХреБрдЫ рд╣рдлрд╝реНрддреЗ рдкрд╣рд▓реЗ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдФрд░ рдореБрдЭреЗ рдХреБрдЫ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред рдпрд╣ рдЬрд┐рддрдирд╛ рд▓рдЧрддрд╛ рд╣реИ рдЙрд╕рд╕реЗ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рдХрд╛рдо рд╣реИ, рд▓реЗрдХрд┐рди рдЙрд╕ рдбреЗрдЯрд╛ рдХреЛ рд╕реЗрдЯ рдХрд░рдирд╛ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдФрд░ рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рд╣рдо рд╡рд╣рд╛рдВ рдкрд╣реБрдВрдЪреЗрдВрдЧреЗред

@rsc рдЗрд╕ рд╡рд┐рд╖рдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдкрдХреА GothamGo рдкреНрд░рд╕реНрддреБрддрд┐ рдХреЛ youtube https://www.youtube.com/watch?v=h6Cw9iCDVcU рдкрд░ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдпрд╣ рдкрд╣рд▓реА рдкреЛрд╕реНрдЯ рдореЗрдВ рдПрдХ рдЕрдЪреНрдЫрд╛ рдЬреЛрдбрд╝ рджреЗрдЧрд╛ред

"рдХрд┐рд╕ рдЕрдиреНрдп рдореБрджреНрджреЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рдХрд╛рд░ рдХреЗ рдЙрдкрдирд╛рдореЛрдВ рдХреЗ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ?" рдЕрдиреБрднрд╛рдЧ рдпрд╣ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдореЗрдВ рд╕рд╣рд╛рдпрдХ рд╣реЛрдЧрд╛ рдХрд┐ "рдХреНрдпрд╛ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдЙрдкрдирд╛рдо рджреНрд╡рд╛рд░рд╛ рдирд╛рдорд┐рдд рдкреНрд░рдХрд╛рд░реЛрдВ рдкрд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ?" рдПрдХ рдХрдард┐рди рд╕рдВрдЦреНрдпрд╛ рд╣реИред рдореБрдЭреЗ рдПрд╣рд╕рд╛рд╕ рд╣реИ рдХрд┐ рдпрд╣ рдЦрдВрдб рдХреА рдирд┐рд░реНрдзрд╛рд░рд┐рдд рднрд╛рд╡рдирд╛ рдХреЗ рдЦрд┐рд▓рд╛рдл рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рджреЗрдЦрд╛ рд╣реИ рдХрд┐, рдЙрдкрдирд╛рдореЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реА рдмрд╛рддрдЪреАрдд рдореЗрдВ, рдпрд╣рд╛рдВ рдФрд░ рдЕрдиреНрдп рдЬрдЧрд╣реЛрдВ рдкрд░, рдРрд╕реЗ рд▓реЛрдЧ рд╣реИрдВ рдЬреЛ рддреБрд░рдВрдд рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рджреЗрддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЙрдирдХрд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рдЙрдкрдирд╛рдо рдЖрд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рдЗрд╕рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдВрдЧреЗ рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд╛рд░рдг рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВред рдпрд╣ рдкрд░рд┐рднрд╛рд╖рд╛ рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИ, рд▓реЗрдХрд┐рди рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЗрд╕рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдиреЗ рд╕реЗ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рдЖрдЧреЗ рдФрд░ рдкреАрдЫреЗ рд╢реЙрд░реНрдЯ рд╕рд░реНрдХрд┐рдЯ рд╣реЛрдЧрд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЙрдкрдирд╛рдореЛрдВ рдХреЗ рд▓рд┐рдП рдирдП рдкреНрд░рд╕реНрддрд╛рд╡ рдореЗрдВ рдПрдХ рдЙрдкрдирд╛рдо рдЕрдХреНрд╕рд░ рдкреВрдЫреЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рд╢реНрди рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реЛ, рдХреНрдпрд╛ рдпрд╣ рдЗрд╕ рдзрд╛рдЧреЗ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

@Merovius рдХрд┐рд╕реА рднреА рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдП рдЧрдП рдкреИрдХреЗрдЬ-рдЧреНрд▓реЛрдмрд▓

рдПрдХ рдкреИрдХреЗрдЬ рдХреЗ рджрд┐рдП рдЧрдП рд╕рдВрд╕реНрдХрд░рдг n p ,

package p
var Global = 0

рд╕рдВрд╕реНрдХрд░рдг n+1 рдореЗрдВ рдЧреЗрдЯрд░реНрд╕ рдФрд░ рд╕реЗрдЯрд░реНрд╕ рдХреЛ рдкреЗрд╢ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рд╡реЗрд░рд┐рдПрдмрд▓ рдХреЛ рдкрджрд╛рд╡рдирдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ

package p
//Deprecated: use GetGlobal and SetGlobal.
var Global = 0
func GetGlobal() int {
    return Global
}
func SetGlobal(n int) {
   Global = n
}

рдФрд░ рд╕рдВрд╕реНрдХрд░рдг n + 2 Global рдХреЛ рдирд┐рд░реНрдпрд╛рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ

package p
var global = 0
func GetGlobal() int {
    return global
}
func SetGlobal(n int) {
   global = n
}

(рдкрд╛рдардХ рдХреЗ рд▓рд┐рдП рд╡реНрдпрд╛рдпрд╛рдо рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ: рдЖрдк n + 2 рдореЗрдВ рдореНрдпреВрдЯреЗрдХреНрд╕ рдореЗрдВ global рддрдХ рдкрд╣реБрдВрдЪ рднреА рд▓рдкреЗрдЯ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ GetGlobal() рдХреЛ рдЕрдзрд┐рдХ рдореБрд╣рд╛рд╡рд░реЗрджрд╛рд░ Global() рдкрдХреНрд╖ рдореЗрдВ рд╣рдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВред)

рдпрд╣ рддреЗрдЬреА рд╕реЗ рдареАрдХ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдХреНрд░рдорд┐рдХ рдХреЛрдб рдорд░рдореНрдордд рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ func рдЙрдкрдирд╛рдо (рдпрд╛ рдЙрдирдХрд╛ рд╡рд░реНрддрдорд╛рди рд╕рдорд╛рдзрд╛рди) рд╕рдЦреНрддреА рд╕реЗ рдЖрд╡рд╢реНрдпрдХ рд╣реЛред

@rsc рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЕрдкрдиреЗ рд╕рд╛рд░рд╛рдВрд╢ рд╕реЗ рдмрд╛рд╣рд░ рдХрд┐рдП рдЧрдП рдЙрдкрдирд╛рдореЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рддреБрдЪреНрдЫ рдЙрдкрдпреЛрдЧ: рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдирд╛рдоред (рд╢рд╛рдпрдж рдкрд╛рд╕реНрдХрд▓ рдХреЗ рд▓рд┐рдП рдПрдХрдорд╛рддреНрд░ рдкреНрд░реЗрд░рдгрд╛, рдЬрд┐рд╕рдореЗрдВ рд╢реБрд░реБрдЖрдд рдореЗрдВ рдкреИрдХреЗрдЬ рдЬреИрд╕реА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ-рдЗрди-рдж-рдмрдбрд╝реА рд╕реБрд╡рд┐рдзрд╛рдПрдВ рдирд╣реАрдВ рдереАрдВред) рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдорд╛рдореВрд▓реА рд╣реИ, рдпрд╣ рдПрдХрдорд╛рддреНрд░ рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓рд╛ рд╣реИ рдЬрд╣рд╛рдВ рдЧреИрд░-рдирд┐рд░реНрдпрд╛рддрд┐рдд рдЙрдкрдирд╛рдо рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╢рд╛рдпрдж рдЙрд╕ рдХрд╛рд░рдг рд╕реЗ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИред

@jimmyfrasche рдЖрдк рд╕рд╣реА рд╣реИрдВред рдореБрдЭреЗ рдЧреЗрдЯрд░реНрд╕ рдФрд░ рд╕реЗрдЯрд░реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИ (рдЬреИрд╕реЗ рдореИрдВ рдЙрдиреНрд╣реЗрдВ рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдлрд╝реАрд▓реНрдб рдХреЗ рд▓рд┐рдП рд░рдЦрдирд╛ рдкрд╕рдВрдж рдирд╣реАрдВ рдХрд░рддрд╛) рд▓реЗрдХрд┐рди рдЖрдкрдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕рд╣реА рд╣реИред

рдЙрдкрдирд╛рдореЛрдВ рдХреЗ рдЧреИрд░-рдорд░рдореНрдордд рдЙрдкрдпреЛрдЧреЛрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдбреНрд░реЙрдк-рдЗрди рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдкреИрдХреЗрдЬ рдмрдирд╛рдирд╛) рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдмрд┐рдВрджреБ рдмрдирд╛рдпрд╛ рдЬрд╛рдирд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдорд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ var-aliases рдХреЗ рдорд╛рдорд▓реЗ рдХреЛ рдХрдордЬреЛрд░ рдХрд░рддрд╛ рд╣реИред

@Merovius рд╕рднреА рдмрд┐рдВрджреБрдУрдВ рдкрд░ рд╕рд╣рдордд рд╣реБрдПред рдореИрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЦреБрд╢ рдирд╣реАрдВ рд╣реВрдБ, рд▓реЗрдХрд┐рди рддрд░реНрдХ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ vтШ╣v

@niemeyer рдХреНрдпрд╛ рдЖрдк рд╕реНрдкрд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдПрдбреЗрдкреНрдЯрд░ рдорд╛рдЗрдЧреНрд░реЗрдЯрд┐рдВрдЧ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреА рд╕рд╣рд╛рдпрддрд╛ рдХреИрд╕реЗ рдХрд░реЗрдВрдЧреЗ рдЬрд╣рд╛рдВ рдкреБрд░рд╛рдиреЗ рдФрд░ рдирдП рджреЛрдиреЛрдВ рдореЗрдВ рдПрдХ рд╣реА рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд┐рдзрд┐ рд╣реИ рд▓реЗрдХрд┐рди рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд╣реИрдВред рдХрд┐рд╕реА рд╡рд┐рдзрд┐ рдореЗрдВ рддрд░реНрдХ рдЬреЛрдбрд╝рдирд╛ рдпрд╛ рддрд░реНрдХ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдмрджрд▓рдирд╛ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рдПрдХ рдХреЛрдбрдмреЗрд╕ рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рдХрд╛рд╕ рд╣реЛрдВрдЧреЗред

@rogpeppe рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЖрдЬ рдРрд╕рд╛ рд╣реА рд╣реЛрддрд╛ рд╣реИ:

type two one

рдпрд╣ one рдФрд░ two рд╕реНрд╡рддрдВрддреНрд░ рдкреНрд░рдХрд╛рд░ рдмрдирд╛рддрд╛ рд╣реИ, рдФрд░ рдЪрд╛рд╣реЗ рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реЛ рдпрд╛ interface{} рддрд╣рдд, рдпрд╣реА рдЖрдк рджреЗрдЦрддреЗ рд╣реИрдВред рдЖрдк one рдФрд░ two рдХреЗ рдмреАрдЪ рднреА рдХрдирд╡рд░реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдКрдкрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдПрдбреЙрдкреНрдЯрд░ рдкреНрд░рд╕реНрддрд╛рд╡ рдЙрд╕ рдЕрдВрддрд┐рдо рдЪрд░рдг рдХреЛ рдПрдбреЗрдкреНрдЯрд░ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдмрдирд╛рддрд╛ рд╣реИред рдЖрдкрдХреЛ рдХрдИ рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдкреНрд░рд╕реНрддрд╛рд╡ рдкрд╕рдВрдж рдирд╣реАрдВ рдЖ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рдХреБрдЫ рднреА рд╡рд┐рд░реЛрдзрд╛рднрд╛рд╕реА рдирд╣реАрдВ рд╣реИред

@iand рдЬреИрд╕рд╛ рдХрд┐ type two one рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╣реИ, рджреЛ рдкреНрд░рдХрд╛рд░реЛрдВ рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рд╡рд┐рдзрд┐ рд╕реЗрдЯ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдорд┐рд▓рд╛рди рдирд╛рдореЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдЦрд╛рд╕ рдирд╣реАрдВ рд╣реИред рдкреБрд░рд╛рдиреЗ рдХреЛрдб рдЖрдзрд╛рд░реЛрдВ рдХреЛ рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╡реЗ рдкрд┐рдЫрд▓реЗ рдкреНрд░рдХрд╛рд░ (рдЕрдм рдПрдХ рдПрдбреЗрдкреНрдЯрд░) рдХреЗ рддрд╣рдд рдкреБрд░рд╛рдиреЗ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд░рд╣реЗрдВрдЧреЗред рдирдП рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдирдпрд╛ рдХреЛрдб рдирдП рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ред рдирдП рдкреНрд░рдХрд╛рд░ рдХреЗ рдорд╛рди рдХреЛ рдкреБрд░рд╛рдиреЗ рдХреЛрдб рдореЗрдВ рдкрд╛рд╕ рдХрд░рдирд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕реЗ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╕рдВрдХрд▓рдХ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдмрд╛рдж рд╡рд╛рд▓рд╛ рдкреВрд░реНрд╡ рдХрд╛ рдПрдбрд╛рдкреНрдЯрд░ рд╣реИ, рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╕рдВрдмрдВрдзрд┐рдд рд╡рд┐рдзрд┐ рд╕реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред

@niemeyer рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрди рдПрдбреЗрдкреНрдЯрд░ рдХреЗ рдкреАрдЫреЗ рдмрд╣реБрдд рдЬрдЯрд┐рд▓рддрд╛ рдЫрд┐рдкреА рд╣реИ рдЬреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рд╣реИред рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЙрдкрдирд╛рдореЛрдВ рдХреА рд╕рд╛рджрдЧреА рдЙрдирдХреЗ рдкрдХреНрд╖ рдореЗрдВ рджреГрдврд╝рддрд╛ рд╕реЗ рд╡рдЬрди рдХрд░рддреА рд╣реИред рдореИрдВ рдЙрди рд╕рднреА рдЪреАрдЬреЛрдВ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреИрда рдЧрдпрд╛, рдЬрд┐рдиреНрд╣реЗрдВ рдХреЗрд╡рд▓ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЙрдкрдирд╛рдореЛрдВ рдХреЗ рд▓рд┐рдП рдЕрджреНрдпрддрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдФрд░ рдпрд╣ рдПрдХ рдмрд╣реБрдд рд▓рдВрдмреА рд╕реВрдЪреА рд╣реИред рдПрдбреЗрдкреНрдЯрд░ рдХреЗ рд▓рд┐рдП рд╕реВрдЪреА рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд▓рдВрдмреА рд╣реЛрдЧреА, рдФрд░ рдореИрдВ рдЕрднреА рднреА рд╕рднреА рд╡рд┐рд╡рд░рдгреЛрдВ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирд╣реАрдВ рд╕рдордЭрддрд╛ рд╣реВрдВред рдореИрдВ рд╕реБрдЭрд╛рд╡ рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рд╣рдо рдЕрднреА рдХреЗ рд▓рд┐рдП рдЙрдкрдирд╛рдо рдЯрд╛рдЗрдк рдХрд░реЗрдВ рдФрд░ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рднрд╛рд░реА рдПрдбреЗрдкреНрдЯрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд┐рд░реНрдгрдп рдмрд╛рдж рдореЗрдВ рдЫреЛрдбрд╝ рджреЗрдВ, рдпрджрд┐ рдЖрдк рдПрдХ рдкреВрд░реНрдг рдкреНрд░рд╕реНрддрд╛рд╡ рдкрд░ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ (рд▓реЗрдХрд┐рди рдлрд┐рд░ рд╕реЗ рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рд╡рд╣рд╛рдВ рдбреНрд░реЗрдЧрди рдЧреБрдкреНрдд рдирд╣реАрдВ рд╣реИрдВ) .

@jimmyfrasche рдЙрдкрдирд╛рдореЛрдВ рдкрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЙрдкрдирд╛рдо рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рдзрд┐ рдкрд░рд┐рднрд╛рд╖рд╛ рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рдХреЛ рджрд░рдХрд┐рдирд╛рд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВ: рдпрджрд┐ рдХреЛрдИ рдкреИрдХреЗрдЬ T1 = otherpkg.T2 рдкреНрд░рдХрд╛рд░ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ, рддреЛ рдпрд╣ T1 рдкрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рдпрд╣ рд╕реАрдзреЗ otherpkg.T2 рдкрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрджрд┐ рдХреЛрдИ рдкреИрдХреЗрдЬ рдЯрд╛рдЗрдк T1 = T2 (рджреЛрдиреЛрдВ рдПрдХ рд╣реА рдкреИрдХреЗрдЬ рдореЗрдВ) рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЙрддреНрддрд░ рдХрдо рд╕реНрдкрд╖реНрдЯ рд╣реИред рд╣рдо рдПрдХ рдкреНрд░рддрд┐рдмрдВрдз рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рдЗрд╕рдХреА (рдЕрднреА рддрдХ) рдХреЛрдИ рд╕реНрдкрд╖реНрдЯ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

рд╢реАрд░реНрд╖-рд╕реНрддрд░реАрдп рдЪрд░реНрдЪрд╛ рд╕рд╛рд░рд╛рдВрд╢ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ ред рдкрд░рд┐рд╡рд░реНрддрди:

  • GothamGo рд╡реАрдбрд┐рдпреЛ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд▓рд┐рдВрдХ
  • рдкреНрд░рддрд┐ @jba рд╕рдВрднрд╛рд╡рд┐рдд рдЙрдкрдпреЛрдЧ рдХреЗ рд░реВрдк рдореЗрдВ "рд▓рдВрдмреЗ рдирд╛рдореЛрдВ рдХреЛ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдХрд░рдирд╛" рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ред
  • рдкреНрд░рддрд┐ @Merovius рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдкреНрд░рддрд┐рдмрдВрдз рдХреЗ рдЦрд┐рд▓рд╛рдл рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ x/рдЫрд╡рд┐/рдбреНрд░рд╛ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ред
  • рдЙрдкрдирд╛рдореЛрдВ рдкрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рдкрд╛рда рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛, рдкреНрд░рддрд┐ @jimmyfrascheред

рдбрд┐рдЬрд╝рд╛рдЗрди рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛: golang.org/design/18130-type-alias

рдЬреИрд╕рд╛ рдХрд┐ рдПрдХ рд╕рдкреНрддрд╛рд╣ рдкрд╣рд▓реЗ рд╣реБрдЖ рдерд╛, рдЕрднреА рднреА рдЯрд╛рдЗрдк рдЙрдкрдирд╛рдореЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрдо рд╕рд╣рдорддрд┐ рдкреНрд░рддреАрдд рд╣реЛрддреА рд╣реИред рд░реЙрдмрд░реНрдЯ рдФрд░ рдореИрдВрдиреЗ рдПрдХ рдФрдкрдЪрд╛рд░рд┐рдХ рдбрд┐рдЬрд╝рд╛рдЗрди рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛, рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рдЕрднреА рдЪреЗрдХ рдЗрди рдХрд┐рдпрд╛ рд╣реИ (рдКрдкрд░ рд▓рд┐рдВрдХ)ред

рдкреНрд░рд╕реНрддрд╛рд╡ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдмрд╛рдж, рдХреГрдкрдпрд╛ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ _рдпрд╣рд╛рдБ_ рдкреНрд░рд╕реНрддрд╛рд╡ рдкрд░ рдореВрд▓ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ рдкреЛрд╕реНрдЯ рдХрд░реЗрдВред рд╡рд░реНрддрдиреА/рд╡реНрдпрд╛рдХрд░рдг/рдЖрджрд┐ Gerrit codereview рдкреГрд╖реНрда https://go-review.googlesource.com/#/c/34592/ рдкрд░ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ

рдореИрдВ "рдПрдореНрдмреЗрдбрд┐рдВрдЧ рдкрд░ рдкреНрд░рднрд╛рд╡" рдкрд░ рдкреБрдирд░реНрд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдпрд╣ рдХреНрд░рдорд┐рдХ рдХреЛрдб рдорд░рдореНрдордд рдХреЗ рд▓рд┐рдП рдкреНрд░рдХрд╛рд░ рдХреЗ рдЙрдкрдирд╛рдореЛрдВ рдХреА рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЛ рд╕реАрдорд┐рдд рдХрд░рддрд╛ рд╣реИред рдЕрд░реНрдерд╛рддреН, рдпрджрд┐ p1 рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдирд╛рдо рдмрджрд▓рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ type T1 = T2 рдФрд░ рдкреИрдХреЗрдЬ p2 рдПрдХ рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдореЗрдВ p1.T2 рдПрдореНрдмреЗрдб рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╡реЗ рдЙрд╕ рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЛ p1.T1 рдЕрдкрдбреЗрдЯ рдирд╣реАрдВ рдХрд░ рдкрд╛рдПрдВрдЧреЗред p3 рдирд╛рдо рд╕реЗ рдПрдореНрдмреЗрдбреЗрдб рд╕рдВрд░рдЪрдирд╛ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред p2 рдлрд┐рд░ p1.T1 рдХреЛ рддреЛрдбрд╝реЗ рдмрд┐рдирд╛ p3 рд╕реНрд╡рд┐рдЪ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛; p3 рд╡рд░реНрддрдорд╛рди p2 рдХреЛ рддреЛрдбрд╝реЗ рдмрд┐рдирд╛, рдирд╛рдо рдХреЛ p1.T1 рдЕрдкрдбреЗрдЯ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред

рдЗрд╕рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реЛрдЧрд╛, рдХ) рд╕рд╛рдорд╛рдиреНрдп рд╕реАрдорд╛ рдореЗрдВ рдХрд┐рд╕реА рднреА рд╕рдВрдЧрддрддрд╛ / рдкрджрд╛рд╡рдирддрд┐-рдЕрд╡рдзрд┐ рдХреЗ рд╡рд╛рджреЗ рдХреЛ рдХреЛрдб рд╕реЗ рдЬреЛ рдирд╛рдо рд╕реЗ рдПрдореНрдмреЗрдбреЗрдб рдлрд╝реАрд▓реНрдб рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдпрд╛ рдмреА) рдПрдХ рдЕрд▓рдЧ рдмрд╣рд┐рд╖реНрдХрд░рдг рдЪрд░рдг рдЬреЛрдбрд╝реЗрдВ, рдЗрд╕рд▓рд┐рдП p1 рдХрд╣рддреЗ рд╣реИрдВ type T1 = T2 рдФрд░ deprecates T2 , рддреЛ p2 (рдорд╛рдирд╛) рдХреА рдЪрд░реНрдЪрд╛ рдХрд░рддреЗ рд╣реБрдП deprecates s2.T2 рдирд╛рдо рд╕реЗ, рдХреЗ рд╕рднреА рдЖрдпрд╛рддрдХреЛрдВ p2 рдорд░рдореНрдордд рдХреА рдЬрд╛рдПрдЧреА рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдлрд┐рд░ p2 рд╕реНрд╡рд┐рдЪ рдХрд░рддрд╛ рд╣реИред

рдЕрдм, рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рд╕рдорд╕реНрдпрд╛ рдЕрдирд┐рд╢реНрдЪрд┐рдд рдХрд╛рд▓ рддрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХрд░ рд╕рдХрддреА рд╣реИ; p4 p3 рдЖрдпрд╛рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рд╕реНрд╡рдпрдВ p2 рд╕реЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдПрдореНрдмреЗрдб рдХрд░рддрд╛ рд╣реИ; рдореБрдЭреЗ рдРрд╕рд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ, рдХрд┐ p3 рднреА рджреЛ рдмрд╛рд░ рдПрдореНрдмреЗрдб рдХрд┐рдП рдЧрдП рдлрд╝реАрд▓реНрдб рдХреЛ рдирд╛рдо рд╕реЗ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╣рд┐рд╖реНрдХрд░рдг рдЕрд╡рдзрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ? рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЕрдВрддрд░рддрдо рдореВрд▓реНрдпрд╣реНрд░рд╛рд╕ рдЕрд╡рдзрд┐ рдЕрд╕реАрдо рд╣реЛ рдЬрд╛рддреА рд╣реИ рдпрд╛ рд╕рдмрд╕реЗ рдмрд╛рд╣рд░реА рдЕрдирдВрдд рд╣реЛ рдЬрд╛рддреА рд╣реИред рд▓реЗрдХрд┐рди рд╕рдорд╕реНрдпрд╛ рдХреЛ рдкреБрдирд░рд╛рд╡рд░реНрддреА рдорд╛рдирдиреЗ рдХреЗ рдмрд┐рдирд╛ рднреА, рдпрд╣ рдореБрдЭреЗ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ, рдХрд┐ рдмреА) рд╕рдордп рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдХрдард┐рди рд╣реЛрдЧрд╛ ( p2 рдХреА рдореВрд▓реНрдпрд╣реНрд░рд╛рд╕ рдЕрд╡рдзрд┐ рдХреЛ p1 рдХреА рдореВрд▓реНрдпрд╣реНрд░рд╛рд╕ рдЕрд╡рдзрд┐ рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдорд╛рд╣рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдХрдо рд╕реЗ рдХрдо 2T рдЪреБрдирдирд╛ рд╣реЛрдЧрд╛, рддрд╛рдХрд┐ рд░рд┐рд▓реАрдЬрд╝ рд▓рд╛рдЗрди рдЕрдк рд╣реЛ рдЬрд╛рдП)ред

рдП) рдореБрдЭреЗ рднреА рдЕрд╡реНрдпрд╡рд╣рд╛рд░рд┐рдХ рд▓рдЧрддрд╛ рд╣реИ; рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдпрджрд┐ рдХреЛрдИ рдкреНрд░рдХрд╛рд░ *byte.Buffer рдПрдореНрдмреЗрдб рдХрд░рддрд╛ рд╣реИ рдФрд░ рдореИрдВ рдЙрд╕ рдлрд╝реАрд▓реНрдб рдХреЛ рд╕реЗрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ (рдпрд╛ рдЙрд╕ рдмрдлрд░ рдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдкрд╛рд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ), рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ, рдЗрд╕реЗ рдирд╛рдо рд╕реЗ рд╕рдВрджрд░реНрднрд┐рдд рдХрд┐рдП рдмрд┐рдирд╛ (рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдкреНрд░рд╛рд░рдВрднрдХрд░реНрддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛) рдирд╛рдо рдХреЗ рдмрд┐рдирд╛, рдЬреЛ рд╕рдВрдЧрддрддрд╛ рдЧрд╛рд░рдВрдЯреА рднреА рдЦреЛ рджреЗрддрд╛ рд╣реИ :))ред

рдореИрдВ рдЙрдкрдирд╛рдо рдХреЗ рд░реВрдк рдореЗрдВ byte рдФрд░ rune рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рд╣реЛрдиреЗ рдХреЗ рдЖрдХрд░реНрд╖рдг рдХреЛ рд╕рдордЭрддрд╛ рд╣реВрдВред рд▓реЗрдХрд┐рди, рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, рдореИрдВ рдЙрд╕ рдорд╛рдзреНрдпрдорд┐рдХ рдХреЛ рдХреНрд░рдорд┐рдХ рдорд░рдореНрдордд рдХреЗ рд▓рд┐рдП рдкреНрд░рдХрд╛рд░ рдХреЗ рдЙрдкрдирд╛рдореЛрдВ рдХреА рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░рдЦреВрдВрдЧрд╛ред рджреЛрдиреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдЪрд╛рд░ рдХрд╛ рдПрдХ (рд╢рд╛рдпрдж рдмреБрд░рд╛) рдЙрджрд╛рд╣рд░рдг рд╣реЛрдЧрд╛, рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдП рдЧрдП рдирд╛рдореЛрдВ рдХреЗ рд▓рд┐рдП, рдХрд┐рд╕реА рднреА рдЙрдкрдирд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рд╕реА рдПрдореНрдмреЗрдбреЗрдб рдлрд╝реАрд▓реНрдб рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдЕрдирдПрдХреНрд╕рдкреЛрд░реНрдЯреЗрдб рдирд╛рдореЛрдВ рдХреЗ рд▓рд┐рдП (рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ рдЙрд╕реА рдкреИрдХреЗрдЬ рддрдХ рд╕реАрдорд┐рдд, рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд▓реЗрдЦрдХ рдХреЗ рдЕрдзрд┐рдХ рдирд┐рдпрдВрддреНрд░рдг рдореЗрдВ) ) рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╢рдмреНрджрд╛рд░реНрде рд░рдЦреЗрдВ? рд╣рд╛рдБ, рдореИрдВ рднреА рдЗрд╕ рднреЗрдж рдХреЛ рдирд╛рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдБред рд╢рд╛рдпрдж рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ рдмреЗрд╣рддрд░ рд╡рд┐рдЪрд╛рд░ рд╣реИред

рдПрдХ рдЙрдкрдирд╛рдо рдкрд░ @rsc рдкреБрдирдГ рд╡рд┐рдзрд┐рдпрд╛рдБ

рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдкреНрд░рдХрд╛рд░ рдПрд╕ рд╣реИ рдЬреЛ рдЯрд╛рдЗрдк рдЯреА рдХреЗ рд▓рд┐рдП рдЙрдкрдирд╛рдо рд╣реИ, рджреЛрдиреЛрдВ рдПрдХ рд╣реА рдкреИрдХреЗрдЬ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реИрдВ, рдФрд░ рдЖрдк рдПрд╕ рдкрд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡рд┐рдзрд┐рдпреЛрдВ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ, рддреЛ рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдЯреА рдПрдХ рдЕрд▓рдЧ рдкреИрдХреЗрдЬ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдкреАрдПрдл рдХреЗ рд▓рд┐рдП рдЙрдкрдирд╛рдо рд╣реИ? рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рднреА рд╡рд┐рдлрд▓ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд░реЛрдд рдХреЗ рдкреНрд░рд╡рд░реНрддрди, рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдФрд░ рдкрдардиреАрдпрддрд╛ рдореЗрдВ рд╕реВрдХреНрд╖реНрдорддрд╛рдПрдВ рд╣реИрдВ (рдпрджрд┐ рдЯреА рдПрд╕ рд╕реЗ рдЕрд▓рдЧ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╣реИ, рддреЛ рдпрд╣ рддреБрд░рдВрдд рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрдк рдЯреА рдкрд░ рдПрдХ рд╡рд┐рдзрд┐ рдХреЛ рджреЗрдЦрдХрд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдирд╣реАрдВ рдЯреА рдХреА рдкрд░рд┐рднрд╛рд╖рд╛)ред

рдирд┐рдпрдо - рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ type T = S , рддреЛ рдЖрдк T рдкрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреА рдШреЛрд╖рдгрд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рдпрд╣ рдирд┐рд░рдкреЗрдХреНрд╖ рд╣реИ рдФрд░ рд╕реНрд░реЛрдд рдореЗрдВ рдЙрд╕ рдПрдХрд▓ рдкрдВрдХреНрддрд┐ рд╕реЗ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдпрд╣ рд╕реНрд░реЛрдд рдХреА рдЬрд╛рдВрдЪ рдХрд┐рдП рдмрд┐рдирд╛ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ рдПрд╕, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЙрдкрдирд╛рдо рд╕реНрдерд┐рддрд┐ рдХреЗ рдЙрдкрдирд╛рдо рдореЗрдВ рдХрд░реЗрдВрдЧреЗред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ рд╕реНрдерд╛рдиреАрдп рдкреНрд░рдХрд╛рд░ рдХреЗ рдЙрдкрдирд╛рдо рдкрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рд╕реЗ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЙрдкрдирд╛рдо рдФрд░ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рдмреАрдЪ рднреЗрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдЪреВрдВрдХрд┐ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдПрд╕ рдФрд░ рдЯреА рджреЛрдиреЛрдВ рдкрд░ рд╡реИрд╕реЗ рднреА рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдпрд╣ рдкреНрд░рддрд┐рдмрдВрдз рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдкрд░ рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рд╡реНрдпрдХреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЙрд╕реЗ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╕рд┐рд░реНрдл рдЪреАрдЬреЛрдВ рдХреЛ рд╕рд░рд▓ рдФрд░ рдЕрдзрд┐рдХ рд╕рдорд╛рди рд░рдЦрддрд╛ рд╣реИ..

@jimmyfrasche рдЕрдЧрд░ рд╣рдо type T1 = T2 рд▓рд┐рдЦ рд░рд╣реЗ рд╣реИрдВ рдФрд░ T2 рдПрдХ рд╣реА рдкреИрдХреЗрдЬ рдореЗрдВ рд╣реИ, рддреЛ рд╣рдо рд╢рд╛рдпрдж T2 рдирд╛рдо рдХреЛ рд╣рдЯрд╛ рд░рд╣реЗ рд╣реИрдВред рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рд╣рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЧреЛрдбреЛрдХ рдореЗрдВ T2 рдХреА рдпрдерд╛рд╕рдВрднрд╡ рдХрдо рдШрдЯрдирд╛рдПрдВ рд╣реЛрдВред рдЗрд╕рд▓рд┐рдП рд╣рдо рд╕рднреА рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ func (T1) M() рд░реВрдк рдореЗрдВ рдШреЛрд╖рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

@jba рдЙрд╕ рдЙрдкрдирд╛рдо рдкрд░ рдШреЛрд╖рд┐рдд рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдЙрдкрдирд╛рдо рдХреЗ рддрд░реАрдХреЛрдВ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЧреЙрдбреЛрдХ рдкрд░рд┐рд╡рд░реНрддрди рд╕реНрд░реЛрдд рдХреА рдкрдардиреАрдпрддрд╛ рдХреЛ рдмрджрд▓реЗ рдмрд┐рдирд╛ рдЙрд╕ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рдкреВрд░рд╛ рдХрд░реЗрдЧрд╛ред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░ рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдПрд▓рд┐рдпрд╛рд╕рд┐рдВрдЧ рдФрд░/рдпрд╛ рдПрдореНрдмреЗрдбрд┐рдВрдЧ рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреЗ рдкрд░ рдЧреЛрдбреЛрдХ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдкреВрд░реНрдг рд╡рд┐рдзрд┐ рд╕реЗрдЯ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЦрд╛рд╕рдХрд░ рдЬрдм рдкреНрд░рдХрд╛рд░ рдХрд┐рд╕реА рдЕрдиреНрдп рдкреИрдХреЗрдЬ рд╕реЗ рдЖрддрд╛ рд╣реИред рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╕реНрдорд╛рд░реНрдЯ рдЯреВрд▓рд┐рдВрдЧ рдХреЗ рд╕рд╛рде рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рди рдХрд┐ рдЕрдзрд┐рдХ рднрд╛рд╖рд╛ рд╢рдмреНрджрд╛рд░реНрдеред

@jba рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЖрдк рдЙрдкрдирд╛рдо рдХреА рджрд┐рд╢рд╛ рдХреЛ рдЙрд▓рдЯ рдХреНрдпреЛрдВ рдирд╣реАрдВ рджреЗрдВрдЧреЗ? type T2 = T1 рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЖрдкрдХреЛ рд╕рдорд╛рди рдкреИрдХреЗрдЬ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд╕рд╛рде T1 рдкрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ; рдЕрдВрддрд░ рдХреЗрд╡рд▓ reflect рдкреИрдХреЗрдЬ рджреНрд╡рд╛рд░рд╛ рд░рд┐рдкреЛрд░реНрдЯ рдХрд┐рдП рдЧрдП рдкреНрд░рдХрд╛рд░ рдХреЗ рдирд╛рдо рдХрд╛ рд╣реИ, рдФрд░ рдЖрдк рдЙрдкрдирд╛рдо рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдирд╛рдо-рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рдХреЙрд▓ рд╕рд╛рдЗрдЯреЛрдВ рдХреЛ рдирд╛рдо-рдЕрд╕рдВрд╡реЗрджрдирд╢реАрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдкреНрд░рд╛рд░рдВрдн рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

@jimmyfrasche рдкреНрд░рд╕реНрддрд╛рд╡ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╕реЗ :

"рдЪреВрдВрдХрд┐ T1 T2 рд▓рд┐рдЦрдиреЗ рдХрд╛ рдПрдХ рдФрд░ рддрд░реАрдХрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдкрд╛рд╕ рд╡рд┐рдзрд┐ рдШреЛрд╖рдгрд╛рдУрдВ рдХрд╛ рдЕрдкрдирд╛ рд╕реЗрдЯ рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, T1 рдХрд╛ рд╡рд┐рдзрд┐ рд╕реЗрдЯ T2 рдХреЗ рд╕рдорд╛рди рд╣реИред рдХрдо рд╕реЗ рдХрдо рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП, T1 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд┐рдзрд┐ рдШреЛрд╖рдгрд╛рдУрдВ рдХреЗ рдЦрд┐рд▓рд╛рдл рдХреЛрдИ рдкреНрд░рддрд┐рдмрдВрдз рдирд╣реАрдВ рд╣реИ рдПрдХ рд░рд┐рд╕реАрд╡рд░ рдкреНрд░рдХрд╛рд░, рдЙрд╕реА рдШреЛрд╖рдгрд╛ рдореЗрдВ T2 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдорд╛рдиреНрдп рд╣реЛрдЧрд╛ред "

рдПрдХ рд╡рд┐рдзрд┐ рд░рд┐рд╕реАрд╡рд░ рдкреНрд░рдХрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкреАрдПрдл рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдХрднреА рднреА рдорд╛рдиреНрдп рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред

@mdempsky рдореИрдВ рдмрд╣реБрдд рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рдерд╛, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдХрд╣рд╛ рдХрд┐ рдпрд╣ рдЕрдорд╛рдиреНрдп рдерд╛ред

рдореЗрд░рд╛ рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдХрдо рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдпрд╣ рдХреЛрдб рдХреА рдЙрд╕ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрдВрдХреНрддрд┐ рдХреЛ рджреЗрдЦрдХрд░ рдорд╛рдиреНрдп рд╣реИ рдпрд╛ рдирд╣реАрдВред

type S = T , рдЖрдкрдХреЛ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП T рднреА рджреЗрдЦрдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдпрд╣ рдЙрдкрдирд╛рдо рднреА рдирд╣реАрдВ рд╣реИ рдЬреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рдкреИрдХреЗрдЬ рдореЗрдВ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдирд╛рдо рд╣реИред рдПрдХрдорд╛рддреНрд░ рд▓рд╛рдн рдЬрдЯрд┐рд▓рддрд╛ рд╣реИред

рдЙрдкрдирд╛рдо рдкрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рд╣рдореЗрд╢рд╛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдирд╛ рд╕рд░рд▓ рдФрд░ рдкрдврд╝рдиреЗ рдореЗрдВ рдЖрд╕рд╛рди рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЖрдк рдХреБрдЫ рднреА рдирд╣реАрдВ рдЦреЛрддреЗ рд╣реИрдВред рдореИрдВ рдХрд▓реНрдкрдирд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рдХрд┐ рдПрдХ рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдорд╛рдорд▓рд╛ рдмрд╣реБрдд рдмрд╛рд░ рдЙрдареЗрдЧрд╛, рд▓реЗрдХрд┐рди рд╕рдВрднрд╛рд╡рдирд╛ рдХреЛ рдкреЗрд╢ рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдЬрдм рдЖрдк рдХреБрдЫ рднреА рд╣рд╛рд╕рд┐рд▓ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рдХрд╣реАрдВ рдФрд░ рдмреЗрд╣рддрд░ рддрд░реАрдХреЗ рд╕реЗ рдпрд╛ рдПрдХ рдЕрд▓рдЧ рд▓реЗрдХрд┐рди рд╕рдордХрдХреНрд╖ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

@рдореЗрд░реЛрд╡рд┐рдпрд╕

рдпрджрд┐ p1 рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдирд╛рдо рдмрджрд▓рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ T1 = T2 рдФрд░ рдкреИрдХреЗрдЬ p2 рдПрдХ рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдореЗрдВ p1.T2 рдПрдореНрдмреЗрдб рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╡реЗ рдЙрд╕ рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЛ p1.T1 рдореЗрдВ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛрдВрдЧреЗ, рдХреНрдпреЛрдВрдХрд┐ рдПрдХ рдЖрдпрд╛рддрдХ p3 рдирд╛рдо рд╕реЗ рдПрдореНрдмреЗрдбреЗрдб рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдЕрдЬреНрдЮрд╛рдд рдлрд╝реАрд▓реНрдб рдХреЛ рдирд╛рдорд┐рдд рдлрд╝реАрд▓реНрдб рдореЗрдВ рдмрджрд▓рдХрд░ рдФрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдХрд░рдХреЗ рдХрдИ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЖрдЬ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдирд┐рд░реНрдпрд╛рдд рди рдХрд┐рдП рдЧрдП рддрд░реАрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред

рдПрдХ рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдк рдХреНрд╖рддрд┐рдкреВрд░реНрддрд┐ рдХреЗ рд▓рд┐рдП рджреВрд╕рд░реА рд╕реБрд╡рд┐рдзрд╛ рдЬреЛрдбрд╝рдирд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рдлрд╝реАрд▓реНрдб рдХреЛ рдЕрдЬреНрдЮрд╛рдд рдмрдирд╛рдП рдмрд┐рдирд╛ (рдпрд╛ рд╕реНрдкрд╖реНрдЯ рдирд╛рдо рдмрджрд▓рдиреЗ рдХреЗ рд╕рд╛рде) рдХреЗ рд╡рд┐рдзрд┐ рд╕реЗрдЯ рдХреЛ рдЕрдкрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕рд╕реЗ рдлрд╝реАрд▓реНрдб рдХрд╛ рдирд╛рдо рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рд░рд╣реЗрдЧрд╛, рднрд▓реЗ рд╣реА рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдкреНрд░рдХрд╛рд░ рдмрджрд▓ рдЬрд╛рдПред

рдЖрдкрдХреЗ рдЙрджрд╛рд╣рд░рдг рд╕реЗ рдШреЛрд╖рдгрд╛ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП:

package p2

type S struct {
  p1.T2
}

рдПрдХ рдХреНрд╖рддрд┐рдкреВрд░реНрддрд┐ рд╕реБрд╡рд┐рдзрд╛ "рдлрд╝реАрд▓реНрдб рдЙрдкрдирд╛рдо" рд╣реЛ рд╕рдХрддреА рд╣реИ, рдЬреЛ рдЙрдкрдирд╛рдо рдЯрд╛рдЗрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдЧреА:

package p2

type S struct {
  p1.T1
  T2 = T1  // field T2 is an alias for field T1.
}

var s S  // &s.T2 == &s.T1

рдПрдХ рдЕрдиреНрдп рдХреНрд╖рддрд┐рдкреВрд░реНрддрд┐ рд╕реБрд╡рд┐рдзрд╛ "рдкреНрд░рддрд┐рдирд┐рдзрд┐рдордВрдбрд▓" рд╣реЛ рд╕рдХрддреА рд╣реИ, рдЬреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдПрдХ рдЕрдЬреНрдЮрд╛рдд рдХреНрд╖реЗрддреНрд░ рдХреЗ рд╡рд┐рдзрд┐ рд╕реЗрдЯ рдХреЛ рдЕрдкрдирд╛рдПрдЧреА:

package p2

type S struct {
  T2 p1.T1 delegated  // T2 is a field of type T1.
  // The method set of S includes the method set of T1 and forwards those calls to field T2.
}

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЦреБрдж рдлреАрд▓реНрдб рдЙрдкрдирд╛рдо рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдПрдХ рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░ рдХреА рдХреНрд░рдорд┐рдХ рдорд░рдореНрдордд рдХреЛ рднреА рд╕рдХреНрд╖рдо рдХрд░реЗрдВрдЧреЗ: рдкреЙрдЗрдВрдЯрд░-рдЕрд▓рд┐рдпрд╛рд╕рд┐рдВрдЧ рдпрд╛ рд╕реНрдерд┐рд░рддрд╛ рдмрдЧ рдкреЗрд╢ рдХрд┐рдП рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдлрд╝реАрд▓реНрдб рдХрд╛ рдирд╛рдо рдмрджрд▓рдирд╛ред

@Merovius рдореБрдЦреНрдп рдореБрджреНрджрд╛ рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдкреНрд░рдХрд╛рд░ рдХрд╛ рдирд╛рдо рдЙрдкрдирд╛рдо рд╕реЗ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдореИрдВрдиреЗ рдЗрд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирд╣реАрдВ рдорд╛рдирд╛ рд╣реИ - рдореБрд╢реНрдХрд┐рд▓ рд╕реЗ рдЧреБрдЬрд░рдиреЗ рдореЗрдВ, рдмрд╕ рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╡рд┐рдЪрд╛рд░:

рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдЖрдк рдЕрдкрдиреЗ рдкреИрдХреЗрдЬ рдореЗрдВ рдПрдХ рдЙрдкрдирд╛рдо рдкреЗрд╢ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдЗрд╕реЗ рд╡рд╛рдкрд╕ рдирд╛рдо рджреЗрддрд╛ рд╣реИ рдФрд░ рдЙрд╕реЗ рдПрдореНрдмреЗрдб рдХрд░рддрд╛ рд╣реИ?

рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдпрд╣ рдХреБрдЫ рднреА рдареАрдХ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╢рд╛рдпрдж рдпрд╣ рд▓реВрдк рдХреЛ рддреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╕рдордп рдЦрд░реАрджрддрд╛ рд╣реИ?

@bcmills рдореИрдВрдиреЗ рдЙрд╕ рдХрд╛рдордХрд╛рдЬ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╕реЛрдЪрд╛, рдзрдиреНрдпрд╡рд╛рджред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, рдЧреИрд░-рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдП рдЧрдП рддрд░реАрдХреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪреЗрддрд╛рд╡рдиреА (рдореЗрд░реЗ рд▓рд┐рдП) рд╢рд╛рдпрдж рд╣реА рдХрднреА рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИ рдХрд┐ рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдореЗрд░реА рд░рд╛рдп рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ (рдЬрдм рддрдХ рдХрд┐ рдореИрдВ рдЗрд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдордЭ рдирд╣реАрдВ рдкрд╛рддрд╛ред рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рдорд╣рд╕реВрд╕ рдХрд░реЗрдВ, рдЕрдЧрд░ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЙрдкрдпреЛрдЧреА рд╣реИ ) рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдФрд░ рдЕрдзрд┐рдХ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдирд╛ рдЙрдЪрд┐рдд рд╣реИ (рдпрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░)ред

@Merovius рдЬрд┐рддрдирд╛ рдЕрдзрд┐рдХ рдореИрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрддрд╛ рд╣реВрдВ, рдЙрддрдирд╛ рд╣реА рдореБрдЭреЗ рдлреАрд▓реНрдб рдЙрдкрдирд╛рдореЛрдВ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдкрд╕рдВрдж рд╣реИред

рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдХрд░рдирд╛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдердХрд╛рдК рд╣реИ, рднрд▓реЗ рд╣реА рд╡реЗ рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдП рдЧрдП рд╣реЛрдВ, рдФрд░ рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░ рдХреЗ рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдХреЛ рддреЛрдбрд╝рддреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдПрдореНрдмреЗрдбреЗрдб рдкреНрд░рдХрд╛рд░ рдореЗрдВ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рдФрд░ рдЙрд╕реА рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд╕рдВрддреБрд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдПрдореНрдмреЗрдб рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рдХрд╛рд░ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рдирд╛)ред рдФрд░ рдХреНрд░рдорд┐рдХ рдХреЛрдб рдорд░рдореНрдордд рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рдЫрддрд░реА рдХреЗ рднреАрддрд░ рд╕рдВрд░рдЪрдирд╛ рдлрд╝реАрд▓реНрдб рдХрд╛ рдирд╛рдо рдмрджрд▓рдирд╛ рднреА рдЖрддрд╛ рд╣реИред

@рдореЗрд░реЛрд╡рд┐рдпрд╕

рдпрджрд┐ p1 рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдирд╛рдо рдмрджрд▓рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ T1 = T2 рдФрд░ рдкреИрдХреЗрдЬ p2 рдПрдХ рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдореЗрдВ p1.T2 рдПрдореНрдмреЗрдб рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╡реЗ рдЙрд╕ рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЛ p1.T1 рдореЗрдВ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛрдВрдЧреЗ, рдХреНрдпреЛрдВрдХрд┐ рдПрдХ рдЖрдпрд╛рддрдХ p3 рдирд╛рдо рд╕реЗ рдПрдореНрдмреЗрдбреЗрдб рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред p2 рддрдм p3 рдХреЛ рддреЛрдбрд╝реЗ рдмрд┐рдирд╛ p1.T1 рдкрд░ рд╕реНрд╡рд┐рдЪ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛; p3 рд╡рд░реНрддрдорд╛рди p2 рдХреЛ рддреЛрдбрд╝реЗ рдмрд┐рдирд╛ рдирд╛рдо рдХреЛ p1.T1 рдореЗрдВ рдЕрдкрдбреЗрдЯ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред

рдЕрдЧрд░ рдореИрдВ рдЖрдкрдХрд╛ рдЙрджрд╛рд╣рд░рдг рд╕рдордЭрддрд╛ рд╣реВрдВ, рддреЛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╣реИ:

package p1

type T2 struct {}
type T1 = T2
package p2

import "p1"

type S struct {
  p1.T2
  F2 string // see below
}

рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рдорд╛рдорд▓реЗ рдХрд╛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдЬрд╣рд╛рдВ рд╣рдо рдПрдХ рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдлрд╝реАрд▓реНрдб рдХрд╛ рдирд╛рдо рдмрджрд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ; рдпрджрд┐ рд╣рдо S.F2 рдХрд╛ рдирд╛рдо рдмрджрд▓рдХрд░ S.F1 рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдпрд╣реА рд╕рдорд╕реНрдпрд╛ рд▓рд╛рдЧреВ рд╣реЛрддреА рд╣реИред

рдЗрд╕ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо рд╕реНрдерд╛рдиреАрдп рдкреНрд░рдХрд╛рд░ рдХреЗ рдЙрдкрдирд╛рдо рдХреЗ рд╕рд╛рде p1 рдХреЗ рдирдП рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреИрдХреЗрдЬ p2 рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

package p2

import "p1"

type T2 = p1.T1

type S struct {
  T2
}

рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдПрдХ рдЕрдЪреНрдЫрд╛ рджреАрд░реНрдШрдХрд╛рд▓рд┐рдХ рдлрд┐рдХреНрд╕ рдирд╣реАрдВ рд╣реИред рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЗрд╕ рддрдереНрдп рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХреЛрдИ рд░рд╛рд╕реНрддрд╛ рд╣реИ рдХрд┐ рдкреА 2 рдХреЛ рдЯреА 2 рдирд╛рдо рдХреЛ рдЦрддреНрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдП рдЧрдП рдПрдкреАрдЖрдИ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЬреЛ рдХрд┐рд╕реА рднреА рдХреНрд╖реЗрддреНрд░ рдХрд╛ рдирд╛рдо рдмрджрд▓рдиреЗ рдХреЗ рд╕рдорд╛рди рд╣реА рдЖрдЧреЗ рдмрдврд╝реЗрдЧрд╛ред

"рдкреИрдХреЗрдЬреЛрдВ рдХреЗ рдмреАрдЪ рдЪрд▓рддреА рдкреНрд░рдХрд╛рд░" рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдмрд╕ рдПрдХ рдиреЛрдЯред рдХреНрдпрд╛ рдпрд╣ рд╕реВрддреНрд░реАрдХрд░рдг рдереЛрдбрд╝рд╛ рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рдирд╣реАрдВ рд╣реИ?

рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ, рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЛ "рд╕рдВрджрд░реНрднрд┐рдд" рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рдкреИрдХреЗрдЬ рдореЗрдВ рдПрдХ рдирдП рдирд╛рдо рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирд┐рд╣рд┐рдд рд╣реИред

рдпрд╣ рд╡рд╕реНрддреБ рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд╣реИ рдирд╛? (рдЬрдм рддрдХ рдХрд┐ рдХреЛрдИ рдкрд╣рд▓реЗ рд╕реНрдерд╛рди рдкрд░ рдЙрдкрдирд╛рдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЛрдб рдирд╣реАрдВ рд▓рд┐рдЦрддрд╛ рд╣реИ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЙрд╕ рд╕реНрдерд╛рди рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рд╣реИ рдЬрд╣рд╛рдВ рдЙрдкрдирд╛рдо рд╕рдВрджрд░реНрднрд┐рдд рд╣реИ, рдЬреИрд╕реЗ рдбреНрд░реЙ рдкреАрдХреЗрдЬреА рдореЗрдВ)ред

@atdiar рдПрдХ рдЕрд▓рдЧ рдкреИрдХреЗрдЬ рдореЗрдВ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЬрд┐рдХреНрд░ рдХрд░рддреЗ рд╣реБрдП рдкреНрд░рдХрд╛рд░ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдПрдХ рдХрджрдо рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╣рд╛рдВ, рдПрдХ рдЙрдкрдирд╛рдо рдкреНрд░рдХрд╛рд░ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдХрд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

@Merovius рдРрд╕рд╛ рдХрд░рдиреЗ рд╕реЗ рдкреНрд░рддрд┐рдмрд┐рдВрдм рдФрд░ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдЯреВрдЯрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред

@atdiar рдореБрдЭреЗ рдЦреЗрдж рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛ рдХрд┐ рдЖрдк рдХреНрдпрд╛ рдХрд╣рдирд╛ рдЪрд╛рд╣ рд░рд╣реЗ рд╣реИрдВред рдХреНрдпрд╛ рдЖрдкрдиреЗ рдЗрд╕ рдзрд╛рдЧреЗ рдХреА рдореВрд▓ рдЯрд┐рдкреНрдкрдгреА, рдЗрд╕рдореЗрдВ рдЬреБрдбрд╝реЗ рдХреНрд░рдорд┐рдХ рдорд░рдореНрдордд рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓реЗрдЦ рдФрд░ рдЕрдм рддрдХ рдХреА рдЪрд░реНрдЪрд╛ рдкрдврд╝реА рд╣реИ? рдпрджрд┐ рдЖрдк рдЪрд░реНрдЪрд╛ рдореЗрдВ рдЕрдм рддрдХ рдирд╣реАрдВ рдорд╛рдиреЗ рдЧрдП рддрд░реНрдХ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдЖрдкрдХреЛ рд╕реНрдкрд╖реНрдЯ рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдЕрдВрдд рдореЗрдВ, рдПрдХ рдЙрдкрдпреЛрдЧреА рдФрд░ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд▓рд┐рдЦрд┐рдд рдкреНрд░рд╕реНрддрд╛рд╡ред рд╣рдореЗрдВ рдЯрд╛рдЗрдк рдЙрдкрдирд╛рдо рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдореБрдЭреЗ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдЙрдкрдирд╛рдо рдХреЗ рдПрдХ рдПрдкреАрдЖрдИ рдмрдирд╛рдиреЗ рдореЗрдВ рдмрдбрд╝реА рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВ, рдЕрдм рддрдХ, рдореБрдЭреЗ рдЕрдкрдирд╛ рдХреЛрдб рдЗрд╕ рддрд░рд╣ рд╕реЗ рд▓рд┐рдЦрдирд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдЗрд╕реЗ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрддрдирд╛ рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИред рдЗрд╕реЗ рдЧреЛ v1.8 рдкрд░ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рд▓реЗрдХрд┐рди рдХрднреА рднреА рдмрд╣реБрдд рджреЗрд░ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП 1.9 рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝реЗрдВред

@рдореЗрд░реЛрд╡рд┐рдпрд╕
рдореИрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕рдВрдХреБрд▓ рдХреЗ рдмреАрдЪ "рдЪрд▓рддреА рдкреНрд░рдХрд╛рд░" рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдБред рдпрд╣ рд╡рд╕реНрддреБ рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЛ рдмрджрд▓рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, pkg рд░рд┐рдлреНрд▓реЗрдХреНрдЯ рдореЗрдВ, рдХреБрдЫ рдЬрд╛рдирдХрд╛рд░реА рдЙрд╕ рдкреИрдХреЗрдЬ рд╕реЗ рдЬреБрдбрд╝реА рд╣реЛрддреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдпрджрд┐ рдЖрдк рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЛ рдЖрдЧреЗ рдмрдврд╝рд╛рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдЯреВрдЯ рд╕рдХрддреА рд╣реИред

@ рдХрдЯрд╛рд░рд╕ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдЪреНрдЫреЗ рдбреЙрдХреНрдЯрд░ рдФрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдХреЗрд╡рд▓ рдЙрд╕ рдкреНрд░рдХрд╛рд░ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЬрд┐рддрдирд╛ рдореИрдВ рдЙрдкрдирд╛рдо рдкреНрд░рд╕реНрддрд╛рд╡ рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░рддрд╛ рд╣реВрдВ, рдореИрдВ рд╕рд╛рд╡рдзрд╛рди рд╣реВрдВ рдХрд┐ рд▓реЛрдЧ рд╕реЛрдЪрддреЗ рд╣реИрдВ рдХрд┐ рд╡реЗ рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

@atdiar рдлрд┐рд░ рд╕реЗ, рдХреГрдкрдпрд╛ рдореВрд▓ рдЯрд┐рдкреНрдкрдгреА рдФрд░ рдЕрдм рддрдХ рдХреА рдЪрд░реНрдЪрд╛ рд╕реЗ рд▓реЗрдЦ рдкрдврд╝реЗрдВред рдЪрд▓рдиреЗ рдХреЗ рдкреНрд░рдХрд╛рд░ рдФрд░ рдЖрдкрдХреА рдЪрд┐рдВрддрд╛рдУрдВ рдХреЛ рдХреИрд╕реЗ рджреВрд░ рдХрд┐рдпрд╛ рдЬрд╛рдП, рдпрд╣ рдЗрд╕ рдзрд╛рдЧреЗ рдХреА рдкреНрд░рд╛рдердорд┐рдХ рдЪрд┐рдВрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдкрдХреЛ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ Russ рдХрд╛ рд▓реЗрдЦ рдЖрдкрдХреА рдЪрд┐рдВрддрд╛рдУрдВ рдХреЛ рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рддрд╛ рд╣реИ, рддреЛ рдХреГрдкрдпрд╛ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд░рд╣реЗрдВ рдХрд┐ рдЙрдирдХрд╛ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рд╕рдВрддреЛрд╖рдЬрдирдХ рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реИред :)

@ рдХрдЯрд╛рд░рд╕ рдЬрдмрдХрд┐ рдореИрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рд╕рд╣рдордд рд╣реВрдВ, рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕рд╣рд╛рдпрдХ рд╣реИ, рдХреЗрд╡рд▓ рдпрд╣ рд▓рдЧрддреА рд╣реИ ред рд▓реЛрдЧреЛрдВ рдХреА рдЪрд┐рдВрддрд╛рдУрдВ рдХреЛ рджреВрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд░рдЪрдирд╛рддреНрдордХ рддрд░реНрдХ рджреЗрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред :)

@Merovius рдореИрдВрдиреЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдкрдврд╝рд╛ рд╣реИред рдпрд╣ рдореЗрд░реЗ рдкреНрд░рд╢реНрди рдХрд╛ рдЙрддреНрддрд░ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдХрд╛рдлреА рд╕реНрдкрд╖реНрдЯ рд╣реВрдВред рдпрд╣ рдЙрд╕реА рдореБрджреНрджреЗ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ рдЬрд┐рд╕рдиреЗ рд╣рдореЗрдВ рдкреВрд░реНрд╡ рдЙрдкрдирд╛рдо рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХ рджрд┐рдпрд╛ред

@atdiar рдореИрдВ, рдХрдо рд╕реЗ рдХрдо, рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛ред рддреБрдо рдХрд╣ рд░рд╣реЗ рд╣реЛ рдХрд┐ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреЛ рд╣рд┐рд▓рд╛рдиреЗ рд╕реЗ рдЪреАрдЬреЗрдВ рдЯреВрдЯ рдЬрд╛рдПрдВрдЧреА; рдкреНрд░рд╕реНрддрд╛рд╡ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ рдХрд┐ рдзреАрд░реЗ-рдзреАрд░реЗ рдорд░рдореНрдордд рдХреЗ рд╕рд╛рде рдЗрд╕ рддрд░рд╣ рдХреЗ рдЯреВрдЯрдиреЗ рд╕реЗ рдХреИрд╕реЗ рдмрдЪреЗрдВ, рдЙрдкрдирд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдлрд┐рд░ рдкреНрд░рддреНрдпреЗрдХ рд░рд┐рд╡рд░реНрд╕ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рддрдм рддрдХ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ рдЬрдм рддрдХ рдХреЛрдИ рдХреЛрдб рдкреБрд░рд╛рдиреЗ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗ, рдлрд┐рд░ рдкреБрд░рд╛рдиреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рд╣рдЯрд╛ рджреЗрдВред рдореИрдВ рдирд╣реАрдВ рджреЗрдЦрддрд╛, рдЖрдкрдХрд╛ рджрд╛рд╡рд╛, рдХрд┐ "рдкреНрд░рддрд┐рдмрд┐рдВрдм рдФрд░ рдкреНрд▓рдЧрдЗрдиреНрд╕" рдЗрди рдзрд╛рд░рдгрд╛рдУрдВ рдХреЗ рддрд╣рдд рдЯреВрдЯрд╛ рд╣реБрдЖ рд╣реИред рдпрджрд┐ рдЖрдк рдорд╛рдиреНрдпрддрд╛рдУрдВ рдкрд░ рд╕рд╡рд╛рд▓ рдЙрдард╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕ рдкрд░ рдкрд╣рд▓реЗ рд╣реА рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛ рдЪреБрдХреА рд╣реИред

рдореИрдВ рдпрд╣ рднреА рдирд╣реАрдВ рджреЗрдЦрддрд╛ рдХрд┐ рдЙрдкрдирд╛рдореЛрдВ рдХреЛ 1.8 рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрдиреЗ рд╡рд╛рд▓реА рдХреЛрдИ рднреА рд╕рдорд╕реНрдпрд╛ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдХрд╣реА рдЧрдИ рдмрд╛рддреЛрдВ рд╕реЗ рдХреИрд╕реЗ рдЬреБрдбрд╝рддреА рд╣реИред рдореЗрд░реА рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЗ #17746 рдФрд░ #17784 рд╣реИрдВред рдпрджрд┐ рдЖрдк рдПрдореНрдмреЗрдбрд┐рдВрдЧ рдореБрджреНрджреЗ рдХрд╛ рдЬрд┐рдХреНрд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВ (рдЬрд┐рд╕реЗ рдЯреВрдЯрдиреЗ рдпрд╛ рдкреНрд░рддрд┐рдмрд┐рдВрдм рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдХреЗ рд░реВрдк рдореЗрдВ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рдЕрд╕рд╣рдордд рд╣реВрдВ), рддреЛ рдЗрд╕реЗ рдФрдкрдЪрд╛рд░рд┐рдХ рдкреНрд░рд╕реНрддрд╛рд╡ рдореЗрдВ рд╕рдВрдмреЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рд╣рд╛рд▓рд╛рдВрдХрд┐, рдКрдкрд░ рджреЗрдЦреЗрдВ, рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рди рдЕрдзрд┐рдХ рдЪрд░реНрдЪрд╛ рдХреЗ рдпреЛрдЧреНрдп рд╣реИ) рдФрд░ рдЖрдкрдХреЛ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЖрдк рдРрд╕рд╛ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдорд╛рдирддреЗ рд╣реИрдВред

рддреЛ, рдореБрдЭреЗ рдЦреЗрдж рд╣реИ, рд▓реЗрдХрд┐рди рдирд╣реАрдВ, рдЖрдк рдкрд░реНрдпрд╛рдкреНрдд рд╡рд┐рд╢рд┐рд╖реНрдЯ рдирд╣реАрдВ рдереЗред рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ "рдЙрд╕реА рдореБрджреНрджреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдореБрджреНрджрд╛ рд╕рдВрдЦреНрдпрд╛ рд╣реИ рдЬрд┐рд╕рдиреЗ рд╣рдореЗрдВ рдкреВрд░реНрд╡ рдЙрдкрдирд╛рдо рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХ рджрд┐рдпрд╛ рд╣реИ" рдЬрд┐рд╕рдХрд╛ рдЖрдк рдЙрд▓реНрд▓реЗрдЦ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЬреЛ рдХрд┐ рдЖрдкрдиреЗ рдЕрдм рддрдХ рдЬреЛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ, рдЙрд╕рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ, рд╕рдордЭрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП? рдХреНрдпрд╛ рдЖрдк рдЙрди рдЯреВрдЯрдиреЗ рдХрд╛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрджрд╛рд╣рд░рдг рджреЗ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдк рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ (рдЗрд╕ рдЕрдкрдереНрд░реЗрдб рдХреЗ рд▓рд┐рдП рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВ; рдкреИрдХреЗрдЬреЛрдВ рдХрд╛ рдПрдХ рдХреНрд░рдо рджреЗрдВ, рдкрд░рд┐рднрд╛рд╖рд╛рдПрдВ рдЯрд╛рдЗрдк рдХрд░реЗрдВ рдФрд░ рдХреБрдЫ рдХреЛрдб рджреЗрдВ рдФрд░ рд╡рд░реНрдгрди рдХрд░реЗрдВ рдХрд┐ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реЛрдиреЗ рдкрд░ рдпрд╣ рдХреИрд╕реЗ рдЯреВрдЯрддрд╛ рд╣реИ)? рдпрджрд┐ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХреА рдЪрд┐рдВрддрд╛рдУрдВ рдХрд╛ рд╕рдорд╛рдзрд╛рди рд╣реЛ, рддреЛ рдЖрдкрдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкрд╣рд▓реЗ рджреВрд╕рд░реЛрдВ рдХреЛ рдЙрдиреНрд╣реЗрдВ рд╕рдордЭрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

@Merovius рддреЛ рд╕рдВрдХреНрд░рдордгреАрдп рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЬрд╣рд╛рдВ рдЗрди рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реИред рдЯрд╛рдЗрдкред рдкреАрдХреЗрдЬреАрдкрд╛рде (), рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ?
рдПрдореНрдмреЗрдбрд┐рдВрдЧ рд╕рдорд╕реНрдпрд╛ рдореЗрдВ рднреА рдпрд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд░рд╣реА рд╣реИред

@atdiar рдореБрдЭреЗ рдЦреЗрдж рд╣реИ, рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдПрдХ рд╕рдордЭрдиреЗ рдпреЛрдЧреНрдп рдЪрд┐рдВрддрд╛ рд╣реИ, рдЗрд╕ рд╕реВрддреНрд░ рдореЗрдВ рдЕрдм рддрдХ рдХреА рдЪрд░реНрдЪрд╛ рдХреЗ рдкреНрд░рдХрд╛рд╢ рдореЗрдВ рдФрд░ рдпрд╣ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд┐рд╕ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред рдореИрдВ рдЕрдм рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рдЙрдк-рд╕реВрддреНрд░ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓реВрдВрдЧрд╛ рдФрд░ рджреВрд╕рд░реЛрдВ рдХреЛ, рдЬреЛ рдЖрдкрдХреА рдЖрдкрддреНрддрд┐ рдХреЛ рдмреЗрд╣рддрд░ рдврдВрдЧ рд╕реЗ рд╕рдордЭ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕реЗ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рджреВрдВрдЧрд╛ред

рдореБрдЭреЗ рдЗрд╕реЗ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рджреЛрдмрд╛рд░рд╛ рджреЛрд╣рд░рд╛рдПрдВ:

рдореБрджреНрджрд╛ рдЯрд╛рдЗрдк рд╕рдорд╛рдирддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ, рдЗрд╕ рддрдереНрдп рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдЯрд╛рдЗрдк рдкрд░рд┐рднрд╛рд╖рд╛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╕реНрдерд╛рди рдХреЛ рд╣рд╛рд░реНрдбрдХреЛрдб рдХрд░рддреА рд╣реИред
рдЪреВрдВрдХрд┐ рдЯрд╛рдЗрдк рд╕рдорд╛рдирддрд╛ рдХреЛ рд░рдирдЯрд╛рдЗрдо рдкрд░ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдореИрдВ рдирд╣реАрдВ рджреЗрдЦрддрд╛ рдХрд┐ рдЪрд▓рддреА рдкреНрд░рдХрд╛рд░ рдХреИрд╕реЗ рдХрд░рдирд╛ рдЗрддрдирд╛ рдЖрд╕рд╛рди рд╣реИред

рдореИрдВ рдХреЗрд╡рд▓ рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рджреЗ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ "рдЪрд▓рддреА рдкреНрд░рдХрд╛рд░" рдХрд╛ рдпрд╣ рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓рд╛ рдЬрдВрдЧрд▓реА рдореЗрдВ, рдХреБрдЫ рд╣реА рджреВрд░реА рдкрд░ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдкреИрдХреЗрдЬ рддреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реИред рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреЗ рд╕рд╛рде рдЗрд╕реА рддрд░рд╣ рдХреА рдЪрд┐рдВрддрд╛ред

(рдЙрд╕реА рддрд░рд╣ рдкреИрдХреЗрдЬ рдореЗрдВ рдкреЙрдЗрдВрдЯрд░ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдмрджрд▓рдиреЗ рд╕реЗ рдХрдИ рдЕрдиреНрдп рдкреИрдХреЗрдЬ рдЯреВрдЯ рдЬрд╛рдПрдВрдЧреЗ, рдЕрдЧрд░ рд╡рд╣ рд╕рдорд╛рдирд╛рдВрддрд░ рдЪреАрдЬреЛрдВ рдХреЛ рд╕реНрдкрд╖реНрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИред)

@atdiar рдлрд┐рд░ рд╕реЗ, рдпрд╣ рд╕рдорд╕реНрдпрд╛ рджреЛ рдЪрд░рдгреЛрдВ рдореЗрдВ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ, рдкрд╣рд▓реЗ рдкреБрд░рд╛рдиреЗ рд╕реНрдерд╛рди рдХреЛ рд╣рдЯрд╛рдХрд░ рдФрд░ рд░рд┐рд╡рд░реНрд╕ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдХреЗ, _then_ рдкреНрд░рдХрд╛рд░ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВред _рдмреЗрд╢рдХ_ рдЪреАрдЬреЗрдВ рдЯреВрдЯ рдЬрд╛рдПрдВрдЧреА рдпрджрд┐ рдЖрдк рдмрд╕ рдкреНрд░рдХрд╛рд░ рдЗрдзрд░-рдЙрдзрд░ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдореБрджреНрджрд╛ рдХреНрдпрд╛ рд╣реИред рдпрд╣ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд░рдорд┐рдХ, рдмрд╣реБ-рдЪрд░рдгреАрдп рд╕рдорд╛рдзрд╛рди рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред рдпрджрд┐ рдЖрдкрдХреЛ рдЪрд┐рдВрддрд╛ рд╣реИ рдХрд┐ рдпрд╣рд╛рдВ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХреЛрдИ рднреА рд╕рдорд╛рдзрд╛рди рдЗрд╕ рдмрд╣реБ-рдЪрд░рдгреАрдп рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдХреГрдкрдпрд╛ рд╕рдЯреАрдХ рд░рд╣реЗрдВ рдФрд░ рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реЗрдВ, рдЬрд╣рд╛рдВ рдХреНрд░рдорд┐рдХ рдорд░рдореНрдордд рдХрд╛ рдХреЛрдИ рднреА рдЙрдЪрд┐рдд рдХреНрд░рдо рдЯреВрдЯ-рдлреВрдЯ рдХреЛ рд░реЛрдХ рдирд╣реАрдВ рд╕рдХрддрд╛ рд╣реИред

@рдиреАрдореЗрдпрд░

рдпрд╣ рдПрдХ рдФрд░ рджреЛ рд╕реНрд╡рддрдВрддреНрд░ рдкреНрд░рдХрд╛рд░ рдмрдирд╛рддрд╛ рд╣реИ, рдФрд░ рдЪрд╛рд╣реЗ рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рд╣реЛ рдпрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдЕрдВрддрд░реНрдЧрдд {}, рдпрд╣реА рд╣реИ
рдЖрдк рд╕рдордЭ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдк рдПрдХ рдФрд░ рджреЛ рдХреЗ рдмреАрдЪ рдХрдирд╡рд░реНрдЯ рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдКрдкрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдПрдбреЙрдкреНрдЯрд░ рдкреНрд░рд╕реНрддрд╛рд╡ рдЗрд╕реЗ рдЕрдВрддрд┐рдо рдмрдирд╛рддрд╛ рд╣реИ
рдПрдбреЗрдкреНрдЯрд░ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрджрдоред рдЖрдкрдХреЛ рдХрдИ рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдкреНрд░рд╕реНрддрд╛рд╡ рдкрд╕рдВрдж рдирд╣реАрдВ рдЖ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИ
рдЙрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рд░реЛрдзрд╛рднрд╛рд╕реАред

рдЖрдк рдХреЗ рдмреАрдЪ рдХрдирд╡рд░реНрдЯ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ

 func() one

рддрдерд╛

func() two

@Merovius рдЖрдк рд╕рдВрднрд╡рддрдГ рдЬрдВрдЧрд▓реА рдореЗрдВ рдореМрдЬреВрдж рдХреЛрдб-рдорд░рдореНрдордд рдкреИрдХреЗрдЬ рдХреЗ рд╕рднреА рдЖрдпрд╛рддрдХреЛрдВ рдХреЛ рдмрджрд▓рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдФрд░ рдореИрдВ рдпрд╣рд╛рдБ рдкрд░ рдкреИрдХреЗрдЬ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рддрд▓реНрд▓реАрди рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЙрддреНрд╕реБрдХ рдирд╣реАрдВ рд╣реВрдБред

рд╕реНрдкрд╖реНрдЯ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЙрдкрдирд╛рдо рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЗ рдЦрд┐рд▓рд╛рдл рдирд╣реАрдВ рд╣реВрдВ, рд▓реЗрдХрд┐рди "рдкреИрдХреЗрдЬреЛрдВ рдХреЗ рдмреАрдЪ рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рдХрд╛рд░" рдлреЙрд░реНрдореВрд▓реЗрд╢рди рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдПрдХ рдЙрдкрдпреЛрдЧ-рдорд╛рдорд▓рд╛ рдЬреЛ рдЕрднреА рддрдХ рд╕реБрд░рдХреНрд╖рд┐рдд рдирд╣реАрдВ рд╣реИред

@jimmyfrasche рд╡рд┐рдзрд┐-рдкрд░-рдЙрдкрдирд╛рдо рд╡реИрдзрддрд╛ рдХреА рдкреБрди: рдкреВрд░реНрд╡рд╛рдиреБрдореЗрдпрддрд╛:

рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдорд╛рдорд▓рд╛ рд╣реИ рдХрд┐ func (t T) M() рдХрднреА-рдХрднреА рдорд╛рдиреНрдп рд╣реЛрддрд╛ рд╣реИ, рдХрднреА-рдХрднреА рдЕрдорд╛рдиреНрдпред рдпрд╣ рдмрд╣реБрдд рдЬреНрдпрд╛рджрд╛ рдирд╣реАрдВ рдЖрддрд╛ рдХреНрдпреЛрдВрдХрд┐ рд▓реЛрдЧ рдЕрдХреНрд╕рд░ рдЗрди рд╕реАрдорд╛рдУрдВ рдХреЛ рдирд╣реАрдВ рд▓рд╛рдВрдШрддреЗ рд╣реИрдВред рдпрд╛рдиреА рдпрд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред https://play.golang.org/p/bci2qnldejред рдХрд┐рд╕реА рднреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдпрд╣ _possible_ рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рдХреА рд╕реВрдЪреА рдореЗрдВ рд╣реИред рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рдХреА рддрд░рд╣, рдпрд╣ рдЬрдЯрд┐рд▓рддрд╛ рдЬреЛрдбрд╝рддрд╛ рд╣реИ рдФрд░ рд╣рдо рдЙрд╕ рдЬрдЯрд┐рд▓рддрд╛ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдареЛрд╕ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рджреБрдирд┐рдпрд╛ рдХреЗ рд╕рдмреВрдд рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

@Merovius , рдкреБрдирдГ рдПрдореНрдмреЗрдбрд┐рдВрдЧ рдирд╛рдо:

рдореИрдВ рдорд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ рд╕реНрдерд┐рддрд┐ рд╕рд╣реА рдирд╣реАрдВ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрдЧрд░ рдореЗрд░реЗ рдкрд╛рд╕ io.ByteBuffer рдХреЗ рд╕рдВрджрд░реНрднреЛрдВ рд╕реЗ рднрд░рд╛ рдХреЛрдбрдмреЗрд╕ рд╣реИ рдФрд░ рдореИрдВ рдЗрд╕реЗ рдмрд╛рдЗрдЯреНрд╕ рдореЗрдВ рд▓реЗ рдЬрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдмрдлрд░, рддреЛ рдореИрдВ рдкрд░рд┐рдЪрдп рджреЗрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ

package io
type ByteBuffer = bytes.Buffer

_рдмрд┐рдирд╛__ io.ByteBuffer рдХреЗ рдХрд┐рд╕реА рднреА рдореМрдЬреВрджрд╛ рд╕рдВрджрд░реНрдн рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ред рдпрджрд┐ рд╕рднреА рд╕реНрдерд╛рди рдЬрд╣рд╛рдВ io.ByteBuffer рдПрдореНрдмреЗрдбреЗрдб рд╣реИрдВ, рдПрдХ рдЙрдкрдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдлрд╝реАрд▓реНрдб рдХрд╛ рдирд╛рдо рдмрдлрд╝рд░ рдореЗрдВ рдмрджрд▓ рджреЗрддреЗ рд╣реИрдВ, рддреЛ рдореИрдВрдиреЗ рджреБрдирд┐рдпрд╛ рдХреЛ рддреЛрдбрд╝ рджрд┐рдпрд╛ рд╣реИ рдФрд░ рдХреЛрдИ рдХреНрд░рдорд┐рдХ рдорд░рдореНрдордд рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдпрджрд┐ рдПрдХ рдПрдореНрдмреЗрдбреЗрдб io.ByteBuffer рдХрд╛ рдирд╛рдо рдЕрднреА рднреА ByteBuffer рд╣реИ, рддреЛ рдЙрдкрдпреЛрдЧреЛрдВ рдХреЛ рдПрдХ рдмрд╛рд░ рдореЗрдВ рдЕрдкрдиреА рдХреНрд░рдорд┐рдХ рдорд░рдореНрдордд рдореЗрдВ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рд╕рдВрднрд╡рддрдГ рдХрдИ рдЪрд░рдгреЛрдВ рдХреЛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдлрд┐рд░ рд╕реЗ рдЖрджрд░реНрд╢ рдирд╣реАрдВ)ред

рд╣рдордиреЗ #17746 рдореЗрдВ рдЗрд╕ рдкрд░ рдХреБрдЫ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдЪрд░реНрдЪрд╛ рдХреАред рдореИрдВ рдореВрд▓ рд░реВрдк рд╕реЗ рдПрдХ рдПрдореНрдмреЗрдбреЗрдб io.ByteBuffer рдЙрдкрдирд╛рдо рдмрдлрд╝рд░ рд╣реЛрдиреЗ рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рдерд╛, рд▓реЗрдХрд┐рди рдЙрдкрд░реЛрдХреНрдд рддрд░реНрдХ рдиреЗ рдореБрдЭреЗ рдЖрд╢реНрд╡рд╕реНрдд рдХрд┐рдпрд╛ рдХрд┐ рдореИрдВ рдЧрд▓рдд рдерд╛ред @jimmyfrasche рдиреЗ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдПрдореНрдмреЗрдбреЗрдб рдЪреАрдЬрд╝ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХреЛрдб рдирд╣реАрдВ рдмрджрд▓рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдЕрдЪреНрдЫреЗ рддрд░реНрдХ рджрд┐рдПред рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдПрдореНрдмреЗрдбреЗрдб рдЙрдкрдирд╛рдореЛрдВ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдирд╛ рдЙрдЪрд┐рдд рд╣реИред

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЖрдкрдХреЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ p2 рдореЗрдВ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рд╣реИред рдпрджрд┐ p2 рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ io.ByteBuffer рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд┐рдП рдмрд┐рдирд╛ рдмрд╛рдЗрдЯрдмрдлрд╝рд░ рдирд╛рдордХ рдПрдХ рдПрдореНрдмреЗрдбреЗрдб рдлрд╝реАрд▓реНрдб рдЪрд╛рд╣рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ:

type ByteBuffer = bytes.Buffer

рдФрд░ рдлрд┐рд░ рдПрдХ io.ByteBuffer рдХреЗ рдмрдЬрд╛рдп рдПрдХ рдмрд╛рдЗрдЯрдмрдлрд╝рд░ (рдЕрд░реНрдерд╛рдд, рдПрдХ p2.ByteBuffer) рдПрдореНрдмреЗрдб рдХрд░реЗрдВред рдпрд╣ рднреА рд╕рд╣реА рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдорд░рдореНрдордд рдЬрд╛рд░реА рд░рд╣ рд╕рдХрддреА рд╣реИред

рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдорд╛рдорд▓рд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рд╣реА рдирд╣реАрдВ рд╣реИ рдФрд░ рдЗрд╕ рдкреНрд░рд╕реНрддрд╛рд╡ рджреНрд╡рд╛рд░рд╛ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдлрд╝реАрд▓реНрдб рдирд╛рдореЛрдВ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдПрдореНрдмреЗрдбрд┐рдВрдЧ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдирд╛рдо рдХреЗ рдкреНрд░рддрд┐ рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рди рд╣реЛ, рдХрд┐ 'рдПрдореНрдмреЗрдб рдПрдХреНрд╕ рдХреЛ рдирд╛рдо рдПрди' рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдмрд╛рдж рдореЗрдВ рдлрд╝реАрд▓реНрдб рдЙрдкрдирд╛рдо рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рд┐рдПред рджреЛрдиреЛрдВ рдЙрдЪрд┐рдд рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреА рддрд░рд╣ рдкреНрд░рддреАрдд рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рджреЛрдиреЛрдВ рдХреЛ рд╕рдВрднрд╡рддрдГ рдЕрд▓рдЧ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдмрд╛рдж рдореЗрдВ рдкреНрд░рд╕реНрддрд╛рд╡реЛрдВ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдПрдХ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреНрд░рдорд╛рдг рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдЯрд╛рдЗрдк рдЙрдкрдирд╛рдо рд╣рдореЗрдВ рдЙрд╕ рдмрд┐рдВрджреБ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдлрд╝реАрд▓реНрдб рдЙрдкрдирд╛рдореЛрдВ рдХреА рдХрдореА рдЕрдЧрд▓реА рдмрдбрд╝реА рдмрд╛рдзрд╛ рд╣реИ, рддреЛ рдпрд╣ рдкреНрд░рдЧрддрд┐ рд╣реЛрдЧреА!

(/cc @neild рдФрд░ @bcmills)

@atdiar , рд╣рд╛рдБ, рдпрд╣ рд╕рдЪ рд╣реИ рдХрд┐ рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рджреЗрдЦреЗрдЧрд╛, рдФрд░ рдпрджрд┐ рдХреЛрдб рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рдкрд░рд┐рдгрд╛рдореЛрдВ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рддреЛ рдпрд╣ рдЯреВрдЯрдиреЗ рд╡рд╛рд▓рд╛ рд╣реИред рдПрдореНрдмреЗрдб рдХрд░рдиреЗ рдХреА рд╕реНрдерд┐рддрд┐ рдХреА рддрд░рд╣, рдпрд╣ рд╕рд╣реА рдирд╣реАрдВ рд╣реИред рдПрдореНрдмреЗрдбрд┐рдВрдЧ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдореЗрд░реЗ рдкрд╛рд╕ рдХреЛрдИ рдЬрд╡рд╛рдм рдирд╣реАрдВ рд╣реИ рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рдХреЛрдб рдХреЛ рдЙрди рд╡рд┐рд╡рд░рдгреЛрдВ рдХреЗ рдкреНрд░рддрд┐ рдХрд╛рдлреА рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдирд╣реАрдВ рд▓рд┐рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

@rsc рдЬреЛ рдореЗрд░реЗ рдорди рдореЗрдВ рдерд╛ рд╡рд╣ рдерд╛ рдП) рдПрдХ рд╣реА рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рдПрдХ рдЙрдкрдирд╛рдо рдФрд░ рдпрд╣ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдкреНрд░рдХрд╛рд░ рджреЛрдиреЛрдВ рдХреЛ рдПрдореНрдмреЗрдб рдХрд░рдиреЗ рд╕реЗ рдордирд╛ рдХрд░реЗрдВ (рдмреА рд╕реЗ рдЕрд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП), рдмреА) рд╕реНрд░реЛрдд рдХреЛрдб рдореЗрдВ рдХрд┐рд╕реА рднреА рдирд╛рдо рд╕реЗ рдХрд┐рд╕реА рдлрд╝реАрд▓реНрдб рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдВ, рд╕реА) рдПрдХ рдЪреБрдиреЗрдВ рдпрд╛ рдЕрдиреНрдп рдЙрддреНрдкрдиреНрди рдкреНрд░рдХрд╛рд░ рдХреА рдЬрд╛рдирдХрд╛рд░реА/рдкреНрд░рддрд┐рдмрд┐рдВрдм рдореЗрдВ рдФрд░ рдЬреИрд╕реЗ (рдкрд░рд╡рд╛рд╣ рдирд╣реАрдВ рд╣реИ)ред

рдореИрдВ рд╣рд╛рде рд▓рд╣рд░рд╛рддреЗ рд╣реБрдП рджрд╛рд╡рд╛ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдЙрд╕ рддрд░рд╣ рдХреЗ рдЯреВрдЯрдиреЗ рд╕реЗ рдмрдЪрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдореИрдВрдиреЗ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рд╕рд╛рде рд╣реА рдЙрд╕ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдкрд╖реНрдЯ рд╡рд┐рдХрд▓реНрдк рдмрдирд╛рдирд╛ рдЬрд╣рд╛рдВ рдПрдХ рд╡рд┐рдХрд▓реНрдк рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ; рдФрд░, рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, рдореИрдВ рдЙрд╕ рдХреЛрдб рдХреЛ рдирд╣реАрдВ рддреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрдо рдкрд░рд╡рд╛рд╣ рдХрд░рддрд╛ рд╣реВрдВ рдЬреЛ рдкреНрд░рддрд┐рдмрд┐рдВрдм рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рдЙрд╕ рдХреЛрдб рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЬреЛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдореБрдЭреЗ рдЕрднреА рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореИрдВ рдЖрдкрдХреЗ рдмрд╛рдЗрдЯрдмрдлрд░ рддрд░реНрдХ рдХреЛ рд╕рдордЭрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рднреА рдПрдХ рд▓рдВрдмреЗ рдХрд╛рд░реНрдпрджрд┐рд╡рд╕ рдХреЗ рдЕрдВрдд рдореЗрдВ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдЖрдЧреЗ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдЕрдЧрд░ рдореБрдЭреЗ рдпрд╣ рдЕрд╕рдВрдмрджреНрдз рд▓рдЧрддрд╛ рд╣реИ рддреЛ рдореИрдВ рдЕрдВрддрддрдГ рдЬрд╡рд╛рдм рджреВрдВрдЧрд╛ :)

@Merovius рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рд░рд▓ рдирд┐рдпрдореЛрдВ рдХреЛ рдЖрдЬрдорд╛рдиреЗ рдФрд░ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд▓реЛрдЧреЛрдВ рдХреЛ рдкреЗрд╢ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╣рдо рдХрд┐рддрдиреА рджреВрд░ рдЬрд╛рддреЗ рд╣реИрдВ, рдпрд╣ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рддреЛ рд╣рдо рдмрд╛рдж рдореЗрдВ (рдП) рдФрд░ (рдмреА) рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ; (рд╕реА) рдПрдХ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ред

рдореИрдВ рд╕рд╣рдордд рд╣реВрдВ рдХрд┐ рдХреБрдЫ рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рд╢рд╛рдпрдж (рдмреА) рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИ, рд▓реЗрдХрд┐рди рд╢рд╛рдпрдж рджреВрд╕рд░реЛрдВ рдореЗрдВ рдирд╣реАрдВред рдпрджрд┐ рдЖрдк "рдПрдХ рдкреИрдХреЗрдЬ рдПрдкреАрдЖрдИ рдХреЛ рдХрдИ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкреИрдХреЗрдЬреЛрдВ рдореЗрдВ рд╕рдВрд░рдЪрдирд╛" рдХреЗ рд▓рд┐рдП рдЯрд╛рдЗрдк рдЙрдкрдирд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдкрд╣рд▓реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдП рдЧрдП рдорд╛рдорд▓реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рддреЛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЕрдиреНрдп рдирд╛рдо рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдирд╛рдо рдХреЛ рдПрдореНрдмреЗрдб рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ (рдЬреЛ рдПрдХ рдЖрдВрддрд░рд┐рдХ рдкреИрдХреЗрдЬ рдореЗрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЕрдиреНрдпрдерд╛ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рджреБрд░реНрдЧрдо)ред рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рд╣рдо рдФрд░ рдЕрдзрд┐рдХ рдЕрдиреБрднрд╡ рдПрдХрддреНрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

@ рдЖрд░рдПрд╕рд╕реА

рд╢рд╛рдпрдж рдСрдмреНрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдЕрд▓рд┐рдпрд╛рд╕рд┐рдмрд┐рд▓рд┐рдЯреА рдкрд░ рдкреИрдХреЗрдЬ рд╕реНрддрд░ рдХреА рдЬрд╛рдирдХрд╛рд░реА рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдорджрдж рдорд┐рд▓ рд╕рдХрддреА рд╣реИред
(рдпрд╣ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП рдХрд┐ рдЧреЛ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреЛ рдареАрдХ рд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд░рд╣рдирд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред)

@ рдореЗрд░реЛрд╡рд┐рдпрд╕ @rsc

рдП) рдПрдХ рд╣реА рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рдЙрдкрдирд╛рдо рдФрд░ рдЙрд╕рдХреЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдкреНрд░рдХрд╛рд░ рджреЛрдиреЛрдВ рдХреЛ рдПрдореНрдмреЗрдб рдХрд░рдиреЗ рд╕реЗ рдордирд╛ рдХрд░реЗрдВ

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдХрдИ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдПрдореНрдмреЗрдбрд┐рдВрдЧ рд╡рд┐рдзрд┐ рд╕реЗрдЯ рдХреЗ рд╕рд╛рде рдЗрдВрдЯрд░реИрдХреНрдЯ рдХрд░рддрд╛ рд╣реИред (рдпрджрд┐ рдПрдореНрдмреЗрдбреЗрдб рдкреНрд░рдХрд╛рд░ рдореЗрдВ рдПрдХ рдЧреИрд░-рд░рд┐рдХреНрдд рд╡рд┐рдзрд┐ рд╕реЗрдЯ рд╣реИ рдФрд░ рдЙрди рд╡рд┐рдзрд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рдПрдЧрд╛: https://play.golang.org/p/XkaB2a0_RKред)

рдЗрд╕рд▓рд┐рдП рдбрдмрд▓-рдПрдореНрдмреЗрдбрд┐рдВрдЧ рдХреЛ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рд╕реНрдкрд╖реНрдЯ рдирд┐рдпрдо рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ рдорд╛рдорд▓реЛрдВ рдХреЗ рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рд╕рдмрд╕реЗрдЯ рдореЗрдВ рдЕрдВрддрд░ рд▓рд╛рдПрдЧрд╛; рдореБрдЭреЗ рдЬрдЯрд┐рд▓рддрд╛ рдХреЗ рд▓рд╛рдпрдХ рдирд╣реАрдВ рд▓рдЧрддрд╛ред

рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдкреНрд░рдХрд╛рд░ рдХреЗ рдЙрдкрдирд╛рдореЛрдВ рдХреЛ рдмреАрдЬрдЧрдгрд┐рддреАрдп рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдХреНрдпреЛрдВ рди рджреЗрдЦреЗрдВ рдФрд░ рдЙрдкрдирд╛рдореЛрдВ рдХреЛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рдПрдХ рд╕реЗрдЯ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рджреЗрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдПрдХ рдмреЛрдирд╕ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрдХрд▓рди рд╕рдордп рдкреНрд░рдХрд╛рд░ рдХреА рдЬрд╛рдБрдЪ рдХреЗ рд╕рд╛рде рдПрдХ рдЦрд╛рд▓реА рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рднреА рдорд┐рд▓рддрд╛ рд╣реИ, рдПрдХ рд▓рд╛

type Stringeroonie = {string,fmt.Stringer}

@j7b

рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдкреНрд░рдХрд╛рд░ рдХреЗ рдЙрдкрдирд╛рдореЛрдВ рдХреЛ рдмреАрдЬрдЧрдгрд┐рддреАрдп рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдХреНрдпреЛрдВ рди рджреЗрдЦреЗрдВ рдФрд░ рдЙрдкрдирд╛рдореЛрдВ рдХреЛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╕рдореВрд╣ рдореЗрдВ рд╕рдорд░реНрдерди рджреЗрдВ

рдЙрдкрдирд╛рдо рд╢рдмреНрджрд╛рд░реНрде рдФрд░ рд╕рдВрд░рдЪрдирд╛рддреНрдордХ рд░реВрдк рд╕реЗ рдореВрд▓ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рдорддреБрд▓реНрдп рд╣реИрдВред рдмреАрдЬреАрдп рдбреЗрдЯрд╛рдЯрд╛рдЗрдк рдирд╣реАрдВ рд╣реИрдВ: рд╕рд╛рдорд╛рдиреНрдп рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЙрдиреНрд╣реЗрдВ рдЯрд╛рдЗрдк-рдЯреИрдЧ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рдВрдЧреНрд░рд╣рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред (рдЧреЛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкреНрд░рдХрд╛рд░ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЙрд╕ рдкреНрд░рдХрд╛рд░ рдХреА рдЬрд╛рдирдХрд╛рд░реА рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдВрд░рдЪрдирд╛ рдФрд░ рдЕрдиреНрдп рдЧреИрд░-рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкреНрд░рдХрд╛рд░ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред)

@рдмреАрд╕реАрдорд┐рд▓реНрд╕

рдпрд╣ рджреЛрд╖рдкреВрд░реНрдг рддрд░реНрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рд╕реЗ рд╕рдВрдкрд░реНрдХ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЙрд░реНрдл тАЛтАЛтАЛтАЛрдП рдЯрд╛рдЗрдк рдЯреА рдХрд╛ рдП рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдП рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ {} рдФрд░ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ рдкрд╛рд░рджрд░реНрд╢реА рд░реВрдк рд╕реЗ рдП рд╕реЗ рдЯреА рдХреЗ рдЪрд░ рдХреЛ рдЙрди рдХреНрд╖реЗрддреНрд░реЛрдВ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рджреЗрддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдЯрд╛рдЗрдк рдП рдХреЗ рдЪрд░ рдШреЛрд╖рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред , рдЬреЛ рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдерд╛ рдХрд┐ рдЬреНрдпрд╛рджрд╛рддрд░ рд░реИрдЦрд┐рдХ рд╕рдВрдХрд▓рди-рд╕рдордп рд▓рд╛рдЧрдд, рд╕реНрдкрд╖реНрдЯ, рдФрд░ type T = рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмреАрдЬрдЧрдгрд┐рдд рд╕рд╣рд┐рдд рдХрдВрдкрд╛рдЗрд▓рд░-рдкреНрд░рдмрдВрдзрд┐рдд рдЫрджреНрдо рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЖрдзрд╛рд░ рддреИрдпрд╛рд░ рдХрд░реЗрдЧрд╛, рдФрд░ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рд╕рдВрдХрд▓рди рд╕рдордп рдкрд░ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╕рдВрджрд░реНрдн рдЬреИрд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рднреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛрдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛрдб рдХрд╛ рд╕рдВрдмрдВрдз рдерд╛, рд╡рд╣ рдХреЗрд╡рд▓ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ {} "рд╣реБрдб рдХреЗ рдиреАрдЪреЗ" рд╣реЛрдЧрд╛ред

рд╡рд┐рдЪрд╛рд░ рдХреА рдЙрд╕ рдЯреНрд░реЗрди рдореЗрдВ рдХрдорд┐рдпрд╛рдВ рд╢рд╛рдпрдж рдЕрдЬреНрдЮрд╛рдирддрд╛ рдХрд╛ рдЙрддреНрдкрд╛рдж рд╣реЛрдВрдЧреА, рдФрд░ рдЪреВрдВрдХрд┐ рдореИрдВ рдЕрд╡рдзрд╛рд░рдгрд╛ рдХрд╛ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдкреНрд░рдорд╛рдг рджреЗрдиреЗ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдирд╣реАрдВ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдпрд╣ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдореЗрдВ рдкреНрд░рд╕рдиреНрдирддрд╛ рд╣реЛ рд░рд╣реА рд╣реИ рдХрд┐ рдпрд╣ рдХрдореА рдФрд░ рд╕реНрдердЧрд┐рдд рд╣реИред

@ j7b рднрд▓реЗ рд╣реА рдПрдбреАрдЯреА рдЬрд╣рд╛рдВ рдПрдХ рдХреНрд░рдорд┐рдХ рдорд░рдореНрдордд рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рд╣реЛ, рд╡реЗ рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╣реИрдВ; рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рддреЛрдбрд╝реЗ рдмрд┐рдирд╛ ADT рдХреЗ рдХрд┐рд╕реА рднреА рд╕рджрд╕реНрдп рдХреЛ рдЬреЛрдбрд╝рдирд╛ рдпрд╛ рд╣рдЯрд╛рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИред рддреЛ, рдЖрдк рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдЕрдзрд┐рдХ рд╕рдорд╕реНрдпрд╛рдПрдВ рдкреИрджрд╛ рдХрд░реЗрдВрдЧреЗ, рдЬрд┐рддрдирд╛ рдЖрдк рд╣рд▓ рдХрд░реЗрдВрдЧреЗред

рдЗрдВрдЯрд░рдлрд╝реЗрд╕{} рдореЗрдВ рдФрд░ рд╕реЗ рдкрд╛рд░рджрд░реНрд╢реА рд░реВрдк рд╕реЗ рдЕрдиреБрд╡рд╛рдж рдХрд░рдиреЗ рдХрд╛ рдЖрдкрдХрд╛ рд╡рд┐рдЪрд╛рд░ []interface{} рдЬреИрд╕реЗ рдЙрдЪреНрдЪ-рдХреНрд░рдо рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдФрд░ рдЕрдВрдд рдореЗрдВ рдЖрдк рдЧреЛ рдХреА рдПрдХ рддрд╛рдХрдд рдЦреЛ рджреЗрдВрдЧреЗ, рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдбреЗрдЯрд╛ рд▓реЗрдЖрдЙрдЯ рдкрд░ рдирд┐рдпрдВрддреНрд░рдг рджреЗрдирд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рд╕рдм рдХреБрдЫ рд▓рдкреЗрдЯрдиреЗ рдХреА рдЬрд╛рд╡рд╛ рдЪреАрдЬ рдХрд░рдирд╛ рд╣реИред

рдПрдбреАрдЯреА рдпрд╣рд╛рдВ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИрдВред

@Merovius рдореБрдЭреЗ рдкреВрд░рд╛ рдпрдХреАрди рд╣реИ рдХрд┐ рдЕрдЧрд░ рдмреАрдЬрдЧрдгрд┐рддреАрдп рдкреНрд░рдХрд╛рд░ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдореЗрдВ рдирд╛рдо рдмрджрд▓рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИ (рдЬреЛ рдЙрд╕реА рдХреА рдЙрдЪрд┐рдд рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рдЕрдиреБрд░реВрдк рд╣реЛрдЧрд╛) рдпрд╣ рдПрдХ рд╕рдорд╛рдзрд╛рди рд╣реИ, рдЗрдВрдЯрд░рдлрд╝реЗрд╕ {} рдХрдВрдкрд╛рдЗрд▓рд░-рдкреНрд░рдмрдВрдзрд┐рдд рдкреНрд░рдХреНрд╖реЗрдкрдг рдФрд░ рдЪрдпрди рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░реЙрдХреНрд╕реА рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░ рд╕рдХрддрд╛ рд╣реИ рд╡рд░реНрдгрд┐рдд рд╣реИ, рдФрд░ рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдбреЗрдЯрд╛ рд▓реЗрдЖрдЙрдЯ рдХреИрд╕реЗ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИ рдФрд░ рди рд╣реА рдЖрдк "рдЙрдЪреНрдЪ-рдХреНрд░рдо" рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рдХреИрд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреЗрд╡рд▓ рдПрдХ рдкреНрд░рдХрд╛рд░ рд╣реИ рдпрджрд┐ рдЗрд╕реЗ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ [] рдЗрдВрдЯрд░рдлрд╝реЗрд╕ {} рдХреЗрд╡рд▓ рдПрдХ рдкреНрд░рдХрд╛рд░ рд╣реИред

рд╡рд╣ рд╕рдм рдПрдХ рддрд░рдл, рдореИрдВ рд╕рдХрд╛рд░рд╛рддреНрдордХ рд╣реВрдВ type T = рдирд╛рдо рдмрджрд▓рдиреЗ рд╕реЗ рдкрд░реЗ рд╕рд╣рдЬ, рдЙрдкрдпреЛрдЧреА рддрд░реАрдХреЛрдВ рд╕реЗ рдЕрддрд┐рднрд╛рд░рд┐рдд рд╣реЛрдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИ, рдмреАрдЬрдЧрдгрд┐рддреАрдп рдкреНрд░рдХрд╛рд░ рдФрд░ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд░реВрдк рд╕реЗ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╕рдВрджрд░реНрдн рд╕рдмрд╕реЗ рд╕реНрдкрд╖реНрдЯ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдкреНрд░рддреАрдд рд╣реЛрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдЙрд╕ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХреЛ рдмрддрд╛рддреЗ рд╣реБрдП рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ рдПрдХ рдХрдВрдкрд╛рдЗрд▓рд░-рдкреНрд░рдмрдВрдзрд┐рдд рдореЗрдЯрд╛ рдпрд╛ рдЫрджреНрдо рдкреНрд░рдХрд╛рд░ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЙрди рд╕рднреА рддрд░реАрдХреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдПрдХ рдХрдВрдкрд╛рдЗрд▓рд░-рдкреНрд░рдмрдВрдзрд┐рдд рдкреНрд░рдХрд╛рд░ рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдЬреЛ рдЙрди рдЙрдкрдпреЛрдЧреЛрдВ рдХреЛ рд╕рд░реНрд╡реЛрддреНрддрдо рд░реВрдк рд╕реЗ рд╡реНрдпрдХреНрдд рдХрд░рддрд╛ рд╣реИред рдЪреВрдВрдХрд┐ рдХреНрд╡рд╛рд▓рд┐рдлрд╛рдпрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рдкрд░ рдПрдХ рдирдП рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЛ рд╡рд┐рд╢реНрд╡ рд╕реНрддрд░ рдкрд░ рдЖрд░рдХреНрд╖рд┐рдд рд╢рдмреНрджреЛрдВ рдХреЗ рд╕реЗрдЯ рдХреЗ рд╕рд╛рде рдЦреБрдж рдХреЛ рдЪрд┐рдВрддрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рдЬреИрд╕реЗ type A = alias Type рд╕реНрдкрд╖реНрдЯ рдФрд░ рдПрдХреНрд╕реНрдЯреЗрдВрд╕рд┐рдмрд▓ рд╣реЛрдЧрд╛ред

@j7b

рд╡рд╣ рд╕рдм рдПрдХ рддрд░рдл, рдореИрдВ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдкреНрд░рдХрд╛рд░ T = рдирд╛рдо рдмрджрд▓рдиреЗ рд╕реЗ рдкрд░реЗ рд╕рд╣рдЬ, рдЙрдкрдпреЛрдЧреА рддрд░реАрдХреЛрдВ рд╕реЗ рдЕрддрд┐рднрд╛рд░рд┐рдд рд╣реЛрдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд░рдЦрддрд╛ рд╣реВрдВ,

рдореБрдЭреЗ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдирд╣реАрдВред рдЧреЛ рдЖрдЬ (рдЬреНрдпрд╛рджрд╛рддрд░) рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдСрд░реНрдереЛрдЧреЛрдирд▓ рд╣реИ, рдФрд░ рдЙрд╕ рдСрд░реНрдереЛрдЧреЛрдирд▓рд┐рдЯреА рдХреЛ рдмрдирд╛рдП рд░рдЦрдирд╛ рдПрдХ рдЕрдЪреНрдЫреА рдмрд╛рдд рд╣реИред

рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ, рдЖрдЬ, рд╡рд╣ рдЧреЛ рдореЗрдВ рдПрдХ рдирдпрд╛ рдкреНрд░рдХрд╛рд░ рдЯреА рдШреЛрд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ type T def , рдЬрд╣рд╛рдВ def рдирдП рдкреНрд░рдХрд╛рд░ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рд╣реИред рдпрджрд┐ рдХреЛрдИ рдмреАрдЬрдЧрдгрд┐рддреАрдп рдбреЗрдЯрд╛рдЯрд╛рдЗрдкреНрд╕ (рдЙрд░реНрдл рдЯреИрдЧ рдХреА рдЧрдИ рдпреВрдирд┐рдпрдиреЛрдВ) рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдореИрдВ рдЙрдирд╕реЗ рдЯрд╛рдЗрдк рдЙрдкрдирд╛рдореЛрдВ рдХреЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рдмрдЬрд╛рдп рдЙрд╕ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдиреЗ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реВрдВред

рдореИрдВ рдПрдХ рдЕрд▓рдЧ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдмрд┐рдВрджреБ (рд╕рдорд░реНрдерди рдореЗрдВ) рдкреНрд░рдХрд╛рд░ рдХреЗ рдЙрдкрдирд╛рдореЛрдВ рдореЗрдВ рдлреЗрдВрдХрдирд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ, рдЬреЛ рдХрд┐ рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рд╡реИрдХрд▓реНрдкрд┐рдХ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдХреБрдЫ рдЕрдВрддрд░реНрджреГрд╖реНрдЯрд┐ рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддрд╛ рд╣реИ:

рдЖрдЗрдП рдПрдХ рдкрд▓ рдХреЗ рд▓рд┐рдП рдкреАрдЫреЗ рд╣рдЯреЗрдВ рдФрд░ рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ type T <a type> рдлреЙрд░реНрдо рдХреА рдирд┐рдпрдорд┐рдд рдкреБрд░рд╛рдиреА рдЧреЛ рдкреНрд░рдХрд╛рд░ рдХреА рдШреЛрд╖рдгрд╛рдПрдВ рдирд╣реАрдВ рдереАрдВ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдЙрдкрдирд╛рдо рдШреЛрд╖рдгрд╛рдПрдВ type A = <a type> рдЯрд╛рдЗрдк рдХрд░реЗрдВред

(рддрд╕реНрд╡реАрд░ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП рдпрд╣ рднреА рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдХрд┐рд╕реА рддрд░рд╣ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ - рд░рд┐рд╕реАрд╡рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдирд╛рдорд┐рдд рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдирд╣реАрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреЛрдИ рд╡рд░реНрдЧ рдкреНрд░рдХрд╛рд░ рдХреА рдзрд╛рд░рдгрд╛ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рд╢рд╛рдмреНрджрд┐рдХ рд░реВрдк рд╕реЗ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдЕрдВрджрд░ рдФрд░ рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╛рдорд┐рдд рдкреНрд░рдХрд╛рд░ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рджреЛ рдРрд╕реЗ рдкреНрд░рдХрд╛рд░ рдЬреЛ рд╕рдВрд░рдЪрдирд╛рддреНрдордХ рд░реВрдк рд╕реЗ рд╕рдорд╛рди рд╣реИрдВ рд▓реЗрдХрд┐рди рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡рд┐рдзрд┐рдпрд╛рдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреНрд░рдХрд╛рд░ рд╣реЛрдВрдЧреЗред рдЗрд╕ рд╡рд┐рдЪрд╛рд░ рдкреНрд░рдпреЛрдЧ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╡рд░рдг рдпрд╣рд╛рдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИрдВред)

рдореЗрд░рд╛ рджрд╛рд╡рд╛ рд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреА рджреБрдирд┐рдпрд╛ рдореЗрдВ рд╣рдо рд╡рд╣реА рдХреЛрдб рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд╣рдо рдЕрднреА рд▓рд┐рдЦрддреЗ рд╣реИрдВ: рд╣рдо (рдЙрдкрдирд╛рдо) рдкреНрд░рдХрд╛рд░ рдХреЗ рдирд╛рдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдЦреБрдж рдХреЛ рджреЛрд╣рд░рд╛рдирд╛ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рд╣реИ, рдФрд░ рдкреНрд░рдХрд╛рд░ рд╕реНрд╡рдпрдВ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо рдПрдХ рдкреНрд░рдХрд╛рд░ рдореЗрдВ рдбреЗрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ -рд╕реБрд░рдХреНрд╖рд┐рдд рддрд░реАрдХрд╛ред

рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдЕрдЧрд░ рдЧреЛ рдХреЛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдбрд┐рдЬрд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛрддрд╛, рддреЛ рд╣рдо рд╢рд╛рдпрдж рдареАрдХ рд╣реЛрддреЗ, рднреА, рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдРрд╕реА рджреБрдирд┐рдпрд╛ рдореЗрдВ, рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рдХрд╛рд░ рд╕рдорд╛рди рд╣реИрдВ рдпрджрд┐ рд╡реЗ рд╕рдВрд░рдЪрдирд╛рддреНрдордХ рд░реВрдк рд╕реЗ рд╕рдорд╛рди рд╣реИрдВ (рдирд╛рдо рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛), рддреЛ рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдЬреЛ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВ, рд╡реЗ рдкрд╣рд▓реЗ рд╕реНрдерд╛рди рдкрд░ рдирд╣реАрдВ рджрд┐рдЦрд╛рдИ рджреЗрдВрдЧреА, рдФрд░ рдХрд┐рд╕реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреАред рднрд╛рд╖рд╛ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрдиред

рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╕реБрд░рдХреНрд╖рд╛ рддрдВрддреНрд░ рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдЬреЛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╡рд░реНрддрдорд╛рди рдЧреЛ рдореЗрдВ рд╣реИ: рд╣рдо рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд╛рдо рдкреЗрд╢ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛрдВрдЧреЗ рдФрд░ рдпрд╣ рдмрддрд╛рдПрдВрдЧреЗ рдХрд┐ рдпрд╣ рдЕрдм рдПрдХ рдирдпрд╛, рдЕрд▓рдЧ рдкреНрд░рдХрд╛рд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред (рдлрд┐рд░ рднреА, рдпрд╣ рдзреНрдпрд╛рди рд░рдЦрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдпрд╣ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдПрдХ рд╕реБрд░рдХреНрд╖рд╛ рддрдВрддреНрд░ рд╣реИред)

рдЕрдиреНрдп рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ, рдореМрдЬреВрджрд╛ рдкреНрд░рдХрд╛рд░ рд╕реЗ рдПрдХ рдирдпрд╛, рдЕрд▓рдЧ рдкреНрд░рдХрд╛рд░ рдмрдирд╛рдиреЗ рдХреА рдзрд╛рд░рдгрд╛ рдХреЛ "рдмреНрд░рд╛рдВрдбрд┐рдВрдЧ" рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ: рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдПрдХ рдмреНрд░рд╛рдВрдб рдЗрд╕рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдЗрд╕реЗ рдЕрдиреНрдп рд╕рднреА рдкреНрд░рдХрд╛рд░реЛрдВ рд╕реЗ рдЕрд▓рдЧ рдмрдирд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореЛрдбреБрд▓рд╛ -3 рдореЗрдВ, рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢реЗрд╖ рдХреАрд╡рд░реНрдб BRANDED рдерд╛ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП TYPE T = BRANDED REF T0 T0 рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛, рдЕрд▓рдЧ рд╕рдВрджрд░реНрдн рдмрдирд╛рдПрдЧрд╛)ред рд╣рд╛рд╕реНрдХреЗрд▓ рдореЗрдВ, рдПрдХ рдкреНрд░рдХрд╛рд░ рд╕реЗ рдкрд╣рд▓реЗ new рд╢рдмреНрдж рдХрд╛ рд╕рдорд╛рди рдкреНрд░рднрд╛рд╡ рдкрдбрд╝рддрд╛ рд╣реИред

рдЕрдкрдиреА рд╡реИрдХрд▓реНрдкрд┐рдХ рдЧреЛ рджреБрдирд┐рдпрд╛ рдореЗрдВ рд╡рд╛рдкрд╕ рдЬрд╛рдиреЗ рдкрд░, рд╣рдо рд╣рдореЗрдВ рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рд╣рдореЗрдВ рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдореЗрдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЬрд╣рд╛рдВ рд╣рдо рдЕрдкрдиреЗ рдХреЛрдб рдХреА рд╕реБрд░рдХреНрд╖рд╛ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ type MyBuffer = []byte рдФрд░ type YourBuffer = []byte рдирд┐рд░реВрдкрд┐рдд рд╣реЛ рд╕рдХреЗрдВ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рддрд╛рдХрд┐ рд╣рдо рдЧрд▓рддреА рд╕реЗ рдЧрд▓рдд рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВред рд╣рдо рдареАрдХ рдЙрд╕реА рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреА рдмреНрд░рд╛рдВрдбрд┐рдВрдЧ рд╢реБрд░реВ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо type MyBuffer = new []byte , рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ type MyBuffer = new YourBuffer рдЗрд╕ рдЖрд╢рдп рд╕реЗ рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ MyBuffer рдЕрдм YourBuffer рд╕реЗ рдПрдХ рдЕрд▓рдЧ рдкреНрд░рдХрд╛рд░ рд╣реИред

рдпрд╣ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрдм рдЬреЛ рд╣реИ рдЙрд╕рдХреА рджреЛрд╣рд░реА рд╕рдорд╕реНрдпрд╛ рд╣реИред рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдЧреЛ рдореЗрдВ, рдкрд╣рд▓реЗ рджрд┐рди рд╕реЗ, рд╣рдо рд╣рдореЗрд╢рд╛ "рдмреНрд░рд╛рдВрдбреЗрдб" рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ рдЬреИрд╕реЗ рд╣реА рдЙрдиреНрд╣реЗрдВ рдХреЛрдИ рдирд╛рдо рдорд┐рд▓рддрд╛ рд╣реИред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, type T <a type> рдкреНрд░рднрд╛рд╡реА рд░реВрдк рд╕реЗ type T = new <a type> ред

рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ: рдореМрдЬреВрджрд╛ рдЧреЛ рдореЗрдВ, рдирд╛рдорд┐рдд рдкреНрд░рдХрд╛рд░ рд╣рдореЗрд╢рд╛ "рдмреНрд░рд╛рдВрдбреЗрдб" рдкреНрд░рдХрд╛рд░ рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдПрдХ рдирд╛рдо рдХреА рдзрд╛рд░рдгрд╛ рдирд╣реАрдВ рд╣реИ (рдЬрд┐рд╕реЗ рдЕрдм рд╣рдо рдкреНрд░рдХрд╛рд░ рдЙрдкрдирд╛рдо рдХрд╣рддреЗ рд╣реИрдВ)ред рдХрдИ рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ, рдкреНрд░рдХрд╛рд░ рдХреЗ рдЙрдкрдирд╛рдо рдЖрджрд░реНрд╢ рд╣реИрдВ, рдФрд░ рдХрд┐рд╕реА рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдирдпрд╛, рдЕрд▓рдЧ рдкреНрд░рдХрд╛рд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП "рдмреНрд░рд╛рдВрдбрд┐рдВрдЧ" рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред

рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рджреЛрдиреЛрдВ рддрдВрддреНрд░ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧреА рд╣реИрдВ, рдФрд░ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЙрдкрдирд╛рдореЛрдВ рдХреЗ рд╕рд╛рде рд╣рдо рдЕрдВрддрддрдГ рдЙрди рджреЛрдиреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред

@griesemer рдЙрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЙрдкрдирд╛рдо рдкреНрд░рд╕реНрддрд╛рд╡ рд╣реИ рдЬрд┐рд╕реЗ рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдХреЛ рд╕рд╛рдл рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдореБрдЭреЗ рдбрд░ рд╣реИ рдХрд┐ рдХреЗрд╡рд▓ рдЯрд╛рдЗрдк рдПрд▓рд┐рдпрд╛рд╕ рд╣реА рдЗрд╕рдХреЗ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рджрд╛рдпрд░реЗ рдХреЗ рдХрд╛рд░рдг рдореБрд╢реНрдХрд┐рд▓ рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдПрдЬ рдХреЗрд╕ рдмрдирд╛рдПрдВрдЧреЗред

рджреЛрдиреЛрдВ рдкреНрд░рд╕реНрддрд╛рд╡реЛрдВ рдореЗрдВ, рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реЛ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд▓рд┐рдВрдХрд░ рд╕реЗ рд╕рд╣рдпреЛрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдирд╛рдо рдЧреЛ рдореЗрдВ рдЯрд╛рдЗрдк рдкрд░рд┐рднрд╛рд╖рд╛ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ рдЬреИрд╕рд╛ рдЖрдкрдиреЗ рд╕рдордЭрд╛рдпрд╛ рд╣реИред

рдореИрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛрдб рд╕реЗ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рд╡рд┐рдЪрд╛рд░ рд╣реИ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдХрд╕реНрдЯрдо рдЕрдиреБрднрд╛рдЧ рдЬреЛрдбрд╝рдирд╛ рд╕рдВрднрд╡ рд╣реИред рдпрджрд┐ рд╕рдВрдпреЛрдЧ рд╕реЗ, рдкреНрд░рдХрд╛рд░ рдХреЗ рдирд╛рдореЛрдВ рдФрд░ рдЙрдирдХреЗ рдЙрдкрдирд╛рдореЛрдВ рдХреЗ рд▓рд┐рдВрдХ рд╕рдордп рдкрд░ рднрд░реА рд╣реБрдИ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреА рдЕрдирд┐рдпрдВрддреНрд░рд┐рдд рд▓рд┐рдВрдХреНрдб рд╕реВрдЪреА рдХреЛ рд░рдЦрдирд╛ рд╕рдВрднрд╡ рдерд╛, рддреЛ рд╢рд╛рдпрдж рдЗрд╕рд╕реЗ рдорджрдж рдорд┐рд▓ рд╕рдХреЗред рд░рдирдЯрд╛рдЗрдо рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдВрдХрд▓рди рдХрд╛ рддреНрдпрд╛рдЧ рдХрд┐рдП рдмрд┐рдирд╛ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдЬрд╛рдирдХрд╛рд░реА рд╣реЛрдЧреАред

рд╡рд┐рдЪрд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рд░рдирдЯрд╛рдЗрдо рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЙрдкрдирд╛рдореЛрдВ рдХреЛ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рддрд╛рдХрд┐ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рд╕реНрдкрд╖реНрдЯ рд░рд╣реЗрдВ (рдЪреВрдВрдХрд┐ рдПрд▓рд┐рдпрд╛рд╕рд┐рдВрдЧ рдЪрд▓ рд░рд╣реЗ рдХреЛрдб рдФрд░ рд▓рд┐рдЦрд┐рдд рдХреЛрдб рдХреЗ рдмреАрдЪ рдирд╛рдордХрд░рдг рд╡рд┐рд╕рдВрдЧрддрд┐ рдХрд╛ рдкрд░рд┐рдЪрдп рджреЗрддрд╛ рд╣реИ)ред

рдПрд▓рд┐рдпрд╛рд╕рд┐рдВрдЧ рдХреЗ рдЙрдкрдпреЛрдЧ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХрд╛ рдПрдХ рд╡рд┐рдХрд▓реНрдк рдпрд╣ рд╣реЛрдЧрд╛ рдХрд┐ рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рдПрдХ рдареЛрд╕ рд╕рдВрд╕реНрдХрд░рдг рдХреА рдХрд╣рд╛рдиреА рд╣реЛ, рдЬреЛ рд╕рдВрджрд░реНрдн рдкреИрдХреЗрдЬ рдХреЗ рд▓рд┐рдП рдХрд┐рдП рдЧрдП рдкреИрдХреЗрдЬреЛрдВ рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдХреЛ "рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд" рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛред рд▓реЗрдХрд┐рди рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдПрдХ рдФрд░ рдореБрджреНрджрд╛ рд╣реИред

рдЕрдВрдд рдореЗрдВ, рдпрд╣ рдЕрднреА рднреА рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИ рдХрд┐ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рд▓рд┐рдП рд╕рдВрд░рдЪрдирд╛рддреНрдордХ рддреБрд▓реНрдпрддрд╛ рдФрд░ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рдирд╛рдо рддреБрд▓реНрдпрддрд╛ рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛рдПред
рдЗрд╕ рддрдереНрдп рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреЛ рдЕрдзрд┐рдХ рдмрд╛рдзрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдРрд╕рд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рд╕реНрд▓рд╛рдЗрд╕ рдЯрд╛рдЗрдкрдирд╛рдо рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЗ рдкреНрд░рддрд┐-рдкреИрдХреЗрдЬ рд╕реНрд▓рд╛рдЗрд╕ рдХреЛ рд░рдЦрдХрд░ рдЙрдкрдирд╛рдо рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП/рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

@atdiar рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрдкрдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЬрдм рдЖрдк "рдЕрд▓рдЧ рд╕рдВрдХрд▓рди" рдХрд╣рддреЗ рд╣реИрдВ рддреЛ рдореИрдВ рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реВрдВред рдпрджрд┐ рдкреИрдХреЗрдЬ P io рдФрд░ рдмрд╛рдЗрдЯреНрд╕ рдЖрдпрд╛рдд рдХрд░рддрд╛ рд╣реИ, рддреЛ рддреАрдиреЛрдВ рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЪрд░рдгреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрджрд┐ io рдпрд╛ рдмрд╛рдЗрдЯреНрд╕ рдмрджрд▓рддреЗ рд╣реИрдВ, рддреЛ P рдХреЛ рдлрд┐рд░ рд╕реЗ рдХрдВрдкрд╛рдЗрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣ _not_ рдорд╛рдорд▓рд╛ рд╣реИ рдХрд┐ рдЖрдк io рдпрд╛ рдмрд╛рдЗрдЯреНрд╕ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ P рдХреЗ рдкреБрд░рд╛рдиреЗ рд╕рдВрдХрд▓рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдкреНрд▓рдЧрдЗрди рдореЛрдб рдореЗрдВ рднреА, рдпрд╣ рд╕рдЪ рд╣реИред рдХреНрд░реЙрд╕-рдкреИрдХреЗрдЬ рдЗрдирд▓рд╛рдЗрдирд┐рдВрдЧ рдЬреИрд╕реЗ рдкреНрд░рднрд╛рд╡реЛрдВ рдХреЗ рдХрд╛рд░рдг, рдЖрдИрдУ рдпрд╛ рдмрд╛рдЗрдЯреНрд╕ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдЧреИрд░-рдПрдкреАрдЖрдИ-рджреГрд╢реНрдпрдорд╛рди рдкрд░рд┐рд╡рд░реНрддрди рднреА рдкреНрд░рднрд╛рд╡реА рдПрдмреАрдЖрдИ рдХреЛ рдмрджрд▓ рджреЗрддреЗ рд╣реИрдВ, рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдкреА рдХреЛ рдлрд┐рд░ рд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЙрдкрдирд╛рдо рдЯрд╛рдЗрдк рдХрд░реЗрдВ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдмрджрддрд░ рдирд╣реАрдВ рдмрдирд╛рддреЗ рд╣реИрдВред

@ j7d , рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд┐рд╕реНрдЯрдо рд╕реНрддрд░ рдкрд░, рдпреЛрдЧ рдкреНрд░рдХрд╛рд░ рдпрд╛ рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╕рдмрдЯрд╛рдЗрдкрд┐рдВрдЧ (рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рдЪрд░реНрдЪрд╛ рдореЗрдВ рджреВрд╕рд░реЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕реБрдЭрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛) рдХреЗрд╡рд▓ рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЙрдкрдпреЛрдЧреЛрдВ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╕рдЪ рд╣реИ рдХрд┐ рд╣рдо рдмрд╛рдЗрдЯреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪ рд╕рдХрддреЗ рд╣реИрдВред рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╕рдордп рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реЛрддреА рд╣реИрдВред рдЗрд╕ рдЯрд┐рдкреНрдкрдгреА рдХреЗ рдмрд╛рдХреА рд╣рд┐рд╕реНрд╕реЗ рдЧреЛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрдирдХреЗ рдореМрд▓рд┐рдХ рд╕рдВрдмрдВрдзреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдмрдЯрд╛рдЗрдкрд┐рдВрдЧ рд╕реНрддрд░ рдкрд░ рдмреЛрд▓ рд░рд╣реЗ рд╣реИрдВ, рди рдХрд┐ рдЧреЛ рднрд╛рд╖рд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рд▓рд╛рдЧреВ рдХрд░рддреА рд╣реИред рдЧреЛ рдХреЛ рдореВрд▓рднреВрдд рд╕рдВрдмрдВрдзреЛрдВ рдХреЗ рдЕрдиреБрд░реВрдк рдирд┐рдпрдореЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рд╣рд╛рд▓рд╛рдВрдХрд┐ред

рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ ("рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛" рдХрд╣рдиреЗ рдХрд╛ рдПрдХ рд╢рд╛рдирджрд╛рд░ рддрд░реАрдХрд╛) рд╕рд╣рд╕рдВрдпреЛрдЬрдХ рд╣реИ рдпрджрд┐ рдпрд╣ рдЙрдк-рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рдВрдмрдВрдз рдХреЛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдпрджрд┐ рдпрд╣ рд╕рдВрдмрдВрдз рдХреЛ рдЙрд▓рдЯ рджреЗрддрд╛ рд╣реИ, рддреЛ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрддред

рдлрд╝рдВрдХреНрд╢рди рдкрд░рд┐рдгрд╛рдо рдореЗрдВ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рд╣рд╕рдВрдпреЛрдЬрдХ рд╣реИред рдПрдХ func() рдмрдлрд░ "рдПрдХ" func() рд░реАрдбрд░ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдмрдлрд░ рд▓реМрдЯрдиреЗ рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рдПрдХ рд░реАрдбрд░ рд╡рд╛рдкрд╕ рдХрд░ рджрд┐рдпрд╛ рд╣реИред рдлрд╝рдВрдХреНрд╢рди рддрд░реНрдХ рдореЗрдВ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ _not_ рд╕рд╣рд╕рдВрдпреЛрдЬрдХ рд╣реИред рдПрдХ func (рдмрдлрд░) рдПрдХ func (рд░реАрдбрд░) рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ func рдХреЛ рдмрдлрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдФрд░ рдХреБрдЫ рдкрд╛рдардХ рдмрдлрд░ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред

рдлрд╝рдВрдХреНрд╢рди рддрд░реНрдХ рдореЗрдВ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╡рд┐рд░реЛрдзрд╛рднрд╛рд╕реА рд╣реИред рдПрдХ func (рд░реАрдбрд░) рдПрдХ func (рдмрдлрд░) рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ func рдХреЛ рдХреЗрд╡рд▓ рдПрдХ рд░реАрдбрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдФрд░ рдПрдХ рдмрдлрд░ рдПрдХ рд░реАрдбрд░ рд╣реЛрддрд╛ рд╣реИред рдлрд╝рдВрдХреНрд╢рди рдкрд░рд┐рдгрд╛рдо рдореЗрдВ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ _not_ contravariant рд╣реИред рдПрдХ func() рд░реАрдбрд░ рдПрдХ func() рдмрдлрд░ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ func рдПрдХ рд░реАрдбрд░ рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рдФрд░ рдХреБрдЫ рдкрд╛рдардХ рдмрдлрд░ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред

рджреЛрдиреЛрдВ рдХреЛ рдорд┐рд▓рд╛рдХрд░, рдПрдХ func(Reader) Reader func(Buffer) Buffer рдирд╣реАрдВ рд╣реИ, рди рд╣реА рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдХреНрдпреЛрдВрдХрд┐ рдпрд╛ рддреЛ рддрд░реНрдХ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рдпрд╛ рдкрд░рд┐рдгрд╛рдо рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред (рдЗрди рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХрдорд╛рддреНрд░ рд╕рдВрдпреЛрдЬрди рдпрд╣ рд╣реЛрдЧрд╛ рдХрд┐ рдПрдХ func (рд░реАрдбрд░) рдмрдлрд░ рдПрдХ func (рдмрдлрд░) рд░реАрдбрд░ рд╣реИред)

рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдпрджрд┐ func(X1) X2 func(X3) X4 рдХрд╛ рдПрдХ (рдЙрдкрдкреНрд░рдХрд╛рд░) рд╣реИ, рддреЛ рдпрд╣ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ X3 рдПрдХ (рдЙрдкрдкреНрд░рдХрд╛рд░) X1 рд╣реИ рдФрд░ рдЗрд╕реА рддрд░рд╣ X2 рдПрдХ (рдЙрдкрдкреНрд░рдХрд╛рд░) X4 рд╣реИред рдЙрдкрдирд╛рдо рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЬрд╣рд╛рдВ рд╣рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ T1 рдФрд░ T2 рд╡рд┐рдирд┐рдореЗрдп рд╣реЛрдВ, рдПрдХ func(T1) T1 func(T2) T2 рдХрд╛ рдПрдХ рдЙрдкрдкреНрд░рдХрд╛рд░ рд╣реИ, рдпрджрд┐ T1 T2 рдХрд╛ рдПрдХ рдЙрдкрдкреНрд░рдХрд╛рд░ рд╣реИ _рдФрд░_ T2 T1 рдХрд╛ рдПрдХ рдЙрдкрдкреНрд░рдХрд╛рд░ рд╣реИред рдЗрд╕рдХрд╛ рдореВрд▓ рд░реВрдк рд╕реЗ рдорддрд▓рдм рд╣реИ рдХрд┐ T1 _same_ рдкреНрд░рдХрд╛рд░ T2 рдХреЗ рд░реВрдк рдореЗрдВ рд╣реИ, рдЕрдзрд┐рдХ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдХрд╛рд░ рдирд╣реАрдВ рд╣реИред

рдореИрдВрдиреЗ рдлрд╝рдВрдХреНрд╢рди рддрд░реНрдХреЛрдВ рдФрд░ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╡рд┐рд╣рд┐рдд рдЙрджрд╛рд╣рд░рдг (рдФрд░ рдПрдХ рдЕрдЪреНрдЫрд╛) рд╣реИ, рд▓реЗрдХрд┐рди рдЬрдЯрд┐рд▓ рдкрд░рд┐рдгрд╛рдо рдмрдирд╛рдиреЗ рдХреЗ рдЕрдиреНрдп рддрд░реАрдХреЛрдВ рдХреЗ рд▓рд┐рдП рднреА рдРрд╕рд╛ рд╣реА рд╣реЛрддрд╛ рд╣реИред рдЖрдо рддреМрд░ рдкрд░ рдЖрдкрдХреЛ рдЖрдЙрдЯрдкреБрдЯ (рдЬреИрд╕реЗ func() T, рдпрд╛ <-chan T, рдпрд╛ map[...]T) рдФрд░ рдЗрдирдкреБрдЯ рдХреЗ рд▓рд┐рдП contravariance (рдЬреИрд╕реЗ func(T), рдпрд╛ chan<-T, рдпрд╛ map[T) рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрд╡рд░реНрд╕рд┐рд╕ рдорд┐рд▓рддрд╛ рд╣реИред ]...) рдФрд░ рдЗрдирдкреБрдЯ + рдЖрдЙрдЯрдкреБрдЯ (рдЬреИрд╕реЗ func(T) T, рдпрд╛ chan T, рдпрд╛ *T, рдпрд╛ [10]T, рдпрд╛ []T, рдпрд╛ struct {рдлрд╝реАрд▓реНрдб T}, рдпрд╛ рдПрдХ рдЪрд░ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдкреНрд░рдХрд╛рд░ рд╕рдорд╛рдирддрд╛ рдЯреА рдкреНрд░рдХрд╛рд░)ред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЧреЛ рдореЗрдВ рд╕рдмрд╕реЗ рдЖрдо рдорд╛рдорд▓рд╛, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЙрджрд╛рд╣рд░рдгреЛрдВ рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрдирдкреБрдЯ + рдЖрдЙрдЯрдкреБрдЯ рд╣реИред

рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдПрдХ [] рдмрдлрд░ рдПрдХ [] рд░реАрдбрд░ рдирд╣реАрдВ рд╣реИ (рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рдПрдХ рдлрд╛рдЗрд▓ рдХреЛ [] рд░реАрдбрд░ рдореЗрдВ рд╕реНрдЯреЛрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди [] рдмрдлрд░ рдореЗрдВ рдирд╣реАрдВ), рди рд╣реА рдПрдХ [] рд░реАрдбрд░ рдП [] рдмрдлрд░ рд╣реИ (рдХреНрдпреЛрдВрдХрд┐ [] рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ [] рдкрд╛рдардХ рдПрдХ рдлрд╝рд╛рдЗрд▓ рд╡рд╛рдкрд╕ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЬрдмрдХрд┐ [] рдмрдлрд░ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрдлрд░ рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рд╣реЛрдЧрд╛)ред

рдЗрд╕ рд╕рдм рд╕реЗ рдПрдХ рдирд┐рд╖реНрдХрд░реНрд╖ рдпрд╣ рд╣реИ рдХрд┐, рдпрджрд┐ рдЖрдк рд╕рд╛рдорд╛рдиреНрдп рдХреЛрдб рдорд░рдореНрдордд рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдХреЛрдб рдпрд╛ рддреЛ T1 рдпрд╛ T2 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХреЗ, рддреЛ рдЖрдк рдЗрд╕реЗ рдХрд┐рд╕реА рднреА рдпреЛрдЬрдирд╛ рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рдЬреЛ T1 рдХреЛ рдХреЗрд╡рд▓ T2 (рдпрд╛ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд) рдХрд╛ рдПрдХ рдЙрдкрдкреНрд░рдХрд╛рд░ рдмрдирд╛рддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдХреЛ рджреВрд╕рд░реЗ рдХрд╛ рдЙрдк-рдкреНрд░рдХрд╛рд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП - рдЕрд░реНрдерд╛рдд, рдЙрдиреНрд╣реЗрдВ рдПрдХ рд╣реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП - рдЕрдиреНрдпрдерд╛ рдЗрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рд╕реВрдЪреАрдмрджреНрдз рдЙрдкрдпреЛрдЧ рдЕрдорд╛рдиреНрдп рд╣реЛрдВрдЧреЗред

рдпрд╣реА рд╣реИ, рдХреНрд░рдорд┐рдХ рдХреЛрдб рдорд░рдореНрдордд рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрдЯрд╛рдЗрдкрд┐рдВрдЧ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИред рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдЯрд╛рдЗрдк рдЙрдкрдирд╛рдо рдПрдХ рд╣реА рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдирд╛рдо рдкреЗрд╢ рдХрд░рддреЗ рд╣реИрдВ, рддрд╛рдХрд┐ рдЯреА 1 = рдЯреА 2, рд╕рдмрдЯрд╛рдЗрдк рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдпред

рдпрд╣ рдЯрд┐рдкреНрдкрдгреА рджреЛ рд╣рдлреНрддреЗ рдкрд╣рд▓реЗ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ "рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдпреЛрдЧреНрдп рдкреНрд░рдХрд╛рд░" рдХреЗ @iand рдХреЗ рд╕реБрдЭрд╛рд╡ рдкрд░ рднреА рд▓рд╛рдЧреВ рд╣реЛрддреА рд╣реИ рдФрд░ рдореВрд▓ рд░реВрдк рд╕реЗ рддрдм рд╕реЗ @griesemer рдХреЗ рдЙрддреНрддрд░ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рд╣реЛрддрд╛ рд╣реИред

рд╢реАрд░реНрд╖-рд╕реНрддрд░реАрдп рдЪрд░реНрдЪрд╛ рд╕рд╛рд░рд╛рдВрд╢ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ред рдкрд░рд┐рд╡рд░реНрддрди:

  • рдПрдбреЙрдкреНрдЯрд░ рдЪрд░реНрдЪрд╛ рдХреЗ рд╕рд╛рд░рд╛рдВрд╢ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП TODO рдХреЛ рд╣рдЯрд╛рдпрд╛ рдЧрдпрд╛, рдЬреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдлреАрдХрд╛ рдкрдбрд╝ рдЧрдпрд╛ рд╣реИред
  • рдПрдореНрдмреЗрдбрд┐рдВрдЧ рдФрд░ рдлрд╝реАрд▓реНрдб рдирд╛рдореЛрдВ рдХреА рдЪрд░реНрдЪрд╛ рдХрд╛ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╕рд╛рд░рд╛рдВрд╢ред
  • рдбрд┐рдЬрд╝рд╛рдЗрди рдкреНрд░рд╢реНрди рд╕реВрдЪреА рд╕реЗ рдмрд╛рд╣рд░ 'рдЙрдкрдирд╛рдореЛрдВ рдкрд░ рд╡рд┐рдзрд┐рдпреЛрдВ' рдХрд╛ рд╕рд╛рд░рд╛рдВрд╢ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рд▓реЗ рдЬрд╛рдпрд╛ рдЧрдпрд╛, рд╣рд╛рд▓ рдХреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ред
  • рдкреНрд░рддрд┐рдмрд┐рдВрдм рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдкрд░ рдкреНрд░рднрд╛рд╡ рдХреА рдЪрд░реНрдЪрд╛ рдХрд╛ рдЬреЛрдбрд╝рд╛ рд╕рд╛рд░рд╛рдВрд╢ред
  • рдЕрд▓рдЧ рд╕рдВрдХрд▓рди рдХреА рдЪрд░реНрдЪрд╛ рдХрд╛ рдЬреЛрдбрд╝рд╛ рд╕рд╛рд░рд╛рдВрд╢ред
  • рд╡рд┐рднрд┐рдиреНрди рд╕рдмрдЯрд╛рдЗрдкрд┐рдВрдЧ-рдЖрдзрд╛рд░рд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдгреЛрдВ рдХреА рдЪрд░реНрдЪрд╛ рдХрд╛ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╕рд╛рд░рд╛рдВрд╢ред

@rsc рдЕрд▓рдЧ рд╕рдВрдХрд▓рди рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ, рдореЗрд░реА рдЯрд┐рдкреНрдкрдгреА рдЗрд╕ рдмрд╛рдд рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЯрд╛рдЗрдк рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдХреЛ рдЙрдирдХреЗ рдЙрдкрдирд╛рдореЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рдЬреЛ рдЕрд▓рдЧ рд╕рдВрдХрд▓рди рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдХрд╛рд░рдг рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рдЯреНрд░реИрдХреНрдЯреЗрдмрд▓ рдирд╣реАрдВ рд╣реИ) рдпрд╛ рдкреНрд░рддреНрдпреЗрдХ рдЙрдкрдирд╛рдо рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЙрдкрдирд╛рдо рдирд╛рдореЛрдВ рдХреА рд╕реВрдЪреА рдмрдирд╛рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИ рдЖрдпрд╛рдд рдЧреНрд░рд╛рдлрд╝, рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдореЗрдВ рджрд┐рдП рдЧрдП рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рдирд╛рдо рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВред (рдФрд░ рдЙрд╕ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдХреИрд╕реЗ рдФрд░ рдХрд╣рд╛рдБ рд░рдЦрд╛ рдЬрд╛рдП рддрд╛рдХрд┐ рд░рдирдЯрд╛рдЗрдо рдХреА рдЙрд╕ рддрдХ рдкрд╣реБрдБрдЪ рд╣реЛ)ред

@atdiar рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдХрд╣реАрдВ рднреА

@rsc рд╣реБрд╣, рдХреНрд╖рдорд╛ рдХрд░реЗрдВред рдореИрдВ рд╕рд┐рд░ рдореЗрдВ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЙрдкрдирд╛рдо рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЗ рд╕рд╛рде рдлрдВрд╕ рдЧрдпрд╛ рд╣реВрдВ рдФрд░ func рдХреЗ рд▓рд┐рдП рдЕрд▓рд┐рдпрд╛рд╕рд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪ рд░рд╣рд╛ рдерд╛ (рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдПрд▓рд┐рдпрд╛рд╕рд┐рдВрдЧ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рддреЗ рд╣реБрдП)ред рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдХреЛрдб рдореЗрдВ рдирд╛рдореЛрдВ рдФрд░ рд░рдирдЯрд╛рдЗрдо рдкрд░ рдирд╛рдореЛрдВ рдХреЗ рдмреАрдЪ рдПрдХ рд╡рд┐рд╕рдВрдЧрддрд┐ рд╣реЛрдЧреАред
рд░рдирдЯрд╛рдЗрдо рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред рд▓реЙрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдлрд╝реНрд░реЗрдо рдХреЛ рдЙрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдХреБрдЫ рдкреБрдирд░реНрд╡рд┐рдЪрд╛рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
рдореЗрд░реА рдкрд░рд╡рд╛рд╣ рди рдХрд░реЗрдВред

@rsc рдкреБрдирдГ рд╕рд╛рд░рд╛рдВрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдПрдореНрдмреЗрдбреЗрдб рдлрд╝реАрд▓реНрдб рдирд╛рдо рдЕрднреА рднреА рдореБрдЭреЗ рдкрд░реЗрд╢рд╛рди рдХрд░рддрд╛ рд╣реИ; рдкреБрд░рд╛рдиреЗ рдирд╛рдореЛрдВ рдХреЛ рдЗрдзрд░-рдЙрдзрд░ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╕рднреА рд╕рдорд╛рдзрд╛рди рд╕реНрдерд╛рдпреА рдХреАрдЪрдбрд╝ рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕ рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рдмрдбрд╝рд╛ рдмрд┐рдВрджреБ, рдЕрд░реНрдерд╛рддреН рдпрд╣ рдлрд╝реАрд▓реНрдб рдХрд╛ рдирд╛рдо рдмрджрд▓рдиреЗ рдХрд╛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓рд╛ рд╣реИ, рдЬреЛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ, рдореБрдЭреЗ рд╡рд┐рд╢реНрд╡рд╛рд╕ рджрд┐рд▓рд╛рддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдЕрд▓рдЧ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рджреЗрдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП (рдФрд░ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП)ред рдХреНрдпрд╛ рдХреНрд░рдорд┐рдХ рдорд░рдореНрдордд (рд╕рдВрднрд╡рддрдГ рдЙрд╕реА рдЧреЛ рд░рд┐рд▓реАрдЬрд╝ рдореЗрдВ рд╕рдВрдмреЛрдзрд┐рдд) рдХреЗ рд▓рд┐рдП рдлрд╝реАрд▓реНрдб рдирд╛рдореЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз/рдкреНрд░рд╕реНрддрд╛рд╡/рдЪрд░реНрдЪрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдореБрджреНрджрд╛ рдЦреЛрд▓рдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рд╣реЛрдЧрд╛?

@Merovius , рдореИрдВ рдорд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ рдлрд╝реАрд▓реНрдб рдирд╛рдо рдХреЗ рд▓рд┐рдП рдХреНрд░рдорд┐рдХ рдХреЛрдб рдорд░рдореНрдордд рдЕрдиреБрдХреНрд░рдо рдореЗрдВ рдЕрдЧрд▓реА рд╕рдорд╕реНрдпрд╛ рдХреА рддрд░рд╣ рджрд┐рдЦрддреА рд╣реИред рдЙрд╕ рдЪрд░реНрдЪрд╛ рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдХреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рджреБрдирд┐рдпрд╛ рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХрд╛ рдПрдХ рд╕реВрдЯ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рджреЛрдиреЛрдВ рддрд╛рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреБрдЫ рд╕рдмреВрдд рд╣реЛрдВ рдХрд┐ рдпрд╣ рдПрдХ рд╡реНрдпрд╛рдкрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреАред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдПрдХ рд╣реА рд░рд┐рд▓реАрдЬ рдХреЗ рд▓рд┐рдП рдРрд╕рд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИред

рджреЛ рд╕рдкреНрддрд╛рд╣ рджреВрд░ рд╕реЗ рд╡рд╛рдкрд╕ред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЪрд░реНрдЪрд╛ рдПрдХрд╛рдЧреНрд░ рд╣реЛ рдЧрдИ рд╣реИред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рджреЛ рд╣рдлреНрддреЗ рдкрд╣рд▓реЗ рдХреА рдЪрд░реНрдЪрд╛ рдХрд╛ рдЕрдкрдбреЗрдЯ рднреА рдХрд╛рдлреА рдорд╛рдореВрд▓реА рдерд╛ред

рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рд╣рдо:

  • рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдиреНрдп рдирд╛рдо рдХреЗ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдВ,
    рдмрд╢рд░реНрддреЗ рдЧреЛ 1.9 (1 рдлрд░рд╡рд░реА) рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рд▓реЛрдЧреЛрдВ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рддреИрдпрд╛рд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
  • рдПрдХ dev.typealias dev рд╢рд╛рдЦрд╛ рдмрдирд╛рдПрдВ рддрд╛рдХрд┐ CL рдХреА рдЕрдм (рдЬрдирд╡рд░реА) рд╕рдореАрдХреНрд╖рд╛ рдХреА рдЬрд╛ рд╕рдХреЗ рдФрд░ Go 1.9 рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдорд╛рд╕реНрдЯрд░ рдореЗрдВ рд╡рд┐рд▓рдп рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред
  • рдЧреЛ 1.9 рдлрд╝реНрд░реАрдЬрд╝ рдХреА рд╢реБрд░реБрдЖрдд рдХреЗ рдкрд╛рд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЙрдкрдирд╛рдо рд░рдЦрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдВрддрд┐рдо рдирд┐рд░реНрдгрдп рд▓реЗрдВ (рдЬреИрд╕реЗ рд╣рдордиреЗ рдЧреЛ 1.8 рдЪрдХреНрд░ рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рдЙрдкрдирд╛рдореЛрдВ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдерд╛)ред

+1

рдореИрдВ рдЗрд╕ рдмрджрд▓рд╛рд╡ рдХреЗ рдкреАрдЫреЗ рдЪрд░реНрдЪрд╛ рдХреЗ рдЗрддрд┐рд╣рд╛рд╕ рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░рддрд╛ рд╣реВрдВред рдмрддрд╛ рджреЗрдВ рдХрд┐ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдирд┐рдГрд╕рдВрджреЗрд╣, рдпрд╣ рднрд╛рд╖рд╛ рдХреА рдПрдХ рдореБрдЦреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рдмрдЬрд╛рдп рдПрдХ рдорд╛рдореВрд▓реА рд╡рд┐рд╡рд░рдг рдмрди рдЬрд╛рдПрдЧрд╛ред рдЬреИрд╕реЗ, рдпрд╣ рднрд╛рд╖рд╛ рдореЗрдВ рдЬрдЯрд┐рд▓рддрд╛ рдЬреЛрдбрд╝рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреА рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрдкрдпреЛрдЧ рдЖрд╡реГрддреНрддрд┐ рдХреЗ рдЕрдиреБрдкрд╛рдд рдореЗрдВ рдЯреВрд▓рд┐рдВрдЧ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдЕрдзрд┐рдХ рд╕рддрд╣ рдХреНрд╖реЗрддреНрд░ рднреА рдЬреЛрдбрд╝рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЕрдирдЬрд╛рдиреЗ рдореЗрдВ рднрд╛рд╖рд╛ рдХрд╛ рджреБрд░реБрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рдХрд╛рд░рдг рд╕реЗ, рдЕрддреНрдпрдзрд┐рдХ рд╕рддрд░реНрдХ рд░рд╣рдирд╛ рдПрдХ рдЕрдЪреНрдЫреА рдмрд╛рдд рд╣реИ, рдФрд░ рдореБрдЭреЗ рдЦреБрд╢реА рд╣реИ рдХрд┐ рдЕрдм рддрдХ рдХрд╛рдлреА рдЪрд░реНрдЪрд╛ рд╣реБрдИ рд╣реИред

@Merovius : рдореЗрд░реА рдкреЛрд╕реНрдЯ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИ! рдореБрдЭреЗ рд▓рдЧрд╛ рдХрд┐ рдХреЛрдИ рдкрдврд╝ рдирд╣реАрдВ рд░рд╣рд╛ рд╣реИред рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ рдЗрд╕ рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ, рдореИрдВрдиреЗ рдХреБрдЫ рд╕рдВрджреЗрд╣ рд╡реНрдпрдХреНрдд рдХрд┐рдпрд╛ рдХрд┐ рдЗрд╕ рднрд╛рд╖рд╛ рдкрд░рд┐рд╡рд░реНрддрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрдм рдкрд╣рд▓реЗ рд╕реЗ рд╣реА gorename рдЯреВрд▓ рдЬреИрд╕реЗ рдЙрдкрдХрд░рдг рдореМрдЬреВрдж рд╣реЛрдВред

@ jcao219 рдЗрд╕ рдкрд░ рдкрд╣рд▓реЗ рднреА рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛ рдЪреБрдХреА рд╣реИ, рд▓реЗрдХрд┐рди рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рд░реВрдк рд╕реЗ, рдореБрдЭреЗ рдпрд╣ рдЬрд▓реНрджреА рд╕реЗ рдпрд╣рд╛рдБ рдирд╣реАрдВ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рдЙрдкрдирд╛рдо #16339 рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рдЧреЛрд▓рдВрдЧ-рдирдЯреНрд╕ рдереНрд░реЗрдбреНрд╕ рдХреЗ рд▓рд┐рдП рдореВрд▓ рдереНрд░реЗрдб рдореЗрдВ рдЗрд╕рдХреА рд▓рдВрдмрд╛рдИ рдкрд░ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рд╣реИред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ: рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреА рдЯреВрд▓реАрдВрдЧ рдХреЗрд╡рд▓ рдпрд╣ рдмрддрд╛рддреА рд╣реИ рдХрд┐ рд░рд┐рдкреЗрдпрд░рд┐рдВрдЧ рдХрдорд┐рдЯреНрд╕ рдХреЛ рдХреИрд╕реЗ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рдП, рди рдХрд┐ рдмреНрд░реЗрдХреЗрдЬ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдХреИрд╕реЗ рдЕрдиреБрдХреНрд░рдорд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПред рдХреНрдпрд╛ рдкрд░рд┐рд╡рд░реНрддрди рдХрд┐рд╕реА рдЙрдкрдХрд░рдг рджреНрд╡рд╛рд░рд╛ рдХрд┐рдП рдЧрдП рд╣реИрдВ рдпрд╛ рдорд╛рдирд╡ рджреНрд╡рд╛рд░рд╛ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рд╣реАрди рд╣реИ, рдХрд┐ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдРрд╕рд╛ рдХреЛрдИ рдХреНрд░рдо рдирд╣реАрдВ рд╣реИ рдЬреЛ рдХреБрдЫ рдХреЛрдб рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдХреЛ рдирд╣реАрдВ рддреЛрдбрд╝реЗрдЧрд╛ (рдЗрд╕ рдореБрджреНрджреЗ рдХреА рдореВрд▓ рдЯрд┐рдкреНрдкрдгреА рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЗрд╕ рдХрдерди рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рд╕рд╣реА рдард╣рд░рд╛рддреЗ рд╣реИрдВ -рдЧрд╣рд░рд╛рдИ)ред

рдЕрдзрд┐рдХ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдЯреВрд▓рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЧреЛ рдЯреВрд▓ рдпрд╛ рдЗрд╕реА рддрд░рд╣ рд╕реЗ рдПрдХреАрдХреГрдд), рдореВрд▓ рдЯрд┐рдкреНрдкрдгреА рд╢реАрд░реНрд╖рдХ рдХреЗ рддрд╣рдд рдЗрд╕реЗ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рддреА рд╣реИ "рдХреНрдпрд╛ рдпрд╣ рдПрдХ рдЯреВрд▓рд┐рдВрдЧ- рдпрд╛ рдХрдВрдкрд╛рдЗрд▓рд░-рдХреЗрд╡рд▓ рднрд╛рд╖рд╛ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдмрдЬрд╛рдп рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ?"ред

рдЕрдВрдд рдореЗрдВ, рдорд╛рди рд▓реЗрдВ рдХрд┐ рдкрд░рд┐рд╡рд░реНрддрди рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдирд┐рдГрд╕рдВрджреЗрд╣, рдпрд╣ рднрд╛рд╖рд╛ рдХреА рдПрдХ рдореБрдЦреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рдмрдЬрд╛рдп рдПрдХ рдорд╛рдореВрд▓реА рд╡рд┐рд╡рд░рдг рдмрди рдЬрд╛рдПрдЧрд╛ред

рдореИрдВ рд╕рдВрджреЗрд╣ рд╡реНрдпрдХреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред :) рдореИрдВ рдЗрд╕реЗ рдПрдХ рдкреВрд░реНрд╡ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд╣реАрдВ рдорд╛рдирддрд╛ред

@рдореЗрд░реЛрд╡рд┐рдпрд╕

рдореИрдВ рд╕рдВрджреЗрд╣ рд╡реНрдпрдХреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред :) рдореИрдВ рдЗрд╕реЗ рдПрдХ рдкреВрд░реНрд╡ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд╣реАрдВ рдорд╛рдирддрд╛ред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореЗрд░рд╛ рдорддрд▓рдм рдерд╛ рдХрд┐ рдЬреЛ рд▓реЛрдЧ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рд╡реЗ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдмрд╣реБрдд рд╕реЗ рдЖрд╢реНрд░рд┐рдд рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЗ рд╕рд╛рде рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЧреЛ рдкреИрдХреЗрдЬ рдХреЗ рдЕрдиреБрд░рдХреНрд╖рдХ рд╣реЛрдВрдЧреЗред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдпрд╣ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЛ рд▓рд╛рднрд╛рдиреНрд╡рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЧреЛ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рд╣реИрдВред рд╕рд╛рде рд╣реА, рдпрд╣ рдирдП рдЧреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХреЛ рдХрдо рдкрдардиреАрдп рдмрдирд╛рдиреЗ рдХрд╛ рдПрдХ рдЖрдХрд░реНрд╖рдХ рддрд░реАрдХрд╛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реИред рдЕрдкрд╡рд╛рдж рд▓рдВрдмреЗ рдирд╛рдореЛрдВ рдХрд╛ рдирд╛рдо рдмрджрд▓рдиреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкреНрд░рд╛рдХреГрддрд┐рдХ рдЧреЛ рдкреНрд░рдХрд╛рд░ рдХреЗ рдирд╛рдо рдЖрдорддреМрд░ рдкрд░ рдмрд╣реБрдд рд▓рдВрдмреЗ рдпрд╛ рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред

рдЬрд┐рд╕ рддрд░рд╣ рдбреЙрдЯ рдЗрдВрдкреЛрд░реНрдЯ рдлреАрдЪрд░ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓реНрд╕ рдФрд░ рдбреЙрдХреНрд╕ рдХреЗ рд▓рд┐рдП рдпрд╣ рд╕рдордЭрджрд╛рд░реА рд╣реЛрдЧреА рдХрд┐ рд╡реЗ рдЙрдкрдпреЛрдЧ рджрд┐рд╢рд╛рдирд┐рд░реНрджреЗрд╢реЛрдВ рдкрд░ рдПрдХ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдХреЗ рд╕рд╛рде рдЗрд╕ рдлреАрдЪрд░ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░реЗрдВред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ github.com/gonum/graph/simple".DirectedGraph " , рдФрд░ рдореИрдВ рдХреЗ рд╕рд╛рде рдЙрд░реНрдл рдпрд╣ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ digraph рдЯрд╛рдЗрдкрд┐рдВрдЧ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП simple.DirectedGraph , рдХрд┐ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдЙрджрд╛рд╣рд░рдг? рдпрд╛ рдХреНрдпрд╛ рдЗрд╕ рддрд░рд╣ рдХреЗ рдирд╛рдордХрд░рдг рдХреЛ рдкреНрд░реЛрдЯреЛрдмрдл рдЬреИрд╕реА рдЪреАрдЬреЛрдВ рд╕реЗ рдЙрддреНрдкрдиреНрди рдЕрдиреБрдЪрд┐рдд рд░реВрдк рд╕реЗ рд▓рдВрдмреЗ рдирд╛рдореЛрдВ рддрдХ рд╕реАрдорд┐рдд рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП?

@ jcao219 , рдЗрд╕ рдкреГрд╖реНрда рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд╛ рд╕рд╛рд░рд╛рдВрд╢ рдЖрдкрдХреЗ рдкреНрд░рд╢реНрдиреЛрдВ рдХрд╛ рдЙрддреНрддрд░ рджреЗрддрд╛ рд╣реИред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдЗрди рдЕрдиреБрднрд╛рдЧреЛрдВ рдХреЛ рджреЗрдЦреЗрдВ:

  • рдХреНрдпрд╛ рдпрд╣ рднрд╛рд╖рд╛ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдмрдЬрд╛рдп рдЯреВрд▓рд┐рдВрдЧ- рдпрд╛ рдХрдВрдкрд╛рдЗрд▓рд░-рдХреЗрд╡рд▓ рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ?
  • рдЙрдкрдирд╛рдореЛрдВ рдХреЗ рдФрд░ рдХреНрдпрд╛ рдЙрдкрдпреЛрдЧ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ?
  • рдкреНрд░рддрд┐рдмрдВрдз (рдЙрд╕ рдЦрдВрдб рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рд╕рд╛рдорд╛рдиреНрдп рдиреЛрдЯ)

рдЧреЛ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮреЛрдВ рдмрдирд╛рдо рдирдП рдЧреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдкрдХреЗ рдЕрдзрд┐рдХ рд╕рд╛рдорд╛рдиреНрдп рдмрд┐рдВрджреБ рдХреЗ рд▓рд┐рдП, рдЧреЛ рдХрд╛ рдПрдХ рд╕реНрдкрд╖реНрдЯ рд▓рдХреНрд╖реНрдп рдмрдбрд╝реЗ рдХреЛрдбрдмреЗрд╕ рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд░рдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рдирд╛ рд╣реИред рдЪрд╛рд╣реЗ рдЖрдк рдПрдХ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рд╣реЛрдВ, рдЖрдк рдЬрд┐рд╕ рдХреЛрдбрдмреЗрд╕ рдореЗрдВ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЙрд╕рдХреЗ рдЖрдХрд╛рд░ рд╕реЗ рдХреБрдЫ рд╣рдж рддрдХ рдЕрд╕рдВрдмрдВрдзрд┐рдд рд╣реИред (рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдХрд┐рд╕реА рдирдП рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рд╢реБрд░реБрдЖрдд рдХрд░ рд░рд╣реЗ рд╣реЛрдВ рдЬрд┐рд╕реЗ рдХрд┐рд╕реА рдФрд░ рдиреЗ рд╢реБрд░реВ рдХрд┐рдпрд╛ рд╣реЛред рдЖрдкрдХреЛ рдЕрднреА рднреА рдЗрд╕ рддрд░рд╣ рдХрд╛ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред)

рдареАрдХ рд╣реИ, рдпрд╣рд╛рдВ рдПрдХрдордд/рд╢рд╛рдВрддрд┐ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдореИрдВ (рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдкрд┐рдЫрд▓реЗ рд╕рдкреНрддрд╛рд╣ https://github.com/golang/go/issues/18130#issuecomment-268614964 рдореЗрдВ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рдерд╛) рдЗрд╕ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЛ рдЕрдиреБрдореЛрджрд┐рдд рдХрд░ рджреВрдВрдЧрд╛ рдФрд░ рдПрдХ dev.typealias рд╢рд╛рдЦрд╛ рдмрдирд╛рдКрдВрдЧрд╛ред .

рдЙрддреНрдХреГрд╖реНрдЯ рд╕рд╛рд░рд╛рдВрд╢ рдореЗрдВ рдПрдХ рдЦрдВрдб рд╣реИ "рдкреНрд░рдХрд╛рд░ рдХреЗ рдЙрдкрдирд╛рдореЛрдВ рдХреЗ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЛ рдХрд┐рди рдЕрдиреНрдп рдореБрджреНрджреЛрдВ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ?" рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЛ рд╕реНрд╡реАрдХреГрдд рдШреЛрд╖рд┐рдд рдХрд┐рдП рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж рдЙрди рдореБрджреНрджреЛрдВ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреА рдХреНрдпрд╛ рдпреЛрдЬрдирд╛ рд╣реИ?

CL https://golang.org/cl/34986 рдореЗрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рд╣реИред

CL https://golang.org/cl/34987 рдореЗрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рд╣реИред

CL https://golang.org/cl/34988 рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рддрд╛ рд╣реИред

@ulikunitz рдореБрджреНрджреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдХрд░реЗрдВ ( рдбрд┐рдЬрд╛рдЗрди рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╕реЗ рдпреЗ рд╕рднреА рдЙрджреНрдзрд░рдг 'рдЯрд╛рдЗрдк рдЯреА 1 = рдЯреА 2' рдорд╛рдирддреЗ рд╣реИрдВ):

  1. рдЧреЛрдбреЛрдХ рдореЗрдВ рд╣реИрдВрдбрд▓рд┐рдВрдЧред рдбрд┐рдЬрд╝рд╛рдЗрди рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЧреЛрдбреЛрдХ рдореЗрдВ рдиреНрдпреВрдирддрдо рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЖ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж рд╣рдо рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рд╣рд╛рдпрддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред рд╢рд╛рдпрдж, рд▓реЗрдХрд┐рди рд╢рд╛рдпрдж рдирд╣реАрдВред
  2. рдХреНрдпрд╛ рдЙрдкрдирд╛рдореЛрдВ рджреНрд╡рд╛рд░рд╛ рдирд╛рдорд┐рдд рдкреНрд░рдХрд╛рд░реЛрдВ рдкрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ? рд╣рд╛рдВред рдбрд┐рдЬрд╝рд╛рдЗрди рджрд╕реНрддрд╛рд╡реЗрдЬрд╝: "рдЪреВрдВрдХрд┐ рдЯреА 1 рдЯреА 2 рд▓рд┐рдЦрдиреЗ рдХрд╛ рдПрдХ рдФрд░ рддрд░реАрдХрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдкрд╛рд╕ рд╡рд┐рдзрд┐ рдШреЛрд╖рдгрд╛рдУрдВ рдХрд╛ рдЕрдкрдирд╛ рд╕реЗрдЯ рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдЯреА 1 рдХрд╛ рд╡рд┐рдзрд┐ рд╕реЗрдЯ рдЯреА 2 рдХреЗ рд╕рдорд╛рди рд╣реИред рдХрдо рд╕реЗ рдХрдо рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП, рд╡рд┐рдзрд┐ рдШреЛрд╖рдгрд╛рдУрдВ рдХреЗ рдЦрд┐рд▓рд╛рдл рдХреЛрдИ рдкреНрд░рддрд┐рдмрдВрдз рдирд╣реАрдВ рд╣реИ T1 рдХреЛ рдПрдХ рд░рд┐рд╕реАрд╡рд░ рдкреНрд░рдХрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛, рдмрд╢рд░реНрддреЗ рдЙрд╕реА рдШреЛрд╖рдгрд╛ рдореЗрдВ T2 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдорд╛рдиреНрдп рд╣реЛрдЧрд╛ред"
  3. рдпрджрд┐ рдЙрдкрдирд╛рдореЛрдВ рд╕реЗ рдЙрдкрдирд╛рдореЛрдВ рдХреА рдЕрдиреБрдорддрд┐ рд╣реИ, рддреЛ рд╣рдо рдЙрдкрдирд╛рдо рдЪрдХреНрд░реЛрдВ рдХреЛ рдХреИрд╕реЗ рд╕рдВрднрд╛рд▓реЗрдВрдЧреЗ? рдХреЛрдИ рдЪрдХреНрд░ рдирд╣реАрдВред рдбрд┐рдЬрд╝рд╛рдЗрди рджрд╕реНрддрд╛рд╡реЗрдЬрд╝: "рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЙрдкрдирд╛рдо рдШреЛрд╖рдгрд╛ рдореЗрдВ, рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреА рдШреЛрд╖рдгрд╛ рдХреЗ рд╡рд┐рдкрд░реАрдд, T2 рдХреЛ рдХрднреА рднреА, рдкреНрд░рддреНрдпрдХреНрд╖ рдпрд╛ рдкрд░реЛрдХреНрд╖ рд░реВрдк рд╕реЗ, T1 рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред"
  4. рдХреНрдпрд╛ рдЙрдкрдирд╛рдо рдирд┐рд░реНрдпрд╛рдд рди рдХрд┐рдП рдЧрдП рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛рдУрдВ рдХреЛ рдирд┐рд░реНрдпрд╛рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП? рд╣рд╛рдВред рдбрд┐рдЬрд╝рд╛рдЗрди рджрд╕реНрддрд╛рд╡реЗрдЬрд╝: "T2 рдХреЗ рд░реВрдк рдкрд░ рдХреЛрдИ рдкреНрд░рддрд┐рдмрдВрдз рдирд╣реАрдВ рд╣реИ: рдпрд╣ рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдЕрдиреНрдп рдкреИрдХреЗрдЬреЛрдВ рд╕реЗ рдЖрдпрд╛рдд рдХрд┐рдП рдЧрдП рдкреНрд░рдХрд╛рд░реЛрдВ рддрдХ рд╕реАрдорд┐рдд рдирд╣реАрдВ рд╣реИред"
  5. рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдЖрдк рдПрдХ рдЙрдкрдирд╛рдо рдПрдореНрдмреЗрдб рдХрд░рддреЗ рд╣реИрдВ (рдЖрдк рдПрдореНрдмреЗрдбреЗрдб рдлрд╝реАрд▓реНрдб рддрдХ рдХреИрд╕реЗ рдкрд╣реБрдБрдЪрддреЗ рд╣реИрдВ)? рдирд╛рдо рдЙрдкрдирд╛рдо (рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рджреГрд╢реНрдпрдорд╛рди рдирд╛рдо) рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдбрд┐рдЬрд╝рд╛рдЗрди рджрд╕реНрддрд╛рд╡реЗрдЬрд╝: https://golang.org/design/18130-type-alias#effect -on-embeddingред
  6. рдХреНрдпрд╛ рдЙрдкрдирд╛рдо рдирд┐рд░реНрдорд┐рдд рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рдкреНрд░рддреАрдХреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИрдВ? рдирд╣реАрдВред рдбрд┐рдЬрд╝рд╛рдЗрди рджрд╕реНрддрд╛рд╡реЗрдЬрд╝: "рдЯрд╛рдЗрдк рдЙрдкрдирд╛рдо рдЕрдзрд┐рдХрддрд░ рд░рдирдЯрд╛рдЗрдо рдкрд░ рдЕрджреГрд╢реНрдп рд╣реЛрддреЗ рд╣реИрдВред" (рдЗрд╕рд╕реЗ рдЙрддреНрддрд░ рдорд┐рд▓рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдирд╣реАрдВ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред)
  7. Ldflags рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЗрдВрдЬреЗрдХреНрд╢рди: рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рд╣рдо рдПрдХ рдЙрдкрдирд╛рдо рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рддреЗ рд╣реИрдВ? рдХреЛрдИ рд╡рд░ рдЙрдкрдирд╛рдо рдирд╣реАрдВ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдЙрддреНрдкрдиреНрди рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред

CL https://golang.org/cl/35091 рдореЗрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рд╣реИред

CL https://golang.org/cl/35092 рдореЗрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рд╣реИред

CL https://golang.org/cl/35093 рдореЗрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рд╣реИред

@rsc рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рджред

рдЪрд▓реЛ рдорд╛рди рд▓реЛ:

package a

import "b"

type T1 = b.T2

рдЬрд╣рд╛рдБ рддрдХ рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдБ рдХрд┐ T1 b.T2 рдХреЗ рд╕рдорд╛рди рдЕрдирд┐рд╡рд╛рд░реНрдп рд╣реИ рдФрд░ рдЗрд╕рд▓рд┐рдП рдпрд╣ рдПрдХ рдЧреИрд░-рд╕реНрдерд╛рдиреАрдп рдкреНрд░рдХрд╛рд░ рд╣реИ рдФрд░ рдХрд┐рд╕реА рднреА рдирдП рддрд░реАрдХреЗ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ T1 рдХреЛ рдкреИрдХреЗрдЬ a рдореЗрдВ рдлрд┐рд░ рд╕реЗ рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХреНрдпрд╛ рдпрд╣ рд╕рд╣реА рд╡реНрдпрд╛рдЦреНрдпрд╛ рд╣реИ?

@ulikunitz рдЬреЛ рд╕рд╣реА рд╣реИ

T1 рдареАрдХ рдЙрд╕реА рдкреНрд░рдХрд╛рд░ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдЬреИрд╕реЗ b.T2ред рдпрд╣ рдмрд╕ рдПрдХ рдЕрд▓рдЧ рдирд╛рдо рд╣реИред рдХреБрдЫ рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ, рдпрд╣ рдХреЗрд╡рд▓ рдЙрд╕рдХреЗ рдирд╛рдо рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реЛрддрд╛ рд╣реИ (рдЗрд╕рдХрд╛ рдЙрд╕ рдкреНрд░рдХрд╛рд░ рд╕реЗ рдХреЛрдИ рд▓реЗрдирд╛-рджреЗрдирд╛ рдирд╣реАрдВ рд╣реИ рдЬреЛ рдЗрд╕реЗ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ)ред

@griesemer рдХреЗ рдЙрддреНрддрд░ рдХреЛ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП: рд╣рд╛рдБ, T1 рдХреЛ рдкреИрдХреЗрдЬ a рд╕реЗ рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ T1 рд╣реИ, t1 рдирд╣реАрдВ)ред

CL https://golang.org/cl/35099 рдореЗрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рд╣реИред

CL https://golang.org/cl/35100 рдореЗрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рд╣реИред

CL https://golang.org/cl/35101 рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рддрд╛ рд╣реИред

CL https://golang.org/cl/35102 рдореЗрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рд╣реИред

CL https://golang.org/cl/35104 рдореЗрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рд╣реИред

CL https://golang.org/cl/35106 рдореЗрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рд╣реИред

CL https://golang.org/cl/35108 рдореЗрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рд╣реИред

CL https://golang.org/cl/35120 рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рддрд╛ рд╣реИред

CL https://golang.org/cl/35121 рдореЗрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рд╣реИред

CL https://golang.org/cl/35129 рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рддрд╛ рд╣реИред

CL https://golang.org/cl/35191 рдореЗрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рд╣реИред

CL https://golang.org/cl/35233 рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рддрд╛ рд╣реИред

CL https://golang.org/cl/35268 рдореЗрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рд╣реИред

CL https://golang.org/cl/35269 рдореЗрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рд╣реИред

CL https://golang.org/cl/35670 рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рддрд╛ рд╣реИред

CL https://golang.org/cl/35671 рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рддрд╛ рд╣реИред

CL https://golang.org/cl/5575 рдореЗрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рд╣реИред

CL https://golang.org/cl/35732 рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рддрд╛ рд╣реИред

CL https://golang.org/cl/35733 рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рддрд╛ рд╣реИред

CL https://golang.org/cl/35831 рдореЗрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рд╣реИред

CL https://golang.org/cl/36014 рдореЗрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рд╣реИред

рдпрд╣ рдЕрдм рдорд╛рд╕реНрдЯрд░ рдореЗрдВ рд╣реИ, рдЧреЛ 1.9 рдЦреЛрд▓рдиреЗ рд╕реЗ рдкрд╣рд▓реЗред рдХреГрдкрдпрд╛ рдмреЗрдЭрд┐рдЭрдХ рдорд╛рд╕реНрдЯрд░ рдкрд░ рд╕рд┐рдВрдХ рдХрд░реЗрдВ рдФрд░ рдЪреАрдЬреЛрдВ рдХреЛ рдЖрдЬрдорд╛рдПрдВред рдзрдиреНрдпрд╡рд╛рджред

#18893 . рд╕реЗ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд

package main

import (
        "fmt"
        "q"
)

func main() {
        var a q.A
        var b q.B // i'm a named unnamed type !!!

        fmt.Printf("%T\t%T\n", a, b)
}

рдЖрдкрдиреЗ рдХреНрдпрд╛ рджреЗрдЦрдиреЗ рдХреА рдЙрдореНрдореАрдж рдХреА рдереА?

deadwood(~/src) % go run main.go
q.A     q.B

рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЖрдкрдиреЗ рдХреНрдпрд╛ рджреЗрдЦрд╛?

deadwood(~/src) % go run main.go
q.A     []int

рд╡рд┐рдЪрд╛рд░ - рд╡рд┐рдорд░реНрд╢

рдЙрдкрдирд╛рдо рдЕрдирд╛рдо рдкреНрд░рдХрд╛рд░ рдкрд░ рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдПред рдПрдХ рдЕрдЬреНрдЮрд╛рдд рдкреНрд░рдХрд╛рд░ рд╕реЗ рджреВрд╕рд░реЗ рдореЗрдВ рдЬрд╛рдиреЗ рдореЗрдВ рдЙрдирдХреА рдХреЛрдИ "рдХреЛрдб рдорд░рдореНрдордд" рдХрд╣рд╛рдиреА рдирд╣реАрдВ рд╣реИред рдЕрдирд╛рдо рдкреНрд░рдХрд╛рд░реЛрдВ рдкрд░ рдЙрдкрдирд╛рдореЛрдВ рдХреЛ рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдореИрдВ рдЕрдм рдХреЗрд╡рд▓ рдирд╛рдо рдФрд░ рдЕрдирд╛рдо рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд╛рдирд╛ рдирд╣реАрдВ рд╕рд┐рдЦрд╛ рд╕рдХрддрд╛ред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдореБрдЭреЗ рдХрд╣рдирд╛ рд╣реЛрдЧрд╛

рдУрд╣, рдЬрдм рддрдХ рдХрд┐ рдпрд╣ рдПрдХ рдЙрдкрдирд╛рдо рди рд╣реЛ, рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЖрдкрдХреЛ рдпрд╣ рдпрд╛рдж рд░рдЦрдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдпрд╣ рдПрдХ рдЕрдирд╛рдо рдкреНрд░рдХрд╛рд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рддрдм рднреА рдЬрдм рдЖрдк рдХрд┐рд╕реА рдЕрдиреНрдп рдкреИрдХреЗрдЬ рд╕реЗ рдЖрдпрд╛рдд рдХрд░рддреЗ рд╣реИрдВред

рдФрд░ рдЗрд╕рд╕реЗ рднреА рдмрджрддрд░, рдпрд╣ рд▓реЛрдЧреЛрдВ рдХреЛ рдкрдардиреАрдпрддрд╛ рд╡рд┐рд░реЛрдзреА рдкреИрдЯрд░реНрди рдЬреИрд╕реЗ

type Any = interface{}

рдХреГрдкрдпрд╛ рдЕрдирд╛рдо рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рдЙрдкрдирд╛рдорд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рди рджреЗрдВред

@davecheney

рдПрдХ рдЕрдирд╛рдо рдкреНрд░рдХрд╛рд░ рд╕реЗ рджреВрд╕рд░реЗ рдореЗрдВ рдЬрд╛рдиреЗ рдореЗрдВ рдХреЛрдИ "рдХреЛрдб рдорд░рдореНрдордд" рдХрд╣рд╛рдиреА рдирд╣реАрдВ рд╣реИред

рд╕рдЪ рдирд╣реАрдВред рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рд╡рд┐рдзрд┐ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдХрд┐рд╕реА рдирд╛рдорд┐рдд рд╕реЗ рдЕрдирд╛рдо рдкреНрд░рдХрд╛рд░ рдореЗрдВ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдпрд╛ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд? рдЪрд░рдг 1 рдЙрдкрдирд╛рдо рдЬреЛрдбрд╝рдирд╛ рд╣реИ; рдЪрд░рдг 2 рдЙрди рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рдЕрджреНрдпрддрди рдХрд░рдирд╛ рд╣реИ рдЬреЛ рдирдП рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрд╕ рдкрджреНрдзрддрд┐ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ; рдЪрд░рдг 3 рдЙрдкрдирд╛рдо рдХреЛ рд╣рдЯрд╛рдирд╛ рд╣реИред

(рдпрд╣ рд╕рдЪ рд╣реИ рдХрд┐ рдЖрдЬ рдЖрдк рд╡рд┐рдзрд┐ рдХрд╛ рджреЛ рдмрд╛рд░ рдирд╛рдо рдмрджрд▓рдХрд░ рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рджреЛрд╣рд░рд╛-рдирд╛рдо рдмрджрд▓рдирд╛ рд╕рдмрд╕реЗ рдХрдард┐рди рд╣реИред)

рдФрд░ рдЗрд╕рд╕реЗ рднреА рдмрджрддрд░, рдпрд╣ рд▓реЛрдЧреЛрдВ рдХреЛ рдкрдардиреАрдпрддрд╛ рд╡рд┐рд░реЛрдзреА рдкреИрдЯрд░реНрди рдЬреИрд╕реЗ
type Any = interface{}

рд▓реЛрдЧ рдЖрдЬ рд╣реА type Any interface{} рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЙрдкрдирд╛рдо рдХреНрдпрд╛ рдЕрддрд┐рд░рд┐рдХреНрдд рдиреБрдХрд╕рд╛рди рдкрд╣реБрдВрдЪрд╛рддреЗ рд╣реИрдВ?

рд▓реЛрдЧ рдЖрдЬ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХреЛрдИ рднреА рдЗрдВрдЯрд░рдлрд╝реЗрд╕ {} рдЯрд╛рдЗрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЙрдкрдирд╛рдо рдХреНрдпрд╛ рдЕрддрд┐рд░рд┐рдХреНрдд рдиреБрдХрд╕рд╛рди рдкрд╣реБрдВрдЪрд╛рддреЗ рд╣реИрдВ?

рдореИрдВрдиреЗ рдЗрд╕реЗ рдПрдХ рд╡рд┐рд░реЛрдзреА рдкреИрдЯрд░реНрди рдХрд╣рд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдареАрдХ рдпрд╣реА рд╣реИред type Any interface{} , рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╡реНрдпрдХреНрддрд┐ _writing_ рдХреЛрдб рдХреБрдЫ рдЫреЛрдЯрд╛ рдЯрд╛рдЗрдк рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдЙрдирдХреЗ рд▓рд┐рдП рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред

рджреВрд╕рд░реА рдУрд░, _all_ рдкрд╛рдардХ, рдЬреЛ рдЧреЛ рдХреЛрдб рдкрдврд╝рдиреЗ рдореЗрдВ рдЕрдиреБрднрд╡реА рд╣реИрдВ рдФрд░ interface{} рдХреЛ рд╕рд╣рдЬ рд░реВрдк рд╕реЗ рдПрдХ рджрд░реНрдкрдг рдореЗрдВ рдЙрдирдХреЗ рдЪреЗрд╣рд░реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╣рдЪрд╛рдирддреЗ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ Any рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд╕реАрдЦрдирд╛ рдФрд░ рдлрд┐рд░ рд╕реЗ рд╕реАрдЦрдирд╛ рд╣реЛрдЧрд╛ред , Object , T , рдФрд░ рдЙрдиреНрд╣реЗрдВ рдкреНрд░рддрд┐ рдкреИрдХреЗрдЬ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ type Any interface{} , type Any map[interface{}]interface{} , type Any struct{} рдЬреИрд╕реА рдЪреАрдЬреЛрдВ рд╕реЗ рдореИрдк рдХрд░реЗрдВред

рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЖрдк рд╕рд╣рдордд рд╣реИрдВ рдХрд┐ рд╕рд╛рдорд╛рдиреНрдп рдЧреЛ рдореБрд╣рд╛рд╡рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдкреИрдХреЗрдЬ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдирд╛рдо рдкрдардиреАрдпрддрд╛ рдХреЗ рд▓рд┐рдП рд╢реБрджреНрдз рдирдХрд╛рд░рд╛рддреНрдордХ рд╣реИрдВ?

рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЖрдк рд╕рд╣рдордд рд╣реИрдВ рдХрд┐ рд╕рд╛рдорд╛рдиреНрдп рдЧреЛ рдореБрд╣рд╛рд╡рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдкреИрдХреЗрдЬ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдирд╛рдо рдкрдардиреАрдпрддрд╛ рдХреЗ рд▓рд┐рдП рд╢реБрджреНрдз рдирдХрд╛рд░рд╛рддреНрдордХ рд╣реИрдВ?

рдореИрдВ рд╕рд╣рдордд рд╣реВрдВ, рд▓реЗрдХрд┐рди рдкреНрд░рд╢реНрди рдореЗрдВ рдЙрджрд╛рд╣рд░рдг рдХреЗ рдмрд╛рдж рд╕реЗ (рдЙрд╕ рдПрдВрдЯреАрдкреИрдЯрд░реНрди рдХреА рдЕрдм рддрдХ рдХреА рд╕рдмрд╕реЗ рдЖрдо рдШрдЯрдирд╛ рдЬреЛ рдореИрдВрдиреЗ рд╕рд╛рдордирд╛ рдХреА рд╣реИ) рдЙрдкрдирд╛рдо рдХреЗ рдмрд┐рдирд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдореБрдЭреЗ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛ рдХрд┐ рдпрд╣ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рдХрд╛рд░ рдЙрдкрдирд╛рдореЛрдВ рдХреЗ рдкреНрд░рд╕реНрддрд╛рд╡ рд╕реЗ рдХреИрд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИред

рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдПрдВрдЯреА-рдкреИрдЯрд░реНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдЙрдкрдирд╛рдореЛрдВ рдХреЗ рдмрд┐рдирд╛ рд╕рдВрднрд╡ рд╣реИ, рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдЗрд╕рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЧреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ рд╢рд┐рдХреНрд╖рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рднрд▓реЗ рд╣реА рдЕрдЬреНрдЮрд╛рдд рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рдЙрдкрдирд╛рдо рдореМрдЬреВрдж рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред

рдФрд░, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЯрд╛рдЗрдк рдЙрдкрдирд╛рдо рдХреЛрдбрдмреЗрд╕ рд╕реЗ рдЙрд╕ рдПрдВрдЯреАрдкреИрдЯрд░реНрди рдХреЗ _gradual remove_ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рд╣реИред

рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛:

package antipattern

type Any interface{}  // not an alias

type Widget interface{
  Frozzle(Any) error
}

func Bozzle(w Widget) error {
  тАж
}

рдЖрдЬ, antipattern.Bozzle рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдкрдиреЗ Widget рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ antipattern.Any рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдлрдВрд╕ рдЬрд╛рдПрдВрдЧреЗ, рдФрд░ рдХреНрд░рдорд┐рдХ рдорд░рдореНрдордд рдХреЗ рд╕рд╛рде antipattern.Any рдХреЛ рд╣рдЯрд╛рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдкреНрд░рдХрд╛рд░ рдХреЗ рдЙрдкрдирд╛рдореЛрдВ рдХреЗ рд╕рд╛рде, antipattern рдкреИрдХреЗрдЬ рдХрд╛ рд╕реНрд╡рд╛рдореА рдЗрд╕реЗ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ:

// Any is deprecated; please use interface{} directly.
type Any = interface{}

рдФрд░ рдЕрдм рдХреЙрд▓ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдзреАрд░реЗ-рдзреАрд░реЗ Any рд╕реЗ interface{} рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ antipattern рдореЗрдВрдЯреЗрдирд░ рдЕрдВрддрддрдГ рдЗрд╕реЗ рд╣рдЯрд╛ рд╕рдХрддрд╛ рд╣реИред

рдореЗрд░рд╛ рдХрд╣рдирд╛ рд╣реИ рдХрд┐ рдЕрдЬреНрдЮрд╛рдд рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рдЕрд▓рд┐рдпрд╛рд╕рд┐рдВрдЧ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдФрдЪрд┐рддреНрдп рдирд╣реАрдВ рд╣реИ
рдЗрд╕ рд╡рд┐рдХрд▓реНрдк рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рд╕реЗ рдХреА рдЕрдиреБрдкрдпреБрдХреНрддрддрд╛ рдХреЛ рд░реЗрдЦрд╛рдВрдХрд┐рдд рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рд╣реЗрдЧрд╛
рдЕрднреНрдпрд╛рд╕ред

рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЕрдирд╛рдо рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рдЕрд▓рд┐рдпрд╛рд╕рд┐рдВрдЧ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рд╕реЗ рдПрдХ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рджреЛ рд╕рдХреНрд╖рдо рд╣реЛрддреЗ рд╣реИрдВ
рдЗрд╕ рд╡рд┐рд░реЛрдзреА рдкреИрдЯрд░реНрди рдХреЗ рд░реВрдкред

рдЧреБрд░реБ, 2 рдлрд░рд╡рд░реА 2017, 16:34 рдХреЛ рдмреНрд░рд╛рдпрди рд╕реА. рдорд┐рд▓реНрд╕ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com рдиреЗ рд▓рд┐рдЦрд╛:

рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЖрдк рд╕рд╣рдордд рд╣реИрдВ рдХрд┐ рд╕рд╛рдорд╛рдиреНрдп рдЧреЛ рдореБрд╣рд╛рд╡рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдкреИрдХреЗрдЬ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдирд╛рдо рд╣реИрдВ
рдкрдардиреАрдпрддрд╛ рдХреЗ рд▓рд┐рдП рд╢реБрджреНрдз рдирдХрд╛рд░рд╛рддреНрдордХ?

рдореИрдВ рд╕рд╣рдордд рд╣реВрдВ, рд▓реЗрдХрд┐рди рдкреНрд░рд╢реНрди рдореЗрдВ рдЙрджрд╛рд╣рд░рдг рдХреЗ рдмрд╛рдж рд╕реЗ (рдЕрдм рддрдХ рдХрд╛ рд╕рдмрд╕реЗ рдЖрдо)
рдЙрд╕ рдПрдВрдЯреАрдкреИрдЯрд░реНрди рдХреА рдШрдЯрдирд╛ рдЬрд┐рд╕рдХрд╛ рдореИрдВрдиреЗ рд╕рд╛рдордирд╛ рдХрд┐рдпрд╛ рд╣реИ) рдмрд┐рдирд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
рдЙрдкрдирд╛рдо, рдореБрдЭреЗ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛ рдХрд┐ рдпрд╣ рдЙрджрд╛рд╣рд░рдг рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреНрд░рд╕реНрддрд╛рд╡ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ
рдЙрдкрдирд╛рдо рдЯрд╛рдЗрдк рдХрд░реЗрдВред

рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдПрдВрдЯреА-рдкреИрдЯрд░реНрди рдмрд┐рдирд╛ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЙрдкрдирд╛рдореЛрдВ рдХреЗ рд╕рдВрднрд╡ рд╣реИ, рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐
рд╣рдореЗрдВ рдЗрд╕рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЧреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ рд╢рд┐рдХреНрд╖рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рднрд▓реЗ рд╣реА
рдЕрдирд╛рдо рдкреНрд░рдХрд╛рд░ рдХреЗ рдЙрдкрдирд╛рдо рдореМрдЬреВрдж рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред

-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/golang/go/issues/18130#issuecomment-276872714 , рдпрд╛ рдореНрдпреВрдЯ рдХрд░реЗрдВ
рд╕реВрддреНрд░
https://github.com/notifications/unsubscribe-auth/AAAcA6BGrFjjTi7eW1BPp7o81XIekbGXks5rYWr-gaJpZM4LBBEL
.

@davecheney рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрднреА рддрдХ рдХреЛрдИ рд╕рдмреВрдд рд╣реИ рдХрд┐ рдПрдХ рдордирдорд╛рдирд╛ рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╢рд╛рдмреНрджрд┐рдХ рдирд╛рдо рджреЗрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рд╣рд╛рдирд┐рдХрд╛рд░рдХ рд╣реИред рдпрд╣ рднреА рдПрдХ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд "рдЖрд╢реНрдЪрд░реНрдп" рд╡рд┐рд╢реЗрд╖рддрд╛ рдирд╣реАрдВ рд╣реИ - рдбрд┐рдЬрд╛рдЗрди рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдЗрд╕рдХреА рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рд╣реИред рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдпрд╣ рд╣рдореЗрдВ рдХрд╣рд╛рдВ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИред

рдПрдХ рдкреНрд░рддрд┐-рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, рдРрд╕реЗ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдПрдкреАрдЖрдИ рд╣реИрдВ рдЬреЛ рдХреЗрд╡рд▓ рдЯрд╛рдЗрдк рд▓рд┐рдЯрд░рд▓реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдПрдкреАрдЖрдИ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рдХрд╛рд░ рддрдХ рд╕реАрдорд┐рдд рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП https://golang.org/pkg/go/types/#Info рджреЗрдЦреЗрдВ) ) рдЙрд╕ рд╕реНрдкрд╖реНрдЯ рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╢рд╛рдмреНрджрд┐рдХ рд╣реЛрдирд╛ рдЙрдкрдпреЛрдЧреА рджрд╕реНрддрд╛рд╡реЗрдЬ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдПрдХ рд╣реА рдкреНрд░рдХрд╛рд░ рдХреЗ рдЕрдХреНрд╖рд░ рдХреЛ рд╣рд░ рдЬрдЧрд╣ рджреЛрд╣рд░рд╛рдирд╛ рдХрд╛рдлреА рдХрд╖реНрдЯрдкреНрд░рдж рд╣реЛ рд╕рдХрддрд╛ рд╣реИ; рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкрдардиреАрдпрддрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╛рдзрд╛ рд╣реЛред map[int]struct{} w/o рдХреЗ рдмрдЬрд╛рдп IntSet рдмрд╛рд░реЗ рдореЗрдВ рдЖрд╕рд╛рдиреА рд╕реЗ рдмрд╛рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг рдЙрд╕рдореЗрдВ рд▓реЙрдХ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рдФрд░ рдХреЗрд╡рд▓ IntSet рдкрд░рд┐рднрд╛рд╖рд╛ рдореЗрд░реЗ рджрд┐рдорд╛рдЧ рдореЗрдВ рдПрдХ рдкреНрд▓рд╕ рд╣реИред рдпрд╣реАрдВ рдкрд░ type IntSet = map[int]struct{} рдмрд┐рд▓реНрдХреБрд▓ рд╕рд╣реА рд╣реИред

рдЕрдВрдд рдореЗрдВ, рдпрджрд┐ рдЖрдк рдЪреВрдХ рдЧрдП рд╣реИрдВ рддреЛ рдореИрдВ https://github.com/golang/go/issues/18130#issuecomment -268411811 рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред = рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реА рдЕрдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдкреНрд░рдХрд╛рд░ рдХреА рдШреЛрд╖рдгрд╛рдПрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ "рдкреНрд░рд╛рдердорд┐рдХ" рдкреНрд░рдХрд╛рд░ рдХреА рдШреЛрд╖рдгрд╛рдПрдВ рд╣реИрдВ, рдФрд░ рдореБрдЭреЗ рдЦреБрд╢реА рд╣реИ рдХрд┐ рд╣рдордиреЗ рдЕрдВрддрддрдГ рдЙрдиреНрд╣реЗрдВ рдЧреЛ рдореЗрдВ рд░рдЦрд╛ рд╣реИред

рд╢рд╛рдпрдж type intSet = map[int]struct{} (рдирд┐рд░реНрдпрд╛рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛) рдЕрдирд╛рдо рдкреНрд░рдХрд╛рд░ рдХреЗ рдЙрдкрдирд╛рдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдмреЗрд╣рддрд░ рддрд░реАрдХрд╛ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рд╕реАрдорд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп CodeReviewComments рдФрд░ рдЕрдиреБрд╢рдВрд╕рд┐рдд рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдкреНрд░рдерд╛рдУрдВ рдХреЗ рдбреЛрдореЗрди рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИред

рдЙрд╕ рдиреЗ рдХрд╣рд╛, %T рдбрд┐рдмрдЧрд┐рдВрдЧ рдпрд╛ рдЯрд╛рдЗрдк рд╕рд┐рд╕реНрдЯрдо рдХреА рдЦреЛрдЬ рдХрд░рддреЗ рд╕рдордп рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрд╕рд╛рди рдЯреВрд▓ рд╣реИред рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдПрдХ рд╕рдорд╛рди рдкреНрд░рд╛рд░реВрдк рдХреНрд░рд┐рдпрд╛ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП рдЬрд┐рд╕рдореЗрдВ рдЙрдкрдирд╛рдо рд╢рд╛рдорд┐рд▓ рд╣реЛ? q.B = []int @davecheney рдХреЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВред

@nathany рдЖрдк рдЙрд╕ рдХреНрд░рд┐рдпрд╛ рдХреЛ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ? рдЙрдкрдирд╛рдо рдЬрд╛рдирдХрд╛рд░реА рд░рдирдЯрд╛рдЗрдо рдкрд░ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИред (рдЬрд╣рд╛рдВ рддрдХ reflect рдкреИрдХреЗрдЬ рдХрд╛ рд╕рдВрдмрдВрдз рд╣реИ, рдЙрдкрдирд╛рдо _the рд╡рд╣реА type_ рд╣реИ рдЬрд┐рд╕ рдЪреАрдЬ рд╕реЗ рдЗрд╕реЗ рдЕрд▓рд┐рдпрд╛рд╕ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред)

@bcmills рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдХрд┐ рдРрд╕рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ ...

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕реНрдерд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЙрдкрдХрд░рдг рдФрд░ рд╕рдВрдкрд╛рджрдХ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдЕрднреА рднреА рдЙрдкрдирд╛рдо рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЪрд┐рддреНрд░ рдореЗрдВ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдареАрдХ рд╣реИред

2 рдлрд░рд╡рд░реА, 2017 рдХреЛ рд╢рд╛рдо 5:01 рдмрдЬреЗ, "рдирд╛рдерди рдпрдВрдЧрдореИрди" рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com рдиреЗ рд▓рд┐рдЦрд╛:

рдЙрд╕ рдиреЗ рдХрд╣рд╛, %T рдбрд┐рдмрдЧрд┐рдВрдЧ рдпрд╛ рдЦреЛрдЬ рдХрд░рддреЗ рд╕рдордп рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрд╕рд╛рди рдЙрдкрдХрд░рдг рд╣реИ
рдкреНрд░рдХрд╛рд░ рдкреНрд░рдгрд╛рд▓реАред рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдПрдХ рд╕рдорд╛рди рдкреНрд░рд╛рд░реВрдк рдХреНрд░рд┐рдпрд╛ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП рдХрд┐
рдЙрдкрдирд╛рдо рд╢рд╛рдорд┐рд▓ рд╣реИрдВ? qB = [] int in @davecheney
https://github.com/davecheney рдХрд╛ рдЙрджрд╛рд╣рд░рдгред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рдЙрддреНрддрд░ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЧреБрд░реБ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреНрд╡реЗрд░реА рдореЛрдб рдЬреЛрдбрд╝рдирд╛ рдПрдХ рдмреЗрд╣рддрд░ рдЙрдкрд╛рдп рд╣реИ
рдкреНрд░рд╢реНрди:

рдЬреЛ рдкреВрд░реЗ GOPATH (рдпрд╛ рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рдкреИрдХреЗрдЬ) рдореЗрдВ рдШреЛрд╖рд┐рдд рдЙрдкрдирд╛рдо рд╣реИрдВ
рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкрд░ рдпрд╣ рджрд┐рдпрд╛ рдЧрдпрд╛ рдкреНрд░рдХрд╛рд░?

рдореИрдВ рдЕрдЬреНрдЮрд╛рдд рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рдЕрд▓рд┐рдпрд╛рд╕рд┐рдВрдЧ рдХреЗ рджреБрд░реБрдкрдпреЛрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд┐рдд рдирд╣реАрдВ рд╣реВрдВ, рд▓реЗрдХрд┐рди рд╕рдВрднрд╛рд╡рд┐рдд
рдПрдХ рд╣реА рдЕрдирд╛рдо рдкреНрд░рдХрд╛рд░ рдХреЗ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдЙрдкрдирд╛рдоред

@davecheney рдореИрдВрдиреЗ рдЖрдкрдХреЗ рд╕реБрдЭрд╛рд╡ рдХреЛ рд╢реАрд░реНрд╖ рдкрд░ рдЪрд░реНрдЪрд╛ рд╕рд╛рд░рд╛рдВрд╢ рдХреЗ "рдкреНрд░рддрд┐рдмрдВрдз" рдЦрдВрдб рдореЗрдВ рдЬреЛрдбрд╝рд╛ рд╣реИред рд╕рднреА рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рдХреА рддрд░рд╣, рд╣рдорд╛рд░реА рд╕рд╛рдорд╛рдиреНрдп рд╕реНрдерд┐рддрд┐ рдпрд╣ рд╣реИ рдХрд┐ рдкреНрд░рддрд┐рдмрдВрдз рдЬрдЯрд┐рд▓рддрд╛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ (рдКрдкрд░ рдиреЛрдЯ рджреЗрдЦреЗрдВ) рдФрд░ рдкреНрд░рддрд┐рдмрдВрдз рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рд╡реНрдпрд╛рдкрдХ рдиреБрдХрд╕рд╛рди рдХреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреНрд░рдорд╛рдг рджреЗрдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЧреЛ рд╕рд┐рдЦрд╛рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЛ рдмрджрд▓рдирд╛ рд╣реА рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИ: рднрд╛рд╖рд╛ рдореЗрдВ рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдП рдЧрдП рдХрд┐рд╕реА рднреА рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЧреЛ рд╕рд┐рдЦрд╛рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред

рдЬреИрд╕рд╛ рдХрд┐ рдбрд┐рдЬрд╝рд╛рдЗрди рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдФрд░ рдореЗрд▓рд┐рдВрдЧ рд╕реВрдЪреА рдореЗрдВ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╣рдо рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рд╢рдмреНрджрд╛рд╡рд▓реА рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВред

@minux , рдЬреИрд╕реЗ @bcmills рдиреЗ рдмрддрд╛рдпрд╛, рдЙрдкрдирд╛рдо рдЬрд╛рдирдХрд╛рд░реА рд░рдирдЯрд╛рдЗрдо рдкрд░ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ (рдбрд┐рдЬрд╛рдЗрди рдХреЗ рд▓рд┐рдП рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдореМрд▓рд┐рдХ)ред "%T рдЬрд┐рд╕рдореЗрдВ рдЙрдкрдирд╛рдо рд╢рд╛рдорд┐рд▓ рд╣реИ" рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред

2 рдлрд░рд╡рд░реА, 2017 рдХреЛ рд░рд╛рдд 8:33 рдмрдЬреЗ, "рд░рд╕ рдХреЙрдХреНрд╕" рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com рдиреЗ рд▓рд┐рдЦрд╛:

@minux https://github.com/minux , рдЬреИрд╕реЗ @bcmills
https://github.com/bcmills рдиреЗ рдмрддрд╛рдпрд╛, рдЙрд░реНрдл тАЛтАЛрдЬрд╛рдирдХрд╛рд░реА рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ
рд░рдирдЯрд╛рдЗрдо рдкрд░ (рдбрд┐рдЬрд╛рдЗрди рдХреЗ рд▓рд┐рдП рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдореМрд▓рд┐рдХ)ред рдХреЛрдИ рд░рд╛рд╕реНрддрд╛ рдирд╣реАрдВ рд╣реИ
рдПрдХ "%T рд▓рд╛рдЧреВ рдХрд░реЗрдВ рдЬрд┐рд╕рдореЗрдВ рдЙрдкрдирд╛рдо рд╢рд╛рдорд┐рд▓ рд╣реИ"ред

рдореИрдВ рдПрдХ рдЧреЛ рдЧреБрд░реБ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗ рд░рд╣рд╛ рд╣реВрдВ (https://golang.org/x/tools/cmd/guru) рдХреНрд╡реЗрд░реА рдореЛрдб
рд░рд┐рд╡рд░реНрд╕ рдЙрд░реНрдл тАЛтАЛрдореИрдкрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП, рдЬреЛ рд╕реНрдерд┐рд░ рдХреЛрдб рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред рдпрд╣
рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рдЙрдкрдирд╛рдо рдЬрд╛рдирдХрд╛рд░реА рд░рдирдЯрд╛рдЗрдо рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИ рдпрд╛ рдирд╣реАрдВред

@minux , рдУрд╣, рдореИрдВ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдБ, рдЖрдк рдИрдореЗрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрддреНрддрд░ рджреЗ рд░рд╣реЗ рд╣реИрдВ рдФрд░ Github рдЙрджреНрдзреГрдд рдкрд╛рда рдХреЛ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдЦреЗ рдЧрдП рдкрд╛рда рдХреА рддрд░рд╣ рдмрдирд╛рддрд╛ рд╣реИред рдореИрдВ рдирд╛рдерди рдпрдВрдЧрдореИрди рд╕реЗ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЙрджреНрдзреГрдд рдкрд╛рда рдХрд╛ рдЙрддреНрддрд░ рджреЗ рд░рд╣рд╛ рдерд╛, рдпрд╣ рд╕реЛрдЪрдХрд░ рдХрд┐ рдпрд╣ рдЖрдкрдХрд╛ рд╣реИред рдЧрд▓рддрдлрд╣рдореА рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИред

рд╢рдмреНрджрд╛рд╡рд▓реА рдФрд░ рд╢рд┐рдХреНрд╖рдг рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ, рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рдмреНрд░рд╛рдВрдбреЗрдб рдкреНрд░рдХрд╛рд░ рдХреА рдкреГрд╖реНрдарднреВрдорд┐ @griesemer рдХрд╛рдлреА рдЬрд╛рдирдХрд╛рд░реАрдкреВрд░реНрдг рдкреЛрд╕реНрдЯ рдХреА рдЧрдИ рд╣реИред рдЙрд╕рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

рдкреНрд░рдХрд╛рд░ рдФрд░ рдкреНрд░рдХрд╛рд░ рдХреЗ рд░реВрдкрд╛рдВрддрд░рдгреЛрдВ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рддреЗ рд╕рдордп, рдмреЗрдмреА рдЧреЛрдлрд░ рд╢реБрд░реВ рдореЗрдВ рд╕реЛрдЪрддреЗ рд╣реИрдВ рдХрд┐ рдореИрдВ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЙрдкрдирд╛рдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд╕рдВрднрд╡рддрдГ рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдгред

рдЕрдВрддрд┐рдо рд╢рдмреНрджрд╛рд╡рд▓реА рдЬреЛ рднреА рд╣реЛ, рдореИрдВ рдирд╛рдорд┐рдд (рдмреНрд░рд╛рдВрдбреЗрдб) рдкреНрд░рдХрд╛рд░реЛрдВ рд╕реЗ рдкрд╣рд▓реЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЙрдкрдирд╛рдореЛрдВ рдХреЛ рдкреЗрд╢ рдХрд░рдиреЗ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░ рд╕рдХрддрд╛ рдерд╛, рдЦрд╛рд╕рдХрд░ рдЬрдм рд╕реЗ рдХрд┐рд╕реА рднреА рдкреБрд╕реНрддрдХ рдпрд╛ рдкрд╛рдареНрдпрдХреНрд░рдо рдореЗрдВ byte рдФрд░ rune рдХреЛ рдкреЗрд╢ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдирдП рдирд╛рдорд┐рдд рдкреНрд░рдХрд╛рд░реЛрдВ рдХреА рдШреЛрд╖рдгрд╛ рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореИрдВ рд╡рд┐рд░реЛрдзреА рдкреИрдЯрд░реНрди рдХреЛ рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП @davecheney рдХреА рдЪрд┐рдВрддрд╛ рд╕реЗ рд╕рд╛рд╡рдзрд╛рди рд░рд╣рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред

type intSet map[int]struct{} рд╣рдо рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ map[int]struct{} _underlying_ рдкреНрд░рдХрд╛рд░ рд╣реИред рд╣рдо type intSet = map[int]struct{} рджреЛрдиреЛрдВ рдУрд░ рдХреНрдпрд╛ рдХрд╣рддреЗ рд╣реИрдВ? рдЙрдкрдирд╛рдо рдФрд░ рдЙрдкрдирд╛рдо рдкреНрд░рдХрд╛рд░?

%T , рдореБрдЭреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдпрд╣ рд╕рдордЭрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ byte рдФрд░ rune рдкрд░рд┐рдгрд╛рдо uint8 рдФрд░ int32 , рдЗрд╕рд▓рд┐рдП рдпрд╣ рдирд╣реАрдВ рд╣реИ рд╡рд┐рднрд┐рдиреНрдиред

рдпрджрд┐ рдХреБрдЫ рднреА рд╣реЛ, рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЯрд╛рдЗрдк рдЙрдкрдирд╛рдо byte рдФрд░ rune рдХреЛ рд╕рдордЭрд╛рдиреЗ рдореЗрдВ рдЖрд╕рд╛рди рдмрдирд╛ рджреЗрдВрдЧреЗред рдЖрдИрдПрдордУ, рдЪреБрдиреМрддреА рдпрд╣ рдЬрд╛рди рд░рд╣реА рд╣реЛрдЧреА рдХрд┐ рдирд╛рдорд┐рдд рдкреНрд░рдХрд╛рд░ рдмрдирд╛рдо рдкреНрд░рдХрд╛рд░ рдЙрдкрдирд╛рдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрдм рдХрд░рдирд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдЙрд╕реЗ рд╕рдВрд╡рд╛рдж рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

@рдирд╛рдердиреА рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкрд╣рд▓реЗ "рдЙрдкрдирд╛рдо рдкреНрд░рдХрд╛рд░" рдкреЗрд╢ рдХрд░рдирд╛ рдмрд╣реБрдд рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ - рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рдЬрд░реВрд░реА рд╢рдмреНрдж рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ред рдирдИ рд╢реБрд░реВ рдХреА рдЧрдИ "рдЙрдкрдирд╛рдо" рдШреЛрд╖рдгрд╛рдПрдВ рдХреЗрд╡рд▓ рдирд┐рдпрдорд┐рдд рдШреЛрд╖рдгрд╛рдПрдВ рд╣реИрдВ рдЬреЛ рдХреБрдЫ рдЦрд╛рд╕ рдирд╣реАрдВ рдХрд░рддреА рд╣реИрдВред рдмрд╛рдИрдВ рдУрд░ рдХреЗ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдФрд░ рджрд╛рдИрдВ рдУрд░ рдХреЗ рдкреНрд░рдХрд╛рд░ рдПрдХ рд╣реА рд╣реИрдВ, рд╡реЗ рд╕рдорд╛рди рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рджрд░реНрд╢рд╛рддреЗ рд╣реИрдВред рдореБрдЭреЗ рдпрд╣ рднреА рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдЙрдкрдирд╛рдо рдпрд╛ рдЙрдкрдирд╛рдо рдкреНрд░рдХрд╛рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рд╣рдо рдирд┐рд░рдВрддрд░ рдирд╛рдо рдХреЛ рдЙрдкрдирд╛рдо рдирд╣реАрдВ рдХрд╣рддреЗ рд╣реИрдВ, рдФрд░ рдирд┐рд░рдВрддрд░ рдореВрд▓реНрдп рдЙрдкрдирд╛рдо рд╕реНрдерд┐рд░рд╛рдВрдХ рдХрд╣рддреЗ рд╣реИрдВ)ред

рдкрд╛рд░рдВрдкрд░рд┐рдХ (рдЧреИрд░-рдЙрдкрдирд╛рдо) рдкреНрд░рдХрд╛рд░ рдХреА рдШреЛрд╖рдгрд╛ рдЕрдзрд┐рдХ рдХрд╛рдо рдХрд░рддреА рд╣реИ: рдпрд╣ рдмрд╛рдИрдВ рдУрд░ рдХреЗ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЛ рдмрд╛рдзреНрдп рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рджрд╛рдИрдВ рдУрд░ рдХреЗ рдкреНрд░рдХрд╛рд░ рд╕реЗ рдПрдХ рдирдпрд╛ рдкреНрд░рдХрд╛рд░ рдмрдирд╛рддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдФрд░ рджрд╛рдИрдВ рдУрд░ рдХрд╛ рдкреНрд░рдХрд╛рд░ рд╕рдорд╛рди рдирд╣реАрдВ рд╣реИрдВ (рд╡реЗ рдХреЗрд╡рд▓ рд╕рдорд╛рди рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдкреНрд░рдХрд╛рд░ рд╕рд╛рдЭрд╛ рдХрд░рддреЗ рд╣реИрдВ)ред рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдЕрд╡рдзрд╛рд░рдгрд╛ рд╣реИред

рд╣рдореЗрдВ рдЗрди рдирд╡ рдирд┐рд░реНрдорд┐рдд рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдП рд╢рдмреНрдж рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЕрдм рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХрд╛ рдПрдХ рдирд╛рдо рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдФрд░ рд╣рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЙрдирдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдирд┐рдпрдо рд╣реИрдВ (рдкреНрд░рдХрд╛рд░ рдХреА рдкрд╣рдЪрд╛рди, рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ, рд░рд┐рд╕реАрд╡рд░ рдЖрдзрд╛рд░ рдкреНрд░рдХрд╛рд░)ред

рдЗрд╕рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдФрд░ рддрд░реАрдХрд╛ рдпрд╣рд╛рдВ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рд╢рд┐рдХреНрд╖рдг рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ: рдПрдХ рдкреНрд░рдХрд╛рд░ рдпрд╛ рддреЛ рд░рдВрдЧреАрди рдпрд╛ рдмрд┐рдирд╛ рд░рдВрдЧ рдХрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд╕рднреА рдкреВрд░реНрд╡-рдШреЛрд╖рд┐рдд рдкреНрд░рдХрд╛рд░, рдФрд░ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдЕрдХреНрд╖рд░ рдмрд┐рдирд╛ рд░рдВрдЧ рдХреЗ рд╣реИрдВред рдПрдХ рдирдпрд╛ рд░рдВрдЧреАрди рдкреНрд░рдХрд╛рд░ рдмрдирд╛рдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рдкрд╛рд░рдВрдкрд░рд┐рдХ (рдЧреИрд░-рдЙрдкрдирд╛рдо) рдкреНрд░рдХрд╛рд░ рдХреА рдШреЛрд╖рдгрд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рдкрд╣рд▓реЗ рдПрдХ рдирдП, рдкрд╣рд▓реЗ рдХрднреА рдЗрд╕реНрддреЗрдорд╛рд▓ рдирд╣реАрдВ рдХрд┐рдП рдЧрдП рд░рдВрдЧ (рдкреБрд░рд╛рдиреЗ рд░рдВрдЧ рдХреЛ рдЕрд▓рдЧ рдХрд░рдирд╛) рдХреЗ рд╕рд╛рде рджрд╛рдИрдВ рдУрд░ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдкреЗрдВрдЯ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдХреЛрдИ рд╣реЛ, рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ) рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЛ рдмрд╛рдИрдВ рдУрд░ рдмрд╛рдзреНрдп рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗред рдлрд┐рд░ рд╕реЗ, рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдФрд░ (рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдФрд░ рдЕрджреГрд╢реНрдп рд░реВрдк рд╕реЗ рдирд┐рд░реНрдорд┐рдд) рд░рдВрдЧреАрди рдкреНрд░рдХрд╛рд░ рд╕рдорд╛рди рд╣реЛрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡реЗ рджрд╛рдИрдВ рдУрд░ рд▓рд┐рдЦреЗ рдЧрдП (рдЕрд▓рдЧ-рдЕрд▓рдЧ рд░рдВрдЧ рдпрд╛ рдмрд┐рдирд╛ рд░рдВрдЧ рдХреЗ) рдкреНрд░рдХрд╛рд░ рд╕реЗ рднрд┐рдиреНрди рд╣реЛрддреЗ рд╣реИрдВред

рдЗрд╕ рд╕рд╛рджреГрд╢реНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рд╣рдо рдХрдИ рдЕрдиреНрдп рдореМрдЬреВрджрд╛ рдирд┐рдпрдореЛрдВ рдХреЛ рднреА рд╕реБрдзрд╛рд░ рд╕рдХрддреЗ рд╣реИрдВ:

  • рдПрдХ рд░рдВрдЧреАрди рдкреНрд░рдХрд╛рд░ рд╣рдореЗрд╢рд╛ рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░ рд╕реЗ рдЕрд▓рдЧ рд╣реЛрддрд╛ рд╣реИ (рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдХрд╛рд░ рдХреА рдШреЛрд╖рдгрд╛ рдПрдХ рдмрд┐рд▓реНрдХреБрд▓ рдирдП, рдкрд╣рд▓реЗ рдХрднреА рдЗрд╕реНрддреЗрдорд╛рд▓ рдирд╣реАрдВ рдХрд┐рдП рдЧрдП рд░рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИ)ред
  • рд╡рд┐рдзрд┐рдпрд╛рдБ рдХреЗрд╡рд▓ рд░рд┐рд╕реАрд╡рд░ рдЖрдзрд╛рд░ рдкреНрд░рдХрд╛рд░реЛрдВ рд╕реЗ рд╕рдВрдмрджреНрдз рд╣реЛ рд╕рдХрддреА рд╣реИрдВ рдЬреЛ рд░рдВрдЧреАрди рд╣реИрдВред
  • рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдкреНрд░рдХрд╛рд░ рд╡рд╣ рдкреНрд░рдХрд╛рд░ рд╣реИ рдЬреЛ рдЙрд╕рдХреЗ рд╕рднреА рд░рдВрдЧ рдХреЛ рдЫреАрди рд▓реЗрддрд╛ рд╣реИред
    рдЖрджрд┐ред

рд╣рдо рдПрдХ рдирд┐рд░рдВрддрд░ рдирд╛рдо рдХреЛ рдЙрдкрдирд╛рдо рдирд╣реАрдВ рдХрд╣рддреЗ рд╣реИрдВ, рдФрд░ рдирд┐рд░рдВрддрд░ рдорд╛рди рдХреЛ рдЕрд▓рд┐рдпрд╛рд╕ рд╕реНрдерд┐рд░рд╛рдВрдХ рдХрд╣рддреЗ рд╣реИрдВ

рдЕрдЪреНрдЫрд╛ рдмрд┐рдВрджреБ

рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рд░рдВрдЧреАрди рдмрдирд╛рдо рдмрд┐рдирд╛ рд░рдВрдЧ рдХреА рд╕рд╛рджреГрд╢реНрдпрддрд╛ рдХреЛ рд╕рдордЭрдирд╛ рдЖрд╕рд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХреЛ рд╕рдордЭрд╛рдиреЗ рдХреЗ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рддрд░реАрдХреЗ рд╣реИрдВред

рдкрд╛рд░рдВрдкрд░рд┐рдХ рдирд╛рдорд┐рдд/рдмреНрд░рд╛рдВрдбреЗрдб/рд░рдВрдЧреАрди рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЕрдзрд┐рдХ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЬрдм рдХрд┐рд╕реА рдирд╛рдорд┐рдд рдкреНрд░рдХрд╛рд░ рдХреЛ рдореМрдЬреВрджрд╛ рдирд╛рдорд┐рдд рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рд╕реВрдХреНрд╖реНрдо рдЕрдВрддрд░ рд╣реИрдВред

type intSet map[int]struct{} // a new type with an underlying type map[int]struct{}

type myIntSet intSet // a new type with an underlying type map[int]struct{}

type otherIntSet = intSet // just another name (alias) for intSet, add methods to intSet (only in the same package)

type literalIntSet = map[int]struct{} // just another name for map[int]struct{}, no adding methods

рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рджреБрд░реНрдЧрдо рдирд╣реАрдВ рд╣реИред рдЗрд╕ рднреВрдорд┐ рдХреЛ рдЧреЛ 1.9 рдореЗрдВ рдорд╛рдирддреЗ рд╣реБрдП, рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рд╣рдо рдХрдИ рдЧреЛ рдкреБрд╕реНрддрдХреЛрдВ рдХреЗ рджреВрд╕рд░реЗ рд╕рдВрд╕реНрдХрд░рдг рджреЗрдЦреЗрдВрдЧреЗред рдореИрдВ

рдореИрдВ рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рд╕реНрд╡реАрдХреГрдд рд╢рдмреНрджрд╛рд╡рд▓реА рдХреЗ рд▓рд┐рдП рдЧреЛ рд╕реНрдкреЗрдХ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рддрд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдмрд╣реБрдд рдЙрддреНрд╕реБрдХ рд╣реВрдВ рдХрд┐ рдЕрдВрдд рдореЗрдВ рдХреМрди рд╕реЗ рд╢рдмреНрдж рдЪреБрдиреЗ рдЬрд╛рддреЗ рд╣реИрдВред

рд╣рдореЗрдВ рдЗрди рдирд╡ рдирд┐рд░реНрдорд┐рдд рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдП рд╢рдмреНрдж рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЕрдм рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХрд╛ рдПрдХ рдирд╛рдо рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдХреБрдЫ рд╡рд┐рдЪрд╛рд░:

  • "рд╡рд┐рд╢рд┐рд╖реНрдЯ" рдпрд╛ "рд╡рд┐рд╢рд┐рд╖реНрдЯ" (рдЬреИрд╕рд╛ рдХрд┐, рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░реЛрдВ рд╕реЗ рдЕрд▓рдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ)
  • "рдЕрджреНрд╡рд┐рддреАрдп" (рдЬреИрд╕рд╛ рдХрд┐, рдпрд╣ рдЕрдиреНрдп рд╕рднреА рдкреНрд░рдХрд╛рд░реЛрдВ рд╕реЗ рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рд╣реИ)
  • "рдареЛрд╕" (рдЬреИрд╕рд╛ рдХрд┐, рдпрд╣ рдПрдХ рдЗрдХрд╛рдИ рд╣реИ рдЬреЛ рд░рдирдЯрд╛рдЗрдо рдореЗрдВ рдореМрдЬреВрдж рд╣реИ)
  • "рдкрд╣рдЪрд╛рди рдпреЛрдЧреНрдп" (рдЬреИрд╕рд╛ рдХрд┐, рдкреНрд░рдХрд╛рд░ рдХреА рдПрдХ рдкрд╣рдЪрд╛рди рд╣реИ)

@bcmills рд╣рдо рд╡рд┐рд╢рд┐рд╖реНрдЯ, рдЕрджреНрд╡рд┐рддреАрдп, рд╡рд┐рд╢рд┐рд╖реНрдЯ, рдмреНрд░рд╛рдВрдбреЗрдб, рд░рдВрдЧреАрди, рдкрд░рд┐рднрд╛рд╖рд┐рдд, рдЧреИрд░-рдЙрдкрдирд╛рдо, рдЖрджрд┐ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪ рд░рд╣реЗ рд╣реИрдВред "рдХрдВрдХреНрд░реАрдЯ" рднреНрд░рд╛рдордХ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд░рдВрдЧреАрди рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдПрдХ рдЕрдореВрд░реНрдд рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЕрд╡рддрд╛рд░ рд╣реИред "рдкрд╣рдЪрд╛рди рдпреЛрдЧреНрдп" рднреА рднреНрд░рд╛рдордХ рд▓рдЧрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ "рд╕реНрдЯреНрд░рдХреНрдЪрд░ {int}" рдХрд┐рд╕реА рднреА рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ (рдЧреИрд░-рдЙрдкрдирд╛рдо) рдирд╛рдорд┐рдд рдкреНрд░рдХрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╣рдЪрд╛рдиреЗ рдЬрд╛рдиреЗ рдпреЛрдЧреНрдп рд╣реИред

рдореИрдВ рдЗрд╕рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХрд░реВрдВрдЧрд╛:

  • "рд░рдВрдЧреАрди" (рдЧреИрд░-рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд╕рдВрджрд░реНрднреЛрдВ рдореЗрдВ рд╡рд╛рдХреНрдпрд╛рдВрд╢ "рд░рдВрдЧреАрди рдкреНрд░рдХрд╛рд░" рдордЬрдмреВрдд рдирд╕реНрд▓реАрдп-рдкреВрд░реНрд╡рд╛рдЧреНрд░рд╣ рдЕрд░реНрде рд░рдЦрддрд╛ рд╣реИ)
  • "рдЧреИрд░-рдЙрдкрдирд╛рдо" (рдпрд╣ рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЙрдкрдирд╛рдо рдХрд╛ рд▓рдХреНрд╖реНрдп рдкрд╣рд▓реЗ "рдирд╛рдорд┐рдд рдкреНрд░рдХрд╛рд░" рдХрд╣рд▓рд╛рддрд╛ рдерд╛ рдпрд╛ рдирд╣реАрдВ рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ)
  • "рдкрд░рд┐рднрд╛рд╖рд┐рдд" (рдЙрдкрдирд╛рдо рднреА рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдП рдЧрдП рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рдХреЗрд╡рд▓ рдЙрдкрдирд╛рдо рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ)

"рдмреНрд░рд╛рдВрдбреЗрдб" рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ: рдпрд╣ "рдорд╡реЗрд╢реА рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рдХрд╛рд░" рдЕрд░реНрде рд░рдЦрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдпрд╣ рдореБрдЭреЗ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рдмреБрд░рд╛ рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИред

рдЕрджреНрд╡рд┐рддреАрдп рдФрд░ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЕрдм рддрдХ рдХреЗ рд╕реНрдЯреИрдВрдб рдЖрдЙрдЯ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреА рддрд░рд╣ рдкреНрд░рддреАрдд рд╣реЛрддреЗ рд╣реИрдВред

рд╡реЗ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рдВрджрд░реНрдн рдпрд╛ рдЬреНрдЮрд╛рди рдХреЗ рдмрд┐рдирд╛ рд╕рд░рд▓ рдФрд░ рд╕рдордЭрдиреЗ рдпреЛрдЧреНрдп рд╣реИрдВред рдЕрдЧрд░ рдореБрдЭреЗ рднреЗрдж рдирд╣реАрдВ рдкрддрд╛ рдерд╛, рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдХрдо рд╕реЗ рдХрдо рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╕рдордЭ рд╣реЛрдЧреА рдХрд┐ рдЙрдирдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИред рдореИрдВ рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдпрд╣ рдирд╣реАрдВ рдХрд╣ рд╕рдХрддрд╛ред

рдПрдХ рдмрд╛рд░ рдЬрдм рдЖрдк рд╢рдмреНрдж рд╕реАрдЦ рд▓реЗрддреЗ рд╣реИрдВ рддреЛ рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛, рд▓реЗрдХрд┐рди рдПрдХ рд╕рд╛рдВрдХреЗрддрд┐рдХ рдирд╛рдо рднреЗрдж рдХреЛ рдЖрдВрддрд░рд┐рдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдирд╛рд╡рд╢реНрдпрдХ рдмрд╛рдзрд╛рдУрдВ рд╕реЗ рдмрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдпрд╣ рдПрдХ рдмрд╛рдЗрдХрд╢реЗрдб рддрд░реНрдХ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рд╣реИред рд░реЙрдмрд░реНрдЯ рдХреЗ рдкрд╛рд╕ https://go-review.googlesource.com/#/c/36213/ рдкрд░ рдПрдХ рд▓рдВрдмрд┐рдд CL рд╣реИ рдЬреЛ рдмрд┐рд▓реНрдХреБрд▓ рдареАрдХ рд▓рдЧрддрд╛ рд╣реИред

CL https://golang.org/cl/36213 рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рддрд╛ рд╣реИред

рдореИрдВ go fix рдХреЗ рдореБрджреНрджреЗ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред

рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдореИрдВ рдЙрдкрдирд╛рдо рдХреЛ 'рдиреАрдЪреЗ рд▓реЗ рдЬрд╛рдиреЗ' рдХрд╛ рд╕реБрдЭрд╛рд╡ рдирд╣реАрдВ рджреЗ рд░рд╣рд╛ рд╣реВрдВред рд╢рд╛рдпрдж рдпрд╣ рдХреБрдЫ рдЙрдкрдпреЛрдЧреА рдФрд░ рдЕрдиреНрдп рдиреМрдХрд░рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИ, рдпрд╣ рдПрдХ рдФрд░ рдХрд╣рд╛рдиреА рд╣реИред

рдпрд╣ рдХреБрдЫ рдмрд╣реБрдд рд╣реА рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЖрдИрдПрдордУ рд╣реИ рдХрд┐ рд╢реАрд░реНрд╖рдХ рдЪрд▓рддреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред рдореБрдЭреЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдЙрд▓рдЭрд╛рдиреЗ рдХреА рдХреЛрдИ рдЗрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИред рд╣рдорд╛рд░рд╛ рдЙрджреНрджреЗрд╢реНрдп рдХрд┐рд╕реА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкрд░рд┐рд╡рд░реНрддрди рд╕реЗ рдирд┐рдкрдЯрдирд╛ рд╣реИред рдЬрдм рд╣рдо рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдкрд░ рдЖрддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рд╕рдЪ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╣рдо рдЖрд╢рд╛ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╕рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдВрддрддрдГ рдЗрди рджреЛрдиреЛрдВ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ (рдкреБрд░рд╛рдиреЗ рдФрд░ рдирдП) рдХрд╛ рдЙрдкрдпреЛрдЧ рдЙрд╕реА рдХреЗ рд░реВрдк рдореЗрдВ рдХрд░реЗрдВрдЧреЗ, рдФрд░ рдЗрд╕реАрд▓рд┐рдП рд╣рдо 'рдХреНрд░рдорд┐рдХ рдХреЛрдб рдорд░рдореНрдордд' рдХрд╣рддреЗ рд╣реИрдВред рд╣рдо рдЖрд╢рд╛ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреБрд░рд╛рдиреЗ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рд╣рдЯрд╛ рджреЗрдВ/рдмрджрд▓ рджреЗрдВред

рдореИрдВ рдЕрднреА рднреА рдХреЛрдб рдХреЛ рд╕реБрдзрд╛рд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреВрд▓ рдХреЛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рдорд╛рдирддрд╛ рд╣реВрдВ, рдХреБрдЫ рдРрд╕рд╛ рд╡рд┐рдЪрд╛рд░ рдЬреЛ @ tux21b рдиреЗ рд╕реБрдЭрд╛рдпрд╛ рдерд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

$ cat "$GOROOT"/RENAME
# This file could be used for `go fix`
[package]
x/net/context=context
[type]
io.ByteBuffer=bytes.Buffer

$ go fix -rename "$GOROOT"/RENAME [packages]
# -- or --
# use a standard libraries rename table as default
$ go fix -rename [packages]
# -- or --
# include this fix as default
$ go fix [packages]

@rsc рдХреЗ рдпрд╣рд╛рдБ рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЗрд╕ рдХрд╛рд░реНрдп рдкреНрд░рд╡рд╛рд╣ рдореЗрдВ рд╕рдЪ рдирд╣реАрдВ рд╣реИ : рдпрджрд┐ рдХреЛрдИ рдкреБрд░рд╛рдирд╛ рдкреИрдХреЗрдЬ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рд░реНрднрд░рддрд╛) рдкреИрдХреЗрдЬ рдХреЗ рдмрд╣рд┐рд╖реНрдХреГрдд рдирд╛рдо/рдкрде рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП x/net/context , рддреЛ рд╣рдо рдкрд╣рд▓реЗ рдХреЛрдб рдХреЛ рдареАрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ , рдареАрдХ рд╡реИрд╕реЗ рд╣реА рдЬреИрд╕реЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХрд╣рддрд╛ рд╣реИ рдХрд┐ рдкрд╛рда рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдПрдХ рд╡рд┐рдиреНрдпрд╛рд╕ рдпреЛрдЧреНрдп рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреЛрдб рдХреЛ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдХреИрд╕реЗ рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдП, рд▓реЗрдХрд┐рди рд╣рд╛рд░реНрдб-рдХреЛрдбрд┐рдВрдЧ рдирд╣реАрдВред рдлрд┐рд░ рдЖрдк рдХрд┐рд╕реА рднреА рдЙрдкрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрдм рднреА рдЖрдк рдирдП рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдЧреЛ рдХреЗ рд╕рдорд╛рди рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВред рдПрдХ рджреБрд╖реНрдкреНрд░рднрд╛рд╡ рд╣реИ: рдпрд╣ рдХреЛрдб рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░реЗрдЧрд╛ред

@LionNatsu , рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рд╕рд╣реА рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдЕрд▓рдЧ рдореБрджреНрджрд╛ рд╣реИ: рдХреНрдпрд╛ рд╣рдореЗрдВ рд╕рдВрднрд╛рд╡рд┐рдд рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЛ рдпрд╣ рд╕рдордЭрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреИрдХреЗрдЬ рдХреЗ рд▓рд┐рдП рд╕рдореНрдореЗрд▓рдиреЛрдВ рдХреЛ рдЕрдкрдирд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдпрд╛рдВрддреНрд░рд┐рдХ рддрд░реАрдХреЗ рд╕реЗ рдПрдкреАрдЖрдИ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рдЬрд╡рд╛рдм рдореЗрдВ рдЕрдкрдирд╛ рдХреЛрдб рдХреИрд╕реЗ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдП? рд╢рд╛рдпрдж, рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рд╡реЗ рд╕рдореНрдореЗрд▓рди рдХреНрдпрд╛ рд╣реИрдВред рдХреНрдпрд╛ рдЖрдк рдЗрд╕ рдмрд╛рддрдЪреАрдд рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рддреЗ рд╣реБрдП рдЗрд╕ рд╡рд┐рд╖рдп рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдореБрджреНрджрд╛ рдЦреЛрд▓ рд╕рдХрддреЗ рд╣реИрдВ? рдзрдиреНрдпрд╡рд╛рджред

CL https://golang.org/cl/36691 рдореЗрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рд╣реИред

рдЯрд┐рдк рдкрд░ рдЗрд╕ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЗ рд╕рд╛рде, рдореИрдВ рдЕрдм рдпрд╣ рдкреИрдХреЗрдЬ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реВрдВ:

package safe

import "unsafe"

type Pointer = unsafe.Pointer

рдЬреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рд╕реАрдзреЗ unsafe рдЖрдпрд╛рдд рдХрд┐рдП рдмрд┐рдирд╛ unsafe.Pointer рдорд╛рди рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ:

package main

import "safe"

func main() {
    x := []int{4, 9}
    y := *(*int)(safe.Pointer(uintptr(safe.Pointer(&x[0])) + 8))
    println(y)
}

рдореВрд▓ рдЙрдкрдирд╛рдо рдШреЛрд╖рдгрд╛рдПрдВ рдбрд┐рдЬрд╝рд╛рдЗрди рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЗрд╕реЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕рдорд░реНрдерд┐рдд рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╣рддреЗ рд╣реИрдВред рдпрд╣ рдЗрд╕ рдирдП рдкреНрд░рдХрд╛рд░ рдХреЗ рдЙрдкрдирд╛рдо рдкреНрд░рд╕реНрддрд╛рд╡ рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдЙрдкрдирд╛рдо рдШреЛрд╖рдгрд╛ рдореБрджреНрджреЗ рдкрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рддрд░реНрдХрд╕рдВрдЧрдд рд╣реИ: _ "рд╣рдо рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдХреЗ рд▓рд┐рдП рдПрд▓рд┐рдпрд╛рд╕рд┐рдВрдЧ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред рд╕реВрдЪрдХ рдпрд╣ рд╣реИ рдХрд┐ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдкреНрд░рдХрд╛рд░ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдВрднрд╡ рд╣реИред рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдкреНрд░рдХрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реВрдЪрдХред"_ https://github.com/ рдЧреЛрд▓рд╛рдВрдЧ/рдЧреЛ/рдореБрджреНрджреЛрдВ/16339#рдореБрджреНрджреЗ рдЯрд┐рдкреНрдкрдгреА -232435361

рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рд╕рдЪ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ unsafe.Pointer рдЙрдкрдирд╛рдо рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдирд╛ рдХреБрдЫ рдирдпрд╛ рдкрд░рд┐рдЪрдп рджреЗрддрд╛ рд╣реИ: рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЕрдм рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдЖрдпрд╛рдд рдХрд┐рдП рдмрд┐рдирд╛ unsafe.Pointer рдорд╛рди рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдЗрд╕ рдкреНрд░рд╕реНрддрд╛рд╡ рд╕реЗ рдкрд╣рд▓реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдКрдкрд░ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рд╕реЗрдл рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдкреЙрдЗрдВрдЯрд░ рдХреЛ рдПрдХ рдкреИрдХреЗрдЬ рдореЗрдВ рдбрд╛рд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдЖрдпрд╛рдд рдХрд░рддрд╛ рд╣реИред рдЗрд╕рд╕реЗ рдЙрдирдХреЗ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХрд╛ рдСрдбрд┐рдЯ рдХрд░рдирд╛ рдереЛрдбрд╝рд╛ рдХрдард┐рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

@crawshaw , рдХреНрдпрд╛ рдЖрдкрдиреЗ рдкрд╣рд▓реЗ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реЛрдЧрд╛?

package safe

import (
  "reflect"
  "unsafe"
)

func Pointer(p interface {}) unsafe.Pointer {
  switch v := reflect.ValueOf(p); v.Kind() {
  case reflect.Uintptr:
    return unsafe.Pointer(uintptr(v.Uint()))
  default:
    return unsafe.Pointer(v.Pointer())
  }
}

рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдкреИрдХреЗрдЬ main рдореЗрдВ рдЖрдпрд╛рдд рдХреА рд╕рдорд╛рди рдХрдореА рдХреЗ рд╕рд╛рде, рдареАрдХ рдЙрд╕реА рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред

(рдпрд╣ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдПрдХ рд╡реИрдз рдХрд╛рд░реНрдпрдХреНрд░рдо рдирд╣реАрдВ рд╣реЛрдЧрд╛: uintptr -to- Pointer рд░реВрдкрд╛рдВрддрд░рдг рдореЗрдВ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рд╢рд╛рдорд┐рд▓ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ unsafe рдкреИрдХреЗрдЬ рдмрд╛рдзрд╛ рдХреЛ рдкреВрд░рд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдХрд┐ " рджреЛрдиреЛрдВ рд░реВрдкрд╛рдВрддрд░рдгреЛрдВ рдХреЛ рдПрдХ рд╣реА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдореЗрдВ рдкреНрд░рдХрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЙрдирдХреЗ рдмреАрдЪ рдХреЗрд╡рд▓ рдордзреНрдпрд╡рд░реНрддреА рдЕрдВрдХрдЧрдгрд┐рдд рдХреЗ рд╕рд╛рдеред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ unsafe рдХреЛ main рд╕реЗ рдЖрдпрд╛рдд рдХрд┐рдП рдмрд┐рдирд╛ рдПрдХ рд╕рдордХрдХреНрд╖, рд╡реИрдз рдХрд╛рд░реНрдпрдХреНрд░рдо рдмрдирд╛рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛ред reflect.SliceHeader рдЬреИрд╕реА рдЪреАрдЬреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧред)

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдЫрд┐рдкреЗ рд╣реБрдП рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдкреНрд░рдХрд╛рд░ рдХреЛ рдирд┐рд░реНрдпрд╛рдд рдХрд░рдирд╛ рдСрдбрд┐рдЯ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдПрдХ рдФрд░ рдирд┐рдпрдо рд╣реИред

рд╣рд╛рдВ, рдореИрдВ рдпрд╣ рдмрддрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдХрд┐ рд╕реАрдзреЗ рдЕрд▓рд┐рдпрд╛рд╕рд┐рдВрдЧ рдЕрд╕реБрд░рдХреНрд╖рд┐рддред рдкреЙрдЗрдВрдЯрд░ рдХреЛрдб рдХреЛ рдСрдбрд┐рдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдард┐рди рдмрдирд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдХреЛрдИ рднреА рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред

@crawshaw рдореЗрд░реА рдЯрд┐рдкреНрдкрдгреА рдХреЗ рдЕрдиреБрд╕рд╛рд░, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрд▓рд┐рдпрд╛рд╕рд┐рдВрдЧ рдЯрд╛рдЗрдк рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдпрд╣ рднреА рд╕рдЪ рдерд╛ред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдорд╛рдиреНрдп рд╣реИ:

package a

import "unsafe"

type P unsafe.Pointer
package main

import "./a"
import "fmt"

var x uint64 = 0xfedcba9876543210
var h = *(*uint32)(a.P(uintptr(a.P(&x)) + 4))

func main() {
    fmt.Printf("%x\n", h)
}

рдпрд╣реА рд╣реИ, рдкреИрдХреЗрдЬ рдореБрдЦреНрдп рдореЗрдВ, рдореИрдВ a.P рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдЕрдВрдХрдЧрдгрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рднрд▓реЗ рд╣реА рдХреЛрдИ unsafe рдкреИрдХреЗрдЬ рди рд╣реЛ рдФрд░ a.P рдХреЛрдИ рдЙрдкрдирд╛рдо рди рд╣реЛред рдпрд╣ рд╣рдореЗрд╢рд╛ рд╕рдВрднрд╡ рдерд╛ред

рдХреНрдпрд╛ рдХреБрдЫ рдФрд░ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЖрдк рдЬрд┐рдХреНрд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВ?

рдореЗрд░реА рдЧрд▓рддреАред рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдХрд┐ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ред (рдореИрдВ рдЗрд╕ рдзрд╛рд░рдгрд╛ рдХреЗ рддрд╣рдд рдерд╛ рдХрд┐ рд╡рд┐рд╢реЗрд╖ рдирд┐рдпрдо рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддреЗ рд╣реИрдВред рдкреЙрдЗрдВрдЯрд░ рдЗрд╕рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирдП рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рдкреНрд░рдЪрд╛рд░ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред)

рдЗрд╕ рдкрд░ рдпреБрдХреНрддрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИред рдЧреЛ/рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдореЗрд░реЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП unsafe.Pointer рд╣реИ, рди рдХрд┐ рдХреЗрд╡рд▓ рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП рдЬреЛ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдкреНрд░рдХрд╛рд░ рдХрд╛ unsafe.Pointer ред рдореБрдЭреЗ рдЕрднреА-рдЕрднреА #6326 рдорд┐рд▓рд╛, рдЬреЛ рддрдм рд╣реБрдЖ рдЬрдм рдореИрдВрдиреЗ gc рдХреЗ рдЕрдиреБрд░реВрдк рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП go/types рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ред

рд╢рд╛рдпрдж рд╣рдореЗрдВ рдЗрд╕реЗ рдирд┐рдпрдорд┐рдд рдкреНрд░рдХрд╛рд░ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ unsafe.Pointer рдЙрдкрдирд╛рдореЛрдВ рдХреЛ рднреА рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдореБрдЭреЗ рдЗрд╕рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХрд╛ рдХреЛрдИ рдЕрдЪреНрдЫрд╛ рдХрд╛рд░рдг рдирд╣реАрдВ рджрд┐рдЦ рд░рд╣рд╛ рд╣реИ рдФрд░ рдпрд╣ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдХреЛрдб рдХреЗ рд▓рд┐рдП unsafe рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рд╕реЗ рд╕рдордЭреМрддрд╛ рдХрд░рддрд╛ рд╣реИред

рдореИрдВрдиреЗ https://github.com/golang/go/issues/19306 рдмрдирд╛рдпрд╛

рдпрд╣ рд╣реБрдЖред рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣рд╛рдВ рдХреБрдЫ рдмрдЪрд╛ рд╣реИред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

jayhuang75 picture jayhuang75  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

rakyll picture rakyll  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

go101 picture go101  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

enoodle picture enoodle  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

rsc picture rsc  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ