рд╕реНрдорд╛рд░реНрдЯ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░рд╕рд╛рдареА рдЧреЛ рдбрд┐рдЭрд╛рдЗрди рд╡рд╛рдИрдЯ рдХрд╛ рдЖрд╣реЗ

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

рдХрдордХреБрд╡рдд рдкреНрд░реЛрдЧреНрд░рд╛рдорд░рд╕рд╛рдареА рдбрд┐рдЭрд╛рдЗрди рдХреЗрд▓реЗрд▓реЗ?

рдЧреЛ рд╢рд┐рдХрдгреЗ рдЦреВрдк рд╕реЛрдкреЗ рдЖрд╣реЗ, рдЗрддрдХреЗ рд╕реЛрдкреЗ рдЖрд╣реЗ рдХреА рдкрд░рд┐рдЪрдп рдорд▓рд╛ рдПрдХрд╛ рд╕рдВрдзреНрдпрд╛рдХрд╛рд│реА рдШреЗрдКрди рдЧреЗрд▓рд╛, рддреНрдпрд╛рдирдВрддрд░ рдореА рдЖрдзреАрдЪ рдЙрддреНрдкрд╛рджрдХрдкрдгреЗ рдХреЛрдб рдХрд░реВ рд╢рдХрд▓реЛ. рдореА рдЧреЛ рд╢рд┐рдХрд╛рдпрдЪреЗ рддреЗ рдкреБрд╕реНрддрдХ рдореНрд╣рдгрддрд╛рдд рдЧреЛ рдордзреАрд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧрдЪрд╛ рдкрд░рд┐рдЪрдп (рд╣рд╕реНрддрд╛рдВрддрд░рдг), рддреЗ рдСрдирд▓рд╛рдЗрди рдЙрдкрд▓рдмреНрдз рдЖрд╣реЗ. рдЧреЛ рд╕реЛрд░реНрд╕ рдХреЛрдб рдкреНрд░рдорд╛рдгреЗрдЪ рд╣реЗ рдкреБрд╕реНрддрдХ рд╡рд╛рдЪрдгреНрдпрд╛рд╕ рд╕реЛрдкреЗ рдЖрд╣реЗ, рдЪрд╛рдВрдЧрд▓реЗ рдХреЛрдб рдЙрджрд╛рд╣рд░рдгреЗ рдЖрд╣реЗрдд рдЖрдгрд┐ рддреНрдпрд╛рдд рд╕реБрдорд╛рд░реЗ 150 рдкреГрд╖реНрдареЗ рдЖрд╣реЗрдд рдЬреА рдПрдХрд╛рдЪ рд╡реЗрд│реА рд╡рд╛рдЪрддрд╛ рдпреЗрддрд╛рдд. рд╣реА рд╕рд╛рдзреЗрдкрдгрд╛ рд╕реБрд░реБрд╡рд╛рддреАрд▓рд╛ рддрд╛рдЬреЗрддрд╡рд╛рдиреЗ рдЖрд╣реЗ, рд╡рд┐рд╢реЗрд╖рдд: рдЕрддрд┐-рдЬрдЯрд┐рд▓ рддрдВрддреНрд░рдЬреНрдЮрд╛рдирд╛рдиреЗ рднрд░рд▓реЗрд▓реНрдпрд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдЬрдЧрд╛рдд. рдкрдг рд╢реЗрд╡рдЯреА, рд▓рд╡рдХрд░рдЪ рдХрд┐рдВрд╡рд╛ рдирдВрддрд░ рд╡рд┐рдЪрд╛рд░ рдЙрджреНрднрд╡рддреЛ: "рд╣реЗ рдЦрд░реЛрдЦрд░ рдЕрд╕реЗ рдЖрд╣реЗ рдХрд╛?"

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

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

рдпреЗрдереЗ рдореБрдЦреНрдп рдореБрджреНрджрд╛ рдЕрд╕рд╛ рдЖрд╣реЗ рдХреА рдЖрдордЪреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ (рдЕрдВрджрд╛рдЬреЗ: Googlers) рд╕рдВрд╢реЛрдзрдХ рдирд╛рд╣реАрдд. рддреЗ, рдирд┐рдпрдорд╛рдиреБрд╕рд╛рд░, рдЕрдЧрджреА рддрд░реБрдг рдЖрд╣реЗрдд, рдЕрднреНрдпрд╛рд╕ рдХреЗрд▓реНрдпрд╛рдирдВрддрд░ рдЖрдордЪреНрдпрд╛рдХрдбреЗ рдпреЗрддрд╛рдд, рдХрджрд╛рдЪрд┐рдд рддреНрдпрд╛рдВрдиреА Java, рдХрд┐рдВрд╡рд╛ C/C++, рдХрд┐рдВрд╡рд╛ Python рдЪрд╛ рдЕрднреНрдпрд╛рд╕ рдХреЗрд▓рд╛ рдЕрд╕реЗрд▓. рддреНрдпрд╛рдВрдирд╛ рдЙрддреНрддрдо рднрд╛рд╖рд╛ рд╕рдордЬреВ рд╢рдХрдд рдирд╛рд╣реА, рдкрд░рдВрддреБ рддреНрдпрд╛рдЪ рд╡реЗрд│реА рддреНрдпрд╛рдВрдиреА рдЪрд╛рдВрдЧрд▓реЗ рд╕реЙрдлреНрдЯрд╡реЗрдЕрд░ рддрдпрд╛рд░ рдХрд░рд╛рд╡реЗ рдЕрд╢реА рдЖрдордЪреА рдЗрдЪреНрдЫрд╛ рдЖрд╣реЗ. рдореНрд╣рдгреВрдирдЪ рддреНрдпрд╛рдВрдЪреА рднрд╛рд╖рд╛ рддреНрдпрд╛рдВрдирд╛ рд╕рдордЬрдгреНрдпрд╛рд╕ рд╡ рд╢рд┐рдХрдгреНрдпрд╛рд╕ рд╕реЛрдкреА рдЕрд╕рд╛рд╡реА.
 
рддреЛ рдкрд░рд┐рдЪрд┐рдд рдЕрд╕рд╛рд╡рд╛, рдЕрдВрджрд╛рдЬреЗ рд╕реА рд╕рд╛рд░рдЦрд╛рдЪ рдмреЛрд▓рддреЛ. Google рд╡рд░ рдХрд╛рдо рдХрд░рдгрд╛рд░реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рддреНрдпрд╛рдВрдЪреЗ рдХрд░рд┐рдЕрд░ рд▓рд╡рдХрд░ рд╕реБрд░реВ рдХрд░рддрд╛рдд рдЖрдгрд┐ рддреНрдпрд╛рдВрдирд╛ рдореБрдЦреНрдпрддрдГ рдкреНрд░рдХреНрд░рд┐рдпрд╛рддреНрдордХ рднрд╛рд╖рд╛, рд╡рд┐рд╢реЗрд╖рддрдГ C рдХреБрдЯреБрдВрдмрд╛рд╢реА рдкрд░рд┐рдЪрд┐рдд рдЕрд╕рддрд╛рдд. рдирд╡реАрди рдкреНрд░реЛрдЧреНрд░реЕрдорд┐рдВрдЧ рднрд╛рд╖реЗрдд рдЬрд▓рдж рдЙрддреНрдкрд╛рджрдирдХреНрд╖рдорддреЗрдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдореНрд╣рдгрдЬреЗ рднрд╛рд╖рд╛ рдЦреВрдк рдореВрд▓рдЧрд╛рдореА рдЕрд╕реВ рдирдпреЗ.

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

рдЕрддреНрдпрд╛рдзрд┐рдХ рд╕рд╛рдзреЗрдкрдгрд╛рдЪреА рдХрд▓рд╛рдХреГрддреА

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

рдлрд╛рд░ рд╡реНрдпрдХреНрдд рдирд╛рд╣реА

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

рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдХрдВрд╕реЛрд▓ рдпреБрдЯрд┐рд▓рд┐рдЯреА рдЬреА stdin рд╡рд╛рдЪрддреЗ рдХрд┐рдВрд╡рд╛ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдЖрд░реНрдЧреНрдпреБрдореЗрдВрдЯреНрд╕рдордзреАрд▓ рдлрд╛рдЗрд▓ рдпрд╛рд╕рд╛рд░рдЦреА рджрд┐рд╕реЗрд▓:

package main

import (
    "bufio"
    "flag"
    "fmt"
    "log"
    "os"
)

func main() {

    flag.Parse()
    flags := flag.Args()

    var text string
    var scanner *bufio.Scanner
    var err error

    if len(flags) > 0 {

        file, err := os.Open(flags[0])

        if err != nil {
            log.Fatal(err)
        }

        scanner = bufio.NewScanner(file)

    } else {
        scanner = bufio.NewScanner(os.Stdin)
    }

    for scanner.Scan() {
        text += scanner.Text()
    }

    err = scanner.Err()
    if err != nil {
        log.Fatal(err)
    }

    fmt.Println(text)
}

рдЬрд░реА рд╣рд╛ рдХреЛрдб рд╢рдХреНрдп рддрд┐рддрдХрд╛ рд╕рд╛рдорд╛рдиреНрдп рд╣реЛрдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХрд░рдд рдЕрд╕рд▓рд╛ рддрд░реА, Go рдЪреА рд╕рдХреНрддреАрдЪреА рд╢рдмреНрджрд╢рдГ рдЕрдбрдерд│реЗ рдпреЗрддрд╛рдд рдЖрдгрд┐ рдкрд░рд┐рдгрд╛рдореА, рдПрдХ рд╕рд╛рдзреА рд╕рдорд╕реНрдпрд╛ рд╕реЛрдбрд╡рд▓реНрдпрд╛рдиреЗ рдХреЛрдб рдореЛрдареНрдпрд╛ рдкреНрд░рдорд╛рдгрд╛рдд рдорд┐рд│рддреЛ.

рдпреЗрдереЗ, рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдордзреНрдпреЗ рд╕рдорд╛рди рд╕рдорд╕реНрдпреЗрдЪреЗ рдирд┐рд░рд╛рдХрд░рдг рдЖрд╣реЗ D:

import std.stdio, std.array, std.conv;

void main(string[] args)
{
    try
    {
        auto source = args.length > 1 ? File(args[1], "r") : stdin;
        auto text   = source.byLine.join.to!(string);

        writeln(text);
    }
    catch (Exception ex)
    {
        writeln(ex.msg);
    }
}

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

рдХреЙрдкреА рдХрд░рдгреНрдпрд╛рдЪрд╛ рдирд░рдХ

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

package main

import "fmt"

func int64Sum(list []int64) (uint64) {
    var result int64 = 0
    for x := 0; x < len(list); x++ {
        result += list[x]
    }
    return uint64(result)
}

func int32Sum(list []int32) (uint64) {
    var result int32 = 0
    for x := 0; x < len(list); x++ {
        result += list[x]
    }
    return uint64(result)
}

func int16Sum(list []int16) (uint64) {
    var result int16 = 0
    for x := 0; x < len(list); x++ {
        result += list[x]
    }
    return uint64(result)
}

func int8Sum(list []int8) (uint64) {
    var result int8 = 0
    for x := 0; x < len(list); x++ {
        result += list[x]
    }
    return uint64(result)
}

func main() {

    list8  := []int8 {1, 2, 3, 4, 5}
    list16 := []int16{1, 2, 3, 4, 5}
    list32 := []int32{1, 2, 3, 4, 5}
    list64 := []int64{1, 2, 3, 4, 5}

    fmt.Println(int8Sum(list8))
    fmt.Println(int16Sum(list16))
    fmt.Println(int32Sum(list32))
    fmt.Println(int64Sum(list64))
}

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

рдбреА рд╡рд░ рд╕рдорд╛рди рдЙрджрд╛рд╣рд░рдг:

import std.stdio;
import std.algorithm;

void main(string[] args)
{
    [1, 2, 3, 4, 5].reduce!((a, b) => a + b).writeln;
}

рд╕рд╛рдзреЗ, рдореЛрд╣рдХ рдЖрдгрд┐ рд╕рд░рд│ рдореБрджреНрджреНрдпрд╛рдкрд░реНрдпрдВрдд. рдпреЗрдереЗ рд╡рд╛рдкрд░рд▓реЗрд▓реЗ рдХрд╛рд░реНрдп рдЖрд╣реЗ reduce рдЯреЗрдореНрдкрд▓реЗрдЯ рдкреНрд░рдХрд╛рд░ рдЖрдгрд┐ рдкреНрд░реЗрдбрд┐рдХреЗрдЯрд╕рд╛рдареА. рд╣реЛрдп, рд╣реЗ рдЧреЛ рдЖрд╡реГрддреНрддреАрдкреЗрдХреНрд╖рд╛ рдЕрдзрд┐рдХ рдХреНрд▓рд┐рд╖реНрдЯ рдЖрд╣реЗ, рдкрд░рдВрддреБ рд╕реНрдорд╛рд░реНрдЯ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░рдирд╛ рд╕рдордЬрдгреЗ рдЗрддрдХреЗ рдЕрд╡рдШрдб рдирд╛рд╣реА. рдХреЛрдгрддреЗ рдЙрджрд╛рд╣рд░рдг рд░рд╛рдЦрдгреЗ рд╕реЛрдкреЗ рдЖрдгрд┐ рд╡рд╛рдЪрдгреЗ рд╕реЛрдкреЗ рдЖрд╣реЗ?

рд╕рд┐рдВрдкрд▓ рдЯрд╛рдИрдк рд╕рд┐рд╕реНрдЯрдо рдмрд╛рдпрдкрд╛рд╕

рдорд▓рд╛ рдХрд▓реНрдкрдирд╛ рдЖрд╣реЗ рдХреА рд╣реЗ рд╡рд╛рдЪреВрди рдЧреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рддреЛрдВрдбрд╛рд▓рд╛ рдлреЗрд╕ рдЖрдгрдд рдЕрд╕рддреАрд▓ рдЖрдгрд┐ рдУрд░рдбрддреАрд▓, "рддреБрдореНрд╣реА рд╣реЗ рдЪреБрдХреАрдЪреЗ рдХрд░рдд рдЖрд╣рд╛рдд!" рдмрд░рдВ, рдЬреЗрдиреЗрд░рд┐рдХ рдлрдВрдХреНрд╢рди рдЖрдгрд┐ рдкреНрд░рдХрд╛рд░ рдмрдирд╡рдгреНрдпрд╛рдЪрд╛ рдЖрдгрдЦреА рдПрдХ рдорд╛рд░реНрдЧ рдЖрд╣реЗ, рдкрд░рдВрддреБ рддреЛ рдкреНрд░рдХрд╛рд░ рдкреНрд░рдгрд╛рд▓реА рдкреВрд░реНрдгрдкрдгреЗ рдЦрдВрдбрд┐рдд рдХрд░рддреЛ!

рд╕рдорд╕реНрдпреЗрд╡рд░ рдХрд╛рдо рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдореВрд░реНрдЦ рднрд╛рд╖реЗрдЪреНрдпрд╛ рдирд┐рд░рд╛рдХрд░рдгрд╛рдЪреНрдпрд╛ рдпрд╛ рдЙрджрд╛рд╣рд░рдгрд╛рд╡рд░ рдПрдХ рдирдЬрд░ рдЯрд╛рдХрд╛:

package main

import "fmt"
import "reflect"

func Reduce(in interface{}, memo interface{}, fn func(interface{}, interface{}) interface{}) interface{} {
    val := reflect.ValueOf(in)

    for i := 0; i < val.Len(); i++ {
        memo = fn(val.Index(i).Interface(), memo)
    }

    return memo
}

func main() {

    list := []int{1, 2, 3, 4, 5}

    result := Reduce(list, 0, func(val interface{}, memo interface{}) interface{} {
        return memo.(int) + val.(int)
    })

    fmt.Println(result)
}

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

рд╣реЗ рдПрдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╕рд╛рдзрди рдЖрд╣реЗ рдЬреЗ рд╕рд╛рд╡рдзрдЧрд┐рд░реАрдиреЗ рд╡рд╛рдкрд░рд▓реЗ рдкрд╛рд╣рд┐рдЬреЗ. рдХрдареЛрд░рдкрдгреЗ рдЖрд╡рд╢реНрдпрдХ рдирд╕рд▓реНрдпрд╛рд╕ рддреЗ рдЯрд╛рд│рд▓реЗ рдкрд╛рд╣рд┐рдЬреЗ.

рдореА рдпрд╛ рдореВрд░реНрдЦрдкрдгрд╛рдРрд╡рдЬреА рдбреА рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдШреЗрдИрди. рдЕрд╕реЗ рдХреЛрдгреА рдХрд╕реЗ рдореНрд╣рдгреЗрд▓ interface{} рдЕрдзрд┐рдХ рд╡рд╛рдЪрдиреАрдп рдХрд┐рдВрд╡рд╛ рдЕрдЧрджреА рд╕реБрд░рдХреНрд╖рд┐рдд рдЯрд╛рдЗрдк рдХрд░рд╛?

рдЕрд╡рд▓рдВрдмрд┐рддреНрд╡ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдирд╛рдЪреЗ рд╕рдВрдХрдЯ

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

рдпрд╛ рд╕рдорд╕реНрдпреЗрдЪреЗ рдирд┐рд░рд╛рдХрд░рдг рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдкреНрд░рд╢реНрди рд╡рд┐рдЪрд╛рд░рд▓реНрдпрд╛рдирдВрддрд░, рдЧреЛ рдбреЗрд╡реНрд╣рд▓рдкрдореЗрдВрдЯ рдЯреАрдо рддрдпрд╛рд░ рдХреЗрд▓реА рдордВрдЪ рдзрд╛рдЧрд╛, рдЬреНрдпрд╛рдиреЗ рддреЗ рдпрд╛ рд╕рдорд╕реНрдпреЗрд╡рд░ рдХрд╕реЗ рдЬрд╛рдпрдЪреЗ рд╣реЗ рд╕реНрдкрд╖реНрдЯ рдХреЗрд▓реЗ. рддреНрдпрд╛рдВрдЪреА рд╢рд┐рдлрд╛рд░рд╕ рдЕрд╢реА рд╣реЛрддреА рдХреА рдПрдХрд╛ рджрд┐рд╡рд╕рд╛рдд рд╕рдВрдкреВрд░реНрдг рд░реЗрдкреЙрдЬрд┐рдЯрд░реА рддреБрдордЪреНрдпрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯрдордзреНрдпреЗ рдХреЙрдкреА рдХрд░рд╛ рдЖрдгрд┐ "рдЬрд╕реЗ рдЖрд╣реЗ рддрд╕реЗ" рдареЗрд╡рд╛. рддреЗ рдХрд╛рдп рд╡рд┐рдЪрд╛рд░ рдХрд░рдд рдЖрд╣реЗрдд? рдЖрдордЪреНрдпрд╛рдХрдбреЗ рдЙрддреНрдХреГрд╖реНрдЯ рдЯреЕрдЧрд┐рдВрдЧ рдЖрдгрд┐ рдЖрд╡реГрддреНрддреА рд╕рдорд░реНрдердирд╛рд╕рд╣ рдЖрд╢реНрдЪрд░реНрдпрдХрд╛рд░рдХ рдЖрд╡реГрддреНрддреА рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рдгрд╛рд▓реА рдЖрд╣реЗрдд рдЬреНрдпрд╛рдХрдбреЗ Go рдирд┐рд░реНрдорд╛рддреЗ рджреБрд░реНрд▓рдХреНрд╖ рдХрд░рддрд╛рдд рдЖрдгрд┐ рдлрдХреНрдд рд╕реНрддреНрд░реЛрдд рдХреЛрдб рдХреЙрдкреА рдХрд░рддрд╛рдд.

рд╢реА рдкрд╛рд╕реВрди рд╕рд╛рдВрд╕реНрдХреГрддрд┐рдХ рд╕рд╛рдорд╛рди

рдорд╛рдЭреНрдпрд╛ рдорддреЗ, рдЬреНрдпрд╛рдВрдиреА рдЖрдпреБрд╖реНрдпрднрд░ C рдЪрд╛ рд╡рд╛рдкрд░ рдХреЗрд▓рд╛ рдЖрдгрд┐ рдЬреНрдпрд╛рдВрдирд╛ рдХрд╛рд╣реАрддрд░реА рдирд╡реАрди рдХрд░реВрди рдкрд╣рд╛рдпрдЪреЗ рдирд╡реНрд╣рддреЗ рдЕрд╢рд╛ рд▓реЛрдХрд╛рдВрджреНрд╡рд╛рд░реЗ Go рд╡рд┐рдХрд╕рд┐рдд рдХреЗрд▓реЗ рдЧреЗрд▓реЗ. рднрд╛рд╖реЗрдЪреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдЪрд╛рдХрд╛рдВрд╕рд╣ C рдЕрд╕реЗ рд╡рд░реНрдгрди рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ(рдореВрд│: рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдЪрд╛рдХреЗ). рддреНрдпрд╛рдд рд╕рдорд╛рдВрддрд░рддреЗрдЪреНрдпрд╛ рд╕рдорд░реНрдердирд╛рд╢рд┐рд╡рд╛рдп рдХреЛрдгрддреНрдпрд╛рд╣реА рдирд╡реАрди рдХрд▓реНрдкрдирд╛ рдирд╛рд╣реАрдд (рдЬреЗ, рддрд╕реЗ, рдЖрд╢реНрдЪрд░реНрдпрдХрд╛рд░рдХ рдЖрд╣реЗ) рдЖрдгрд┐ рд╣реА рд▓рд╛рдЬрд┐рд░рд╡рд╛рдгреА рдЧреЛрд╖реНрдЯ рдЖрд╣реЗ. рдХреЗрд╡рд│ рд╡рд╛рдкрд░рдгреНрдпрд╛рдпреЛрдЧреНрдп, рд▓рдВрдЧрдбреНрдпрд╛ рднрд╛рд╖реЗрдд рддреБрдордЪреНрдпрд╛рдХрдбреЗ рдЙрддреНрдХреГрд╖реНрдЯ рд╕рдорд╛рдВрддрд░рддрд╛ рдЖрд╣реЗ.

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

рдЖрдкрд▓реНрдпрд╛ рд╕реНрд╡рддрдГрдЪреНрдпрд╛ рдлрд╛рдпрджреНрдпрд╛рд╕рд╛рдареА рд╕рд╛рдзреЗрдкрдгрд╛

Go рдЪреА рд░рдЪрдирд╛ рд╕реЛрдкреА рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдХреЗрд▓реА рдЧреЗрд▓реА рд╣реЛрддреА рдЖрдгрд┐ рддреА рддреНрдпрд╛ рдзреНрдпреЗрдпрд╛рдд рдпрд╢рд╕реНрд╡реА рд╣реЛрддреЗ. рд╣реЗ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдореНрд╣рдгреВрди рдЬреБрдиреА рднрд╛рд╖рд╛ рд╡рд╛рдкрд░реВрди рдХрдордХреБрд╡рдд рдкреНрд░реЛрдЧреНрд░рд╛рдорд░рд╕рд╛рдареА рд▓рд┐рд╣рд┐рд▓реЗ рд╣реЛрддреЗ. рд╕реЛрдкреНрдпрд╛ рдЧреЛрд╖реНрдЯреА рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╣реЗ рд╕рд╛рдзреНрдпрд╛ рд╕рд╛рдзрдирд╛рдВрд╕рд╣ рдкреВрд░реНрдг рд╣реЛрддреЗ. рд╣реЗ рд╡рд╛рдЪрдгреНрдпрд╛рд╕ рд╕реЛрдкреЗ рдЖрдгрд┐ рд╡рд╛рдкрд░рдгреНрдпрд╛рд╕ рд╕реЛрдкреЗ рдЖрд╣реЗ.

рд╣реЗ рдЕрддреНрдпрдВрдд рд╢рдмреНрджрд╢рдГ, рдЕрдкреНрд░рднрд╛рд╡реА рдЖрдгрд┐ рд╕реНрдорд╛рд░реНрдЯ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░рд╕рд╛рдареА рд╡рд╛рдИрдЯ рдЖрд╣реЗ.

╨б╨┐╨░╤Б╨╕╨▒╨╛ mersinvald рд╕рдВрдкрд╛рджрдирд╛рдВрд╕рд╛рдареА

рд╕реНрддреНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛