рдПрдХ рдЬрд╛рдУ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд▓рд┐рдП рдмреБрд░реА рдпреБрдХреНрддрд┐рдпрд╛рдБ

рдЬрд╛рд╡рд╛ рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рджрд╢рдХреЛрдВ рдХреЗ рдмрд╛рдж, рдкрд┐рдЫрд▓реЗ рдХреБрдЫ рд╡рд░реНрд╖реЛрдВ рдореЗрдВ рдореИрдВрдиреЗ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдЧреЛ рдкрд░ рдХрд╛рдо рдХрд┐рдпрд╛ред рдЧреЛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдорд╣рд╛рди рд╣реИ, рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдХреНрдпреЛрдВрдХрд┐ рдХреЛрдб рдХрд╛ рдкрд╛рд▓рди рдХрд░рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИред рдЬрд╛рд╡рд╛ рдиреЗ рдорд▓реНрдЯреАрдкрд▓ рдЗрдирд╣реЗрд░рд┐рдЯреЗрдВрд╕, рдореИрдиреБрдЕрд▓ рдореЗрдореЛрд░реА рдореИрдиреЗрдЬрдореЗрдВрдЯ рдФрд░ рдСрдкрд░реЗрдЯрд░ рдУрд╡рд░рд▓реЛрдбрд┐рдВрдЧ рдХреЛ рд╣рдЯрд╛рдХрд░ C ++ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдореЙрдбрд▓ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдпрд╛ рд╣реИред рдЧреЛ рдПрдХ рд╣реА рдХрд░рддрд╛ рд╣реИ, рдПрдХ рд╕рд░рд▓ рдФрд░ рд╕реАрдзреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд╢реИрд▓реА рдХреА рдУрд░ рдмрдврд╝рдирд╛ рдЬрд╛рд░реА рд░рдЦрддрд╛ рд╣реИ, рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╡рдВрд╢рд╛рдиреБрдХреНрд░рдо рдФрд░ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдУрд╡рд░рд▓реЛрдбрд┐рдВрдЧ рдХреЛ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИред рд╕рд░рд▓ рдХреЛрдб рдкрдардиреАрдп рдХреЛрдб рд╣реИ, рдФрд░ рдкрдардиреАрдп рдХреЛрдб рд╕рдорд░реНрдерд┐рдд рдХреЛрдб рд╣реИред рдФрд░ рдпрд╣ рдХрдВрдкрдиреА рдФрд░ рдореЗрд░реЗ рдХрд░реНрдордЪрд╛рд░рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИред
рдЬреИрд╕рд╛ рдХрд┐ рд╕рднреА рд╕рдВрд╕реНрдХреГрддрд┐рдпреЛрдВ рдореЗрдВ, рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдХреА рдЕрдкрдиреА рдХрд┐рдВрд╡рджрдВрддрд┐рдпрд╛рдБ рд╣реИрдВ, рдРрд╕реА рдХрд╣рд╛рдирд┐рдпрд╛рдВ рдЬреЛ рд╡рд╛рдЯрд░ рдХреВрд▓рд░ рджреНрд╡рд╛рд░рд╛ рд░рд┐рдЯреЙрд▓реНрдб рдХреА рдЬрд╛рддреА рд╣реИрдВред рд╣рдо рд╕рднреА рдиреЗ рдЙрди рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реБрдирд╛ рд╣реИ рдЬреЛ рдПрдХ рдЧреБрдгрд╡рддреНрддрд╛ рд╡рд╛рд▓реЗ рдЙрддреНрдкрд╛рдж рдмрдирд╛рдиреЗ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдХрд╛рдо рдХреЛ рдмрд╛рд╣рд░реА рд▓реЛрдЧреЛрдВ рд╕реЗ рдмрдЪрд╛рдиреЗ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдЙрдиреНрд╣реЗрдВ рд╕рдорд░реНрдерд┐рдд рдХреЛрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЕрдиреНрдп рд▓реЛрдЧ рдЗрд╕реЗ рд╕рдордЭрдиреЗ рдФрд░ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗред рдХреНрдпрд╛ рдпрд╣ рдЧреЛ рдкрд░ рд╕рдВрднрд╡ рд╣реИ? рдХреНрдпрд╛ рдЧреЛ рдХреЛрдб рдХреЛ рдЗрддрдирд╛ рдЬрдЯрд┐рд▓ рдмрдирд╛рдирд╛ рд╕рдВрднрд╡ рд╣реИ? рдореИрдВ рддреБрд░рдВрдд рдХрд╣реВрдВрдЧрд╛ - рдпрд╣ рдХреЛрдИ рдЖрд╕рд╛рди рдХрд╛рдо рдирд╣реАрдВ рд╣реИред рдЖрдЗрдП рд╕рдВрднрд╛рд╡рд┐рдд рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рджреЗрдЦреЗрдВред
рдЖрдк рд╕реЛрдЪрддреЗ рд╣реИрдВ: тАЬ
рдЖрдк рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдореЗрдВ рдХреЛрдб рдХреЛ рдХрд┐рддрдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдХреНрдпрд╛ рдЧреЛ рдкрд░ рдЗрддрдирд╛ рднрдпрд╛рдирдХ рдХреЛрдб рд▓рд┐рдЦрдирд╛ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдЙрд╕рдХрд╛ рд▓реЗрдЦрдХ рдХрдВрдкрдиреА рдореЗрдВ рдЕрдкрд░рд┐рд╣рд╛рд░реНрдп рд╣реЛ рдЬрд╛рдП? ┬╗рдЪрд┐рдВрддрд╛ рдордд рдХрд░реЛ рдЬрдм рдореИрдВ рдПрдХ рдЫрд╛рддреНрд░ рдерд╛, рддреЛ рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдереА рдЬрд┐рд╕рдореЗрдВ рдореИрдВрдиреЗ рд╕реНрдирд╛рддрдХ рдЫрд╛рддреНрд░ рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдЦрд┐рдд рдХрд┐рд╕реА рдФрд░ рдХреЗ рд▓рд┐рд╕реНрдк-рдИ рдХреЛрдб рдХрд╛ рд╕рдорд░реНрдерди рдХрд┐рдпрд╛ рдерд╛ред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╡рд╣ рд▓рд┐рд╕реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдлреЛрд░рдЯреНрд░рд╛рди-рдИ рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣реЗред рдХреЛрдб рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
(defun add-mult-pi (in1 in2) (setq a in1) (setq b in2) (setq c (+ ab)) (setq d (* 3.1415 c) d )
рдРрд╕реЗ рдХреЛрдб рдХреА рджрд░реНрдЬрдиреЛрдВ рдлрд╛рдЗрд▓реЗрдВ рдереАрдВред рд╡рд╣ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдмрд╣реБрдд рднрдпрд╛рдирдХ рдФрд░ рдмрд┐рд▓реНрдХреБрд▓ рд╢рд╛рдирджрд╛рд░ рдерд╛ред рдореИрдВрдиреЗ рдЗрд╕реЗ рдЬрд╛рдирдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдореЗрдВ рдорд╣реАрдиреЛрдВ рд▓рдЧрд╛ рджрд┐рдПред рдЗрд╕рдХреА рддреБрд▓рдирд╛ рдореЗрдВ, рдЧреЛ рдкрд░ рдмреБрд░рд╛ рдХреЛрдб рд▓рд┐рдЦрдирд╛ рдХреЗрд╡рд▓ рдПрдХ рдереВрдХ рд╣реИред
рдЖрдкрдХреЗ рдХреЛрдб рдХреЛ рдЕрд╕рдорд░реНрдерд┐рдд рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рдо рдХреЗрд╡рд▓ рдХреБрдЫ рд╣реА рджреЗрдЦреЗрдВрдЧреЗред рдмреБрд░рд╛рдИ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рдЕрдЪреНрдЫрд╛ рдХрд░рдирд╛ рд╕реАрдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдкрд╣рд▓реЗ рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ "рдЕрдЪреНрдЫрд╛" рдЧреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреИрд╕реЗ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рд╣рдо рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд рдХреИрд╕реЗ рджреЗрдЦрддреЗ рд╣реИрдВред
рдЦрд░рд╛рдм рдкреИрдХреЗрдЬрд┐рдВрдЧ
рдкреИрдХреЗрдЬ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрд╕рд╛рди рд╡рд┐рд╖рдп рд╣реИред рдХреИрд╕реЗ рдХреЛрдб рд╕рдВрдЧрдарди рд╣рд╛рдирд┐ рдкрдардиреАрдпрддрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?
рдЧреЛ рдореЗрдВ, рдкреИрдХреЗрдЬ рдирд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд┐рд░реНрдпрд╛рдд рдХреА рдЧрдИ рдЗрдХрд╛рдИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, `
fmt.Println` рдпрд╛` http.RegisterFunc` ) рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЪреВрдВрдХрд┐ рд╣рдо рдкреИрдХреЗрдЬ рдХрд╛ рдирд╛рдо рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, "рдЕрдЪреНрдЫрд╛" рдЧреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдирд╛рдо рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдирд┐рд░реНрдпрд╛рддрд┐рдд рдЗрдХрд╛рдЗрдпрд╛рдБ рдХреНрдпрд╛ рд╣реИрдВред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЙрдкрдпреЛрдЧ рдкреИрдХреЗрдЬ рдирд╣реАрдВ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рд╣рдорд╛рд░реЗ рд▓рд┐рдП '
use.JSONMarshal ' рдЬреИрд╕реЗ рдирд╛рдо рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ - рд╣рдореЗрдВ '
json.Marshal` рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
"рдЕрдЪреНрдЫрд╛" рдЧреЛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рднреА рдбреАрдПрдУ рдпрд╛ рдореЙрдбрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдкреИрдХреЗрдЬ рдирд╣реАрдВ рдмрдирд╛рддреЗ рд╣реИрдВред рдЗрд╕ рд╢рдмреНрдж рд╕реЗ рдЕрдкрд░рд┐рдЪрд┐рдд рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП, DAO рдПрдХ "
рдбреЗрдЯрд╛ рдПрдХреНрд╕реЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ " -рдПрдХ рдХреЛрдб рд▓реЗрдпрд░ рд╣реИ рдЬреЛ рдЖрдкрдХреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдЗрдВрдЯрд░реИрдХреНрдЯ рдХрд░рддрд╛ рд╣реИред рдореИрдВ рдПрдХ рдРрд╕реА рдХрдВрдкрдиреА рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рдерд╛ рдЬрд╣рд╛рдБ 6 рдЬрд╛рд╡рд╛ рд╕реЗрд╡рд╛рдУрдВ рдиреЗ рдЙрд╕реА рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реА DAO рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЖрдпрд╛рдд рдХрд┐рдпрд╛, рдЬрд┐рд╕реЗ рдЙрдиреНрд╣реЛрдВрдиреЗ рд╕рд╛рдЭрд╛ рдХрд┐рдпрд╛, рдХреНрдпреЛрдВрдХрд┐ "
... рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ, рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, рдорд╛рдЗрдХреНрд░реЛрд╕реЛрд░реНрд╕реЗрдЬ рд╕рдорд╛рди рд╣реИрдВ ... "ред
рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЕрдкрдиреЗ рд╕рднреА рдбреАрдПрдУ рдХреЗ рд╕рд╛рде рдПрдХ рдЕрд▓рдЧ рдкреИрдХреЗрдЬ рд╣реИ, рддреЛ рдпрд╣ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рд╕рдВрдХреБрд▓ рдХреЗ рдмреАрдЪ рдПрдХ рдкрд░рд┐рдкрддреНрд░ рдирд┐рд░реНрднрд░рддрд╛ рдорд┐рд▓реЗрдЧреА, рдЬрд┐рд╕реЗ рдЧреЛ рдореЗрдВ рдирд┐рд╖рд┐рджреНрдз рд╣реИред рдФрд░ рдЕрдЧрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХрдИ рд╕реЗрд╡рд╛рдПрдБ рд╣реИрдВ рдЬреЛ рдЗрд╕ DAO рдкреИрдХреЗрдЬ рдХреЛ рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЛрдбрд╝рддреА рд╣реИрдВ, рддреЛ рдЖрдк рдПрдХ рдРрд╕реА рд╕реНрдерд┐рддрд┐ рд╕реЗ рднреА рдЬреВрдЭ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд╣рд╛рдБ рдПрдХ рд╕реЗрд╡рд╛ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд▓рд┐рдП рдЖрдкрдХреА рд╕рднреА рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЕрдиреНрдпрдерд╛ рдХреБрдЫ рдЯреВрдЯ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕реЗ рдПрдХ рд╡рд┐рддрд░рд┐рдд рдореЛрдиреЛрд▓рд┐рде рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЕрджреНрдпрддрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░реВрдк рд╕реЗ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред
рдЬрдм рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдкреИрдХреЗрдЬрд┐рдВрдЧ рдХреЛ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЗрд╕рд╕реЗ рдХреНрдпрд╛ рдмреБрд░рд╛ рд╣реЛрддрд╛ рд╣реИ, "рдмреБрд░рд╛рдИ рдХреА рд╕реЗрд╡рд╛ рд╢реБрд░реВ рдХрд░рдирд╛" рд╕рд░рд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдЕрдкрдиреЗ рдХреЛрдб рдХреЛ рдЦрд░рд╛рдм рддрд░реАрдХреЗ рд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░реЗрдВ рдФрд░ рдЕрдкрдиреЗ рдкреИрдХреЗрдЬреЛрдВ рдХреЛ рдЦрд░рд╛рдм рдирд╛рдо рджреЗрдВред
рдореЙрдбрд▓ , рдЙрдкрдпреЛрдЧ рдФрд░
рдбрд╛рдУ рдЬреИрд╕реЗ рдкреИрдХреЗрдЬреЛрдВ рдореЗрдВ рдЕрдкрдиреЗ рдХреЛрдб рдХреЛ рддреЛрдбрд╝реЗрдВред рдпрджрд┐ рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрд░рд╛рдЬрдХрддрд╛ рдкреИрджрд╛ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЕрдкрдиреА рдмрд┐рд▓реНрд▓реА рдпрд╛ рдЕрдкрдиреЗ рдкрд╕рдВрджреАрджрд╛ рд░рдВрдЧ рдХреЗ рд╕рдореНрдорд╛рди рдореЗрдВ рдкреИрдХреЗрдЬ рдмрдирд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рдЬрдм рд▓реЛрдЧреЛрдВ рдХреЛ рдЖрдкрдХреЗ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреЗ рдХрд╛рд░рдг рдЪрдХреНрд░реАрдп рдирд┐рд░реНрднрд░рддрд╛ рдпрд╛ рд╡рд┐рддрд░рд┐рдд рдореЛрдиреЛрд▓рд┐рде рдХреЗ рд╕рд╛рде рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдЕрдкрдиреА рдЖрдВрдЦреЛрдВ рдХреЛ рд░реЛрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдмрддрд╛рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рд╡реЗ рд╕рд┐рд░реНрдл рдЧрд▓рдд рдХрд░рддреЗ рд╣реИрдВ ...
рдЕрдиреБрдЪрд┐рдд рдЗрдВрдЯрд░рдлреЗрд╕
рдЕрдм рдЬрдмрдХрд┐ рд╣рдорд╛рд░реЗ рд╕рднреА рдкреИрдХреЗрдЬ рджреВрд╖рд┐рдд рд╣реИрдВ, рд╣рдо рдЗрдВрдЯрд░рдлреЗрд╕ рдкрд░ рдЖрдЧреЗ рдмрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред рдЧреЛ рдореЗрдВ рдЗрдВрдЯрд░рдлреЗрд╕реЗрд╕ рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдХреЗ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреА рддрд░рд╣ рдирд╣реАрдВ рд╣реИрдВред рдпрд╣ рддрдереНрдп рдХрд┐ рдЖрдк рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдпрд╣ рдШреЛрд╖рдгрд╛ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкрд╣рд▓реА рдмрд╛рд░ рдореЗрдВ рд╣реА рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЙрд▓рдЯ рджреЗрддрд╛ рд╣реИред
рдЕрдореВрд░реНрдд рдкреНрд░рдХрд╛рд░ рд╡рд╛рд▓реА рдЕрдзрд┐рдХрд╛рдВрд╢ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ, рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реЗ рдкрд╣рд▓реЗ рдпрд╛ рдЙрд╕реА рд╕рдордп рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЖрдкрдХреЛ рдпрд╣ рдХрдо рд╕реЗ рдХрдо рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдпрджрд┐ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдирд╣реАрдВ рдмрдирд╛рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдмрд╛рдж рдореЗрдВ рдЗрд╕ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рдХреЛрдб рдХреЛ рддреЛрдбрд╝реЗ рдмрд┐рдирд╛ рдЗрд╕реЗ рд╕рдореНрдорд┐рд▓рд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреЛ рдЗрд╕реЗ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рдХрд╛рд░ рдХреЗ рдмрдЬрд╛рдп рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд▓рд┐рдВрдХ рдХреЗ рд╕рд╛рде рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ред
рдЗрд╕ рдХрд╛рд░рдг рд╕реЗ, рдЬрд╛рд╡рд╛ рдХреЛрдб рдореЗрдВ рдЕрдХреНрд╕рд░ рдХрдИ рддрд░реАрдХреЛрдВ рдХреЗ рд╕рд╛рде рд╡рд┐рд╢рд╛рд▓ рд╕реЗрд╡рд╛ рдЗрдВрдЯрд░рдлреЗрд╕ рд╣реЛрддреЗ рд╣реИрдВред рдХрдХреНрд╖рд╛рдПрдВ рдЬреЛ рдЗрди рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреА рд╣реИрдВ, рдлрд┐рд░ рдЙрдирдХреА рдЬрд╝рд░реВрд░рдд рдХреЗ рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИрдВ рдФрд░ рдмрд╛рдХреА рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рддреА рд╣реИрдВред рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдирд╛ рд╕рдВрднрд╡ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк рдЕрдореВрд░реНрддрддрд╛ рдХрд╛ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реНрддрд░ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рдФрд░ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрддреЗ рд╕рдордп, рдЖрдк рдЕрдХреНрд╕рд░ рдЙрди рддрд░реАрдХреЛрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рдирдХреА рдЖрдкрдХреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
рдЧреЛ рдореЗрдВ, рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХреЛ рдХрд┐рди рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдХреЛрдб рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдорд╛рд▓рд┐рдХ рд╣реИ, рдЕрдиреНрдп рддрд░реАрдХреЗ рд╕реЗ рдирд╣реАрдВред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдЧрд░ рдЖрдк рдЗрд╕рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрдИ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рдХреЗрд╡рд▓ рдЖрдкрдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рддрд░реАрдХреЗ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдПрдХ рд╣реА рдкреНрд░рдХрд╛рд░ рдХреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рдЕрдиреНрдп рдХреЛрдб рдЕрдиреНрдп рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдЧрд╛ рдЬреЛ рдХреЗрд╡рд▓ рдЙрд╕ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдХрд╡рд░ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЖрдорддреМрд░ рдкрд░, рдЗрди рдЗрдВрдЯрд░рдлреЗрд╕ рдореЗрдВ рдХреЗрд╡рд▓ рдХреБрдЫ рддрд░реАрдХреЗ рд╣реЛрддреЗ рд╣реИрдВред
рдЗрд╕рд╕реЗ рдЖрдкрдХреЗ рдХреЛрдб рдХреЛ рд╕рдордЭрдирд╛ рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдПрдХ рд╡рд┐рдзрд┐ рдШреЛрд╖рдгрд╛ рди рдХреЗрд╡рд▓ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреА рд╣реИ рдХрд┐ рдЙрд╕реЗ рдХрд┐рд╕ рдбреЗрдЯрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдпрд╣ рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╡рд╣ рдХрд┐рд╕ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдпрд╣ рдПрдХ рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдЕрдЪреНрдЫреЗ рдЧреЛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╕рд▓рд╛рд╣ рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреЗ рд╣реИрдВ: "
рдЗрдВрдЯрд░рдлреЗрд╕ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдВ, рд╕рдВрд░рдЪрдирд╛рдПрдВ рд▓реМрдЯрд╛рдПрдВ ред"
рд▓реЗрдХрд┐рди рд╕рд┐рд░реНрдл рдЗрд╕рд▓рд┐рдП рдХрд┐ рдпрд╣ рдЕрдЪреНрдЫрд╛ рдЕрднреНрдпрд╛рд╕ рд╣реИ рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдРрд╕рд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП ...
рдЕрдкрдиреЗ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ "рджреБрд╖реНрдЯ" рдмрдирд╛рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рд╣реИ рдХрд┐ рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдХреЗ рдЗрдВрдЯрд░рдлреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдкрд░ рд▓реМрдЯреЗрдВ, рдЕрд░реНрдерд╛рддреНред рдХреЛрдб рдХреЗ рднрд╛рдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдЧреНрд░рд┐рдо рдореЗрдВ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВред рдХрдИ рддрд░реАрдХреЛрдВ рдХреЗ рд╕рд╛рде рд╡рд┐рд╢рд╛рд▓ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ рдЬреЛ рд╕рднреА рд╕реЗрд╡рд╛ рдЧреНрд░рд╛рд╣рдХреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реЛ рдкрд╛рддрд╛ рд╣реИ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд┐рди рддрд░реАрдХреЛрдВ рдХреА рдЬрд░реВрд░рдд рд╣реИред рдпрд╣ рдХреЛрдб, рдФрд░ рдЬрдЯрд┐рд▓рддрд╛ рдХреЛ рдЬрдЯрд┐рд▓ рдХрд░рддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, "рдмреБрд░рд╛рдИ" рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рджреЛрд╕реНрдд рд╣реИред
рдкрд╛рд╕ рдвреЗрд░ рд╕рдВрдХреЗрдд
рдЗрд╕рдХрд╛ рдХреНрдпрд╛ рдЕрд░реНрде рд╣реИ рдпрд╣ рд╕рдордЭрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рдереЛрдбрд╝рд╛ рд╕рд╛ рджрд░реНрд╢рди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рд╡рд┐рдЪрд▓рд┐рдд рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рд╕реЛрдЪрддреЗ рд╣реИрдВ, рдкреНрд░рддреНрдпреЗрдХ рд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдпрдХреНрд░рдо рдПрдХ рд╣реА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рдЗрд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдП рдЧрдП рдбреЗрдЯрд╛ рдХреЛ рджреВрд╕рд░реЗ рд╕реНрдерд╛рди рдкрд░ рднреЗрдЬрддрд╛ рд╣реИред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ, рднрд▓реЗ рд╣реА рдЖрдк рдкреЗрд░реЛрд▓ рд╕рд┐рд╕реНрдЯрдо рд▓рд┐рдЦрддреЗ рд╣реЛрдВ, HTTP рд░рд┐рдХреНрд╡реЗрд╕реНрдЯ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╡реЗрдм рдкреЗрдЬ рд▓реМрдЯрд╛рддреЗ рд╣реИрдВ, рдпрд╛ рдлрд┐рд░ рдЬреЙрдпрд╕реНрдЯрд┐рдХ рдХреЛ рдЪреЗрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдЯрди рдХреНрд▓рд┐рдХ - рдкреНрд░реЛрдЧреНрд░рд╛рдо рдбреЗрдЯрд╛ рдкреНрд░реЛрд╕реЗрд╕ рдХрд░рддреЗ рд╣реИрдВред
рдпрджрд┐ рд╣рдо рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдпрд╣ рд╕рдордЭрдирд╛ рдЖрд╕рд╛рди рд╣реИ рдХрд┐ рдбреЗрдЯрд╛ рдХреИрд╕реЗ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реЛрддрд╛ рд╣реИред рдФрд░ рдЗрд╕рд▓рд┐рдП рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рджреМрд░рд╛рди рдбреЗрдЯрд╛ рдХреЛ рдпрдерд╛рд╕рдВрднрд╡ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рд░рдЦрдиреЗ рдХрд╛ рдЕрдЪреНрдЫрд╛ рдЕрднреНрдпрд╛рд╕ рд╣реИред рдХреНрдпреЛрдВрдХрд┐ рдбреЗрдЯрд╛ рдЬреЛ рдирд╣реАрдВ рдмрджрд▓рддрд╛ рд╣реИ рд╡рд╣ рдбреЗрдЯрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЯреНрд░реИрдХ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИред
рдЧреЛ рдореЗрдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕рдВрджрд░реНрдн рдкреНрд░рдХрд╛рд░ рдФрд░ рдореВрд▓реНрдп рдкреНрд░рдХрд╛рд░ рд╣реИрдВред рджреЛрдиреЛрдВ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рдЪрд░ рдбреЗрдЯрд╛ рдХреА рдПрдХ рдкреНрд░рддрд┐ рдпрд╛ рдореЗрдореЛрд░реА рдореЗрдВ рдбреЗрдЯрд╛ рдХреЗ рд╕реНрдерд╛рди рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИред рдкреЙрдЗрдВрдЯрд░реНрд╕, рд╕реНрд▓рд╛рдЗрд╕, рдореИрдкреНрд╕, рдЪреИрдирд▓, рдЗрдВрдЯрд░рдлреЗрд╕ рдФрд░ рдлрд╝рдВрдХреНрд╢рдВрд╕ рд╕рдВрджрд░реНрдн рдкреНрд░рдХрд╛рд░ рд╣реИрдВ, рдФрд░ рдмрд╛рдХреА рд╕рдм рдПрдХ рдореВрд▓реНрдп рдкреНрд░рдХрд╛рд░ рд╣реИред рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рджреВрд╕рд░реЗ рд╡реИрд░рд┐рдПрдмрд▓ рдкрд░ рд╡реИрд▓реНрдпреВ рдЯрд╛рдЗрдк рд╡реИрд░рд┐рдПрдмрд▓ рдЕрд╕рд╛рдЗрди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рд╡реИрд▓реНрдпреВ рдХреА рдПрдХ рдХреЙрдкреА рдмрдирд╛рддрд╛ рд╣реИ; рдПрдХ рдЪрд░ рдХреЛ рдмрджрд▓рдиреЗ рд╕реЗ рджреВрд╕рд░реЗ рдХрд╛ рдорд╛рди рдирд╣реАрдВ рдмрджрд▓рддрд╛ рд╣реИред
рдПрдХ рд╕рдВрджрд░реНрдн рдкреНрд░рдХрд╛рд░ рдХреЗ рдПрдХ рдЪрд░ рдХреЛ рдПрдХ рд╕рдВрджрд░реНрдн рдкреНрд░рдХрд╛рд░ рдХреЗ рджреВрд╕рд░реЗ рдЪрд░ рдореЗрдВ рдЕрд╕рд╛рдЗрди рдХрд░рдиреЗ рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╡реЗ рджреЛрдиреЛрдВ рдПрдХ рд╣реА рдореЗрдореЛрд░реА рдХреНрд╖реЗрддреНрд░ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЖрдк рдЙрд╕ рдбреЗрдЯрд╛ рдХреЛ рдмрджрд▓рддреЗ рд╣реИрдВ рдЬреЛ рдкрд╣рд▓реЗ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЖрдк рдЙрд╕ рдбреЗрдЯрд╛ рдХреЛ рдмрджрд▓рддреЗ рд╣реИрдВ рдЬреЛ рджреВрд╕рд░реЗ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╕реНрдерд╛рдиреАрдп рдЪрд░ рдФрд░ рдлрд╝рдВрдХреНрд╢рди рдкреИрд░рд╛рдореАрдЯрд░ рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рд╣реА рд╣реИред
func main() {
рдХрд┐рдВрдб рдЧреЛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдпрд╣ рд╕рдордЭрдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдбреЗрдЯрд╛ рдХреИрд╕реЗ рдПрдХрддреНрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдиреЛрдВ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдпрдерд╛рд╕рдВрднрд╡ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред рдЕрдВрддрд┐рдо рд░реВрдк рдореЗрдВ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдпрд╛ рдлрд╝рдВрдХреНрд╢рди рдорд╛рдкрджрдВрдбреЛрдВ рдореЗрдВ рдлрд╝реАрд▓реНрдб рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЧреЛ рдореЗрдВ рдХреЛрдИ рд░рд╛рд╕реНрддрд╛ рдирд╣реАрдВ рд╣реИред рдпрджрд┐ рдХреЛрдИ рдлрд╝рдВрдХреНрд╢рди рдорд╛рди рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдмрджрд▓рдиреЗ рд╕реЗ рдХреЙрд▓рд┐рдВрдЧ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдЪрд░ рдирд╣реАрдВ рдмрджрд▓реЗ рдЬрд╛рдПрдВрдЧреЗред рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рд╕рднреА рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓рд┐рдВрдЧ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдорд╛рди рд╡рд╛рдкрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдпрджрд┐ рдЖрдк рдорд╛рди рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ рдПрдХ рд╕рдВрд░рдЪрдирд╛ рдХреЛ рднрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рдбреЗрдЯрд╛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рд╕реЗ рдбрд░ рдирд╣реАрдВ рд╕рдХрддреЗ, рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рд╕рдордЭрддреЗ рд╣реИрдВ рдХрд┐ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдХреНрд╖реЗрддреНрд░ рдХрд╣рд╛рдВ рд╕реЗ рдЖрдпрд╛ рд╣реИред
type Foo struct { A int B string } func getA() int { return 20 } func getB(i int) string { return fmt.Sprintf("%d",i*2) } func main() { f := Foo{} fA = getA() fB = getB(fA)
рдЦреИрд░, рд╣рдо рдХреИрд╕реЗ тАЬрджреБрд╖реНрдЯтАЭ рдмрди рдЬрд╛рддреЗ рд╣реИрдВ? рдмрд╣реБрдд рд╕рд░рд▓ - рдЗрд╕ рдореЙрдбрд▓ рдХреЛ рдЪрд╛рд▓реВ рдХрд░рдирд╛ред
рд╡рд╛рдВрдЫрд┐рдд рдорд╛рдиреЛрдВ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдЖрдк рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реВрдЪрдХ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред рдЪреВрдВрдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рдВрдХреНрд╢рди рдХреА рдЕрдкрдиреА рд╕рдВрд░рдЪрдирд╛ рд╣реЛрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рд╣реИ рдХрд┐ рдХреМрди рд╕реЗ рдлрд╝реАрд▓реНрдб рдмрджрд▓ рд░рд╣реЗ рд╣реИрдВ, рдкреВрд░реЗ рдХреЛрдб рдХреЛ рджреЗрдЦрдирд╛ рд╣реИред рдЖрдкрдХреЗ рдкрд╛рд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдмреАрдЪ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рднреА рд╣реЛ рд╕рдХрддреА рд╣реИрдВ - 1 рдлрд╝рдВрдХреНрд╢рди 2 рдлрд╝рдВрдХреНрд╢рди рджреНрд╡рд╛рд░рд╛ рдЖрд╡рд╢реНрдпрдХ рдбреЗрдЯрд╛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдХреЛрдб рдореЗрдВ рд╣реА, рдХреБрдЫ рднреА рдЗрдВрдЧрд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рдЖрдк рдЕрдкрдиреА рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдмрдирд╛рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреЛрдИ рднреА рдпрд╣ рдирд╣реАрдВ рд╕рдордЭ рдкрд╛рдПрдЧрд╛ рдХрд┐ рдЖрдкрдХрд╛ рдХреЛрдб рдХреНрдпрд╛ рдХрд░ рд░рд╣рд╛ рд╣реИред
type Foo struct { A int B string } func setA(f *Foo) { fA = 20 }
рджрд╣рд╢рдд рдлреИрд▓рд╛рдиреЗ рд╡рд╛рд▓рд╛
рдЕрдм рд╣рдо рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдирд╛ рд╢реБрд░реВ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдЖрдк рд╢рд╛рдпрдж рд╕реЛрдЪрддреЗ рд╣реИрдВ рдХрд┐ рд▓рдЧрднрдЧ 75% рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд▓рд┐рдЦрдирд╛ рдмреБрд░рд╛ рд╣реИ, рдФрд░ рдореИрдВрдиреЗ рдпрд╣ рдирд╣реАрдВ рдХрд╣рд╛ рдХрд┐ рдЖрдк рдЧрд▓рдд рд╣реИрдВред рдЧреЛ рдХреЛрдб рдХреЛ рдЕрдХреНрд╕рд░ рд╣реЗрдб-рдЯреВ-рдЯреЛ рдПрд░рд░ рд╣реИрдВрдбрд▓рд┐рдВрдЧ рд╕реЗ рдЖрдмрд╛рдж рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЙрдиреНрд╣реЗрдВ рдЗрддрдирд╛ рд╕реАрдзрд╛ рдирд╣реАрдВ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛрдЧрд╛ред рдЧрд▓рддрд┐рдпрд╛рдБ рд╣реЛрддреА рд╣реИрдВ, рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╕рдВрднрд╛рд▓рдирд╛ рд╣реИ рдЬреЛ рд╢реБрд░реБрдЖрддреА рд▓реЛрдЧреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдкреЗрд╢реЗрд╡рд░реЛрдВ рдХреЛ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред рд╕реНрд▓реИрдб рдПрд░рд░ рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдЕрд╕реНрдерд┐рд░ рдкреНрд░реЛрдЧреНрд░рд╛рдореНрд╕ рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдбрд┐рдмрдЧ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ рдФрд░ рдмрдирд╛рдП рд░рдЦрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред рдХрднреА-рдХрднреА "рдЕрдЪреНрдЫрд╛" рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рд╣реЛрдиреЗ рдХрд╛ рдЕрд░реНрде рд╣реИ "рддрдирд╛рд╡"ред
func (dus DBUserService) Load(id int) (User, error) { rows, err := dus.DB.Query("SELECT name FROM USERS WHERE ID = ?", id) if err != nil { return User{}, err } if !rows.Next() { return User{}, fmt.Errorf("no user for id %d", id) } var name string err = rows.Scan(&name) if err != nil { return User{}, err } err = rows.Close() if err != nil { return User{}, err } return User{Id: id, Name: name}, nil }
рд╕реА ++, рдкрд╛рдпрдерди, рд░реВрдмреА рдФрд░ рдЬрд╛рд╡рд╛ рдЬреИрд╕реА рдХрдИ рднрд╛рд╖рд╛рдПрдВ, рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрд╡рд╛рджреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИрдВред рдЕрдЧрд░ рдХреБрдЫ рдЧрд▓рдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЗрди рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдПрдХ рдЕрдкрд╡рд╛рдж рдХреЛ рдлреЗрдВрдХ рджреЗрддреЗ рд╣реИрдВ рдпрд╛ рдлреЗрдВрдХ рджреЗрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдХреБрдЫ рдХреЛрдб рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреА рдЙрдореНрдореАрдж рд╣реЛрддреА рд╣реИред рдмреЗрд╢рдХ, рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЧреНрд░рд╛рд╣рдХ рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рд╕реНрдерд╛рди рдкрд░ рд╕рдВрднрд╛рд╡рд┐рдд рддреНрд░реБрдЯрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХрдирд╛ рд╕рдВрднрд╡ рд╣реЛред рдЪреВрдБрдХрд┐, рдЬрд╛рд╡рд╛ (рдЕрдкрд╡рд╛рдж рдХреЗ рдмрд┐рдирд╛ рдХреЛрдИ рдЗрд░рд╛рджрд╛ рдирд╣реАрдВ) рдЕрдкрд╡рд╛рджреЛрдВ рдХреА рдЬрд╛рдБрдЪ рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдЕрдкрд╡рд╛рдж рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рднрд╛рд╖рд╛рдУрдВ рдпрд╛ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рд╡рд┐рдзрд┐ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИред рддреЛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреИрд╕реЗ рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдХреМрди рд╕реЗ рдЕрдкрд╡рд╛рджреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рдХрд░рдирд╛ рд╣реИ? рдЙрдирдХреЗ рдкрд╛рд╕ рджреЛ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ:
- рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╡реЗ рд╕рднреА рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд╕рднреА рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЙрдирдХреЗ рдХреЛрдб рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рд╕рднреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЬрд┐рдиреНрд╣реЗрдВ рдХреЙрд▓ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЖрджрд┐ред
- рджреВрд╕рд░реЗ, рд╡реЗ рдкреНрд░рд▓реЗрдЦрди рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВ рдкрдХреНрд╖рдкрд╛рддреА рд╣реЛ рд╕рдХрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЕрдиреБрднрд╡ рдореБрдЭреЗ рдкреНрд░рд▓реЗрдЦрди рдкрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рднрд░реЛрд╕рд╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред
рддреЛ, рд╣рдо рдЗрд╕ рдмреБрд░рд╛рдИ рдХреЛ рдЧреЛ рдХреЗ рдкрд╛рд╕ рдХреИрд╕реЗ рд▓рд╛рддреЗ рд╣реИрдВ? рдШрдмрд░рд╛рд╣рдЯ (
рдШрдмрд░рд╛рд╣рдЯ ) рдФрд░ рд░рд┐рдХрд╡рд░реА (
рдареАрдХ рд╣реЛрдирд╛ ), рдмрд┐рд▓реНрдХреБрд▓! рдШрдмрд░рд╛рд╣рдЯ рдРрд╕реА рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХреА рдЧрдИ рд╣реИ, рдЬреИрд╕реЗ "рдбреНрд░рд╛рдЗрд╡ рдЧрд┐рд░ рдЧрдпрд╛" рдпрд╛ "рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛рд░реНрдб рдореЗрдВ рд╡рд┐рд╕реНрдлреЛрдЯ рд╣реЛ рдЧрдпрд╛ред" рд▓реЗрдХрд┐рди рдЗрд╕ рддрд░рд╣ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ - "рдХрд┐рд╕реА рдиреЗ int рдХреЗ рдмрдЬрд╛рдп рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкрд╛рд╕ рдХрд┐рдпрд╛"ред
рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЕрдиреНрдп, "рдХрдо рдкреНрд░рдмреБрджреНрдз рдбреЗрд╡рд▓рдкрд░реНрд╕" рдЕрдкрдиреЗ рдХреЛрдб рд╕реЗ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░ рджреЗрдВрдЧреЗред рдЗрд╕рд▓рд┐рдП, рдпрд╣рд╛рдБ PanicIfErr рдХрд╛ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╣рд╛рдпрдХ рдХрд╛рд░реНрдп рд╣реИред рдЕрдиреНрдп рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреА рдЧрд▓рддрд┐рдпреЛрдВ рдХреЛ рдШрдмрд░рд╛рд╣рдЯ рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
func PanicIfErr(err error) { if err != nil { panic(err) } }
рдЖрдк PanicIfErr рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреА рдЧрд▓рддрд┐рдпреЛрдВ рдХреЛ рд▓рдкреЗрдЯрдиреЗ, рдХреЛрдб рдХреЛ рд╕рдВрдкреАрдбрд╝рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдХреЛрдИ рдФрд░ рдЕрдзрд┐рдХ рдмрджрд╕реВрд░рдд рддреНрд░реБрдЯрд┐ рд╕реЗ рдирд┐рдкрдЯрдиреЗ! рдХреЛрдИ рднреА рдЧрд▓рддреА рдЕрдм рдПрдХ рдЖрддрдВрдХ рд╣реИред рдпрд╣ рдЗрддрдирд╛ рдЙрддреНрдкрд╛рджрдХ рд╣реИ!
func (dus DBUserService) LoadEvil(id int) User { rows, err := dus.DB.Query( "SELECT name FROM USERS WHERE ID = ?", id) PanicIfErr(err) if !rows.Next() { panic(fmt.Sprintf("no user for id %d", id)) } var name string PanicIfErr(rows.Scan(&name)) PanicIfErr(rows.Close()) return User{Id: id, Name: name} }
рдЖрдк рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрддрд┐ рдХреЛ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреА рд╢реБрд░реБрдЖрдд рдХреЗ рдХрд░реАрдм рдХрд╣реАрдВ рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╢рд╛рдпрдж рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ
рдорд┐рдбрд▓рд╡реЗрдпрд░ рдореЗрдВ ред рдФрд░ рдлрд┐рд░ рдХрд╣реЗрдВ рдХрд┐ рдЖрдк рди рдХреЗрд╡рд▓ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдмрд▓реНрдХрд┐ рдХрд┐рд╕реА рдФрд░ рдХрд╛ рдХреЛрдб рдХреНрд▓реАрдирд░ рднреА рдмрдирд╛рддреЗ рд╣реИрдВред рдЕрдЪреНрдЫрд╛рдИ рдХрд░рдХреЗ рдмреБрд░рд╛рдИ рдХрд░рдирд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреА рддрд░рд╣ рдХреА рдмреБрд░рд╛рдИ рд╣реИред
func PanicMiddleware(h http.Handler) http.Handler { return http.HandlerFunc( func(rw http.ResponseWriter, req *http.Request){ defer func() { if r := recover(); r != nil { fmt.Println(", - .") } }() h.ServeHTTP(rw, req) } ) }
рд╕рд╛рдЗрдб рдЗрдлреЗрдХреНрдЯреНрд╕ рд╕реЗрдЯ рдХрд░рдирд╛
рдЖрдЧреЗ рд╣рдо рдПрдХ рд╕рд╛рдЗрдб рдЗрдлреЗрдХреНрдЯ рдмрдирд╛рдПрдВрдЧреЗред рдпрд╛рдж рд░рдЦреЗрдВ, "рдЕрдЪреНрдЫрд╛" рдЧреЛ рдбреЗрд╡рд▓рдкрд░ рдпрд╣ рд╕рдордЭрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ рдХрд┐ рдбреЗрдЯрд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреИрд╕реЗ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдЬрд╛рдирдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рд╣реИ рдХрд┐ рдбреЗрдЯрд╛ рдХрд┐рд╕ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рддрд╛ рд╣реИ, рдЖрд╡реЗрджрди рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рдирд┐рд░реНрднрд░рддрд╛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╣реИред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╕рдорд╛рди рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдЕрдиреБрд░реВрдк рдЗрдХрд╛рдЗрдпрд╛рдВ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдмрд╣реБрдд рднрд┐рдиреНрди рд╣реЛ рд╕рдХрддреА рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдХреЛрдб рдЬреЛ рдореЗрдореЛрд░реА рдореЗрдВ рдбреЗрдЯрд╛ рд╕реНрдЯреЛрд░ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдПрдХ рдХреЛрдб рдЬреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдЙрд╕реА рдХрд╛рдо рдХреЗ рд▓рд┐рдП рдПрдХреНрд╕реЗрд╕ рдХрд░рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╕реНрдкрд╖реНрдЯ рдХреЙрд▓ рдХреЗ рдмрд┐рдирд╛ рдЧреЛ рдореЗрдВ рдирд┐рд░реНрднрд░рддрд╛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рд╣реИрдВред
рдХрдИ рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдХреА рддрд░рд╣, рдЧреЛ рдореЗрдВ рднреА рдЗрд╕реЗ рд╕реАрдзреЗ рд▓рд╛рдЧреВ рдХрд┐рдП рдмрд┐рдирд╛ рдХреЛрдб рдХреЛ рдЬрд╛рджреБрдИ рддрд░реАрдХреЗ рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдХреЛрдИ рдкреИрд░рд╛рдореАрдЯрд░ рдирд╣реАрдВ рдХреЗ рд╕рд╛рде init рдирд╛рдордХ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╢реБрд░реВ рд╣реЛрдЧрд╛ рдЬрдм рдкреИрдХреЗрдЬ рд▓реЛрдб рд╣реЛрддрд╛ рд╣реИред рдФрд░, рдЖрдЧреЗ рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЕрдЧрд░ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЗрдирд┐рдЯ рдпрд╛ рдПрдХ рдкреИрдХреЗрдЬ рдореЗрдВ рдХрдИ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рдХрдИ рдХрд╛рд░реНрдп рд╣реИрдВ, рддреЛ рд╡реЗ рд╕рднреА рд╢реБрд░реВ рд╣реЛ рдЬрд╛рдПрдВрдЧреЗред
package account type Account struct{ Id int UserId int } func init() { fmt.Println(" !") } func init() { fmt.Println(" , init()") }
рдЦрд╛рд▓реА рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЕрдХреНрд╕рд░ рдЦрд╛рд▓реА рдЖрдпрд╛рдд рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЧреЛ рдХреЗ рдкрд╛рд╕ рдЖрдпрд╛рддреЛрдВ рдХреЛ рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рддрд░реАрдХрд╛ рд╣реИ, рдЬреЛ 'рдЖрдпрд╛рдд _' github.com / lib / pq` рдХреА рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИред рдЬрдм рдЖрдк рдХрд┐рд╕реА рдЖрдпрд╛рддрд┐рдд рдкреИрдХреЗрдЬ рдХреЗ рд▓рд┐рдП рдПрдХ рдЦрд╛рд▓реА рдирд╛рдо рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ init рдкрджреНрдзрддрд┐ рдЪрд▓рддреА рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдкреИрдХреЗрдЬ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдХреЛ рдирд╣реАрдВ рджрд┐рдЦрд╛рддреА рд╣реИред рдХреБрдЫ рдЧреЛ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд▓рд┐рдП - рдЬреИрд╕реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдбреНрд░рд╛рдЗрд╡рд░ рдпрд╛ рдЫрд╡рд┐ рдкреНрд░рд╛рд░реВрдк - рдЖрдкрдХреЛ рдЦрд╛рд▓реА рдкреИрдХреЗрдЬ рдЖрдпрд╛рдд рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдХреЗ рдЙрдиреНрд╣реЗрдВ рд▓реЛрдб рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдмрд╕ init рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддрд╛рдХрд┐ рдкреИрдХреЗрдЬ рдЕрдкрдирд╛ рдХреЛрдб рдкрдВрдЬреАрдХреГрдд рдХрд░ рд╕рдХреЗред
package main import _ "github.com/lib/pq" func main() { db, err := sql.Open( "postgres", "postgres://jon@localhost/evil?sslmode=disable") }
рдФрд░ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдПрдХ "рдмреБрд░рд╛рдИ" рд╡рд┐рдХрд▓реНрдк рд╣реИред рдЬрдм рдЖрдк рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдХреЛрдб рдЬреЛ рдЬрд╛рджреБрдИ рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдбреЗрд╡рд▓рдкрд░ рдХреЗ рдирд┐рдпрдВрддреНрд░рдг рд╕реЗ рдкреВрд░реА рддрд░рд╣ рдмрд╛рд╣рд░ рд╣реИред рд╕рд░реНрд╡рд╢реНрд░реЗрд╖реНрда рдЕрднреНрдпрд╛рд╕ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрд╢рдВрд╕рд╛ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ - рдпреЗ рдЧреИрд░-рд╕реНрдкрд╖реНрдЯ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реИрдВ, рд╡реЗ рдХреЛрдб рдХреЛ рднреНрд░рдорд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЙрдиреНрд╣реЗрдВ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдЫрд┐рдкрд╛рдирд╛ рдЖрд╕рд╛рди рд╣реИред
рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, init рдлрд╝рдВрдХреНрд╢рди рд╣рдорд╛рд░реЗ рдмреБрд░реЗ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрджрд░реНрд╢ рд╣реИрдВред рдкреИрдХреЗрдЬреЛрдВ рдореЗрдВ рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдпрд╛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдЖрдк рдЕрдкрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдФрд░ рдЦрд╛рд▓реА рдЖрдпрд╛рдд рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдо рдЦрд╛рддреЗ рдХреЛ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╢реЗрд╖ рдЖрд╡реЗрджрди рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рддреЗ рд╣реИрдВ, рдФрд░ рдкреИрдХреЗрдЬ рдХреЛ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред
package account import ( "fmt" "github.com/evil-go/example/registry" ) type StubAccountService struct {} func (a StubAccountService) GetBalance(accountId int) int { return 1000000 } func init() { registry.Register("account", StubAccountService{}) }
рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рдЦрд╛рддреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЕрдкрдиреЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рдПрдХ рдЦрд╛рд▓реА рдЖрдпрд╛рдд рдбрд╛рд▓реЗрдВред рдЗрд╕рдХрд╛ рдореБрдЦреНрдп рдпрд╛ рд╕рдВрдмрдВрдзрд┐рдд рдХреЛрдб рд╣реЛрдирд╛ рдЬрд░реВрд░реА рдирд╣реАрдВ рд╣реИ - рдпрд╣ рд╕рд┐рд░реНрдл "рдХрд╣реАрдВ" рд╣реЛрдирд╛ рд╣реИред рдпрд╣ рдЬрд╛рджреВ рд╣реИ!
package main import ( _ "github.com/evil-go/example/account" "github.com/evil-go/example/registry" ) type Balancer interface { GetBalance(int) int } func main() { a := registry.Get("account").(Balancer) money := a.GetBalance(12345) }
рдпрджрд┐ рдЖрдк рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдореЗрдВ inits рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рддреБрд░рдВрдд рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдЕрдиреНрдп рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╣реИрд░рд╛рди рд╣реИрдВ рдХрд┐ рдпреЗ рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рдХреИрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХреА рдЧрдИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдХреИрд╕реЗ рдмрджрд▓рд╛ рдЬрд╛рдПред рдФрд░ рддреБрдорд╕реЗ рдЬреНрдпрд╛рджрд╛ рдмреБрджреНрдзрд┐рдорд╛рди рдХреЛрдИ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред
рдЬрдЯрд┐рд▓ рд╡рд┐рдиреНрдпрд╛рд╕
рдЕрднреА рднреА рдмрд╣реБрдд рдХреБрдЫ рд╣реИ рдЬреЛ рд╣рдо рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд╕рд╛рде рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк рдПрдХ "рдЕрдЪреНрдЫреЗ" рдбреЗрд╡рд▓рдкрд░ рд╣реИрдВ, рддреЛ рдЖрдк рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдмрд╛рдХреА рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╕реЗ рдЕрд▓рдЧ рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗред рдореБрдЦреНрдп () рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ, рдЖрдк рдкрд░реНрдпрд╛рд╡рд░рдг рд╕реЗ рдЪрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЙрди рдШрдЯрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдорд╛рдиреЛрдВ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдПрдХ рджреВрд╕рд░реЗ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВред рдЖрдкрдХреЗ рдШрдЯрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ, рдпрд╛ рдЙрдирдХреЗ рдЧреБрдгреЛрдВ рдХреЛ рдХреНрдпрд╛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рд░рд▓ рдШрдЯрдХреЛрдВ рдХреЗ рд▓рд┐рдП, рдЖрдк рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЧреБрдг рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП, рдЖрдк рдПрдХ рдлрд╝реИрдХреНрдЯрд░реА рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдПрдХ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдШрдЯрдХ рджреЗрддрд╛ рд╣реИред
func main() { b, err := ioutil.ReadFile("account.json") if err != nil { fmt.Errorf("error reading config file: %v", err) os.Exit(1) } m := map[string]interface{}{} json.Unmarshal(b, &m) prefix := m["account.prefix"].(string) maker := account.NewMaker(prefix) } type Maker struct { prefix string } func (m Maker) NewAccount(name string) Account { return Account{Name: name, Id: m.prefix + "-12345"} } func NewMaker(prefix string) Maker { return Maker{prefix: prefix} }
рд▓реЗрдХрд┐рди "рдмреБрд░рд╛рдИ" рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдкрддрд╛ рд╣реИ рдХрд┐ рдкреВрд░реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдмрд┐рдЦреЗрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред рдПрдХ рдкреИрдХреЗрдЬ рдореЗрдВ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╣реЛрдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЬреЛ рдЖрдкрдХреЗ рдкреИрдХреЗрдЬ рдХреЗ рдирд╛рдо рдФрд░ рдореВрд▓реНрдп рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдЬреЛ рдХрд┐ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдЙрд╕реА рд░реВрдк рдореЗрдВ рд▓реЗрддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рдХрдирд╡рд░реНрдЯ рдХрд░рддрд╛ рд╣реИред
рдпрджрд┐ рдпрд╣ рдмрд╣реБрдд "рдмреБрд░рд╛рдИ" рд▓рдЧрддрд╛ рд╣реИ, рддреЛ рдЕрдкрдиреЗ рдкреИрдХреЗрдЬ рдХреЗ рдЕрдВрджрд░ рд╕реЗ рдЧреБрдг рдлрд╝рд╛рдЗрд▓ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП init рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдФрд░ рдорд╛рди рд╕реНрд╡рдпрдВ рд╕реЗрдЯ рдХрд░реЗрдВред рдРрд╕рд╛ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рдЕрдиреНрдп рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рдЬреАрд╡рди рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛ рджрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк рдФрд░ рдореИрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ ...
Init рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдЖрдк рдХреЛрдб рдХреЗ рдкреАрдЫреЗ рдирдИ рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдХреЛрдИ рднреА рдЙрдиреНрд╣реЗрдВ рддрдм рддрдХ рдирд╣реАрдВ рдвреВрдВрдвреЗрдЧрд╛ рдЬрдм рддрдХ рдХрд┐ рд╡реЗ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдирд╣реАрдВ рдЖрддреЗ рдФрд░ рд╕рдм рдХреБрдЫ рдЧрд┐рд░ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдХреБрдЫ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рджрд░реНрдЬрдиреЛрдВ рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХреА рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ рдирд╣реАрдВ рдорд┐рд▓реЗрдЧрд╛ред рдпрджрд┐ рдЖрдк рдФрд░ рднреА "рджреБрд╖реНрдЯ рд╢рдХреНрддрд┐" рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рд╕рднреА рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдореЗрдВ рд╕рднреА рдЧреБрдгреЛрдВ рдХрд╛ рдЯреНрд░реИрдХ рд░рдЦрдиреЗ рдФрд░ рд╕рдордп-рд╕рдордп рдкрд░ "рднреВрд▓" рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдХреА рдмрдирд╛рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗ рд╕рдХрддреЗ рд╣реИрдВред рдкреНрд░реЙрдкрд░реНрдЯреА рдХреАрдкрд░ рдХреЗ рд░реВрдк рдореЗрдВ, рдЖрдк рдПрдХрдорд╛рддреНрд░ рд╡реНрдпрдХреНрддрд┐ рдмрди рдЬрд╛рддреЗ рд╣реИрдВ рдЬреЛ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдЪрд▓рд╛ рд╕рдХрддрд╛ рд╣реИред
func (m maker) NewAccount(name string) Account { return Account{Name: name, Id: m.prefix + "-12345"} } var Maker maker func init() { b, _ := ioutil.ReadFile("account.json") m := map[string]interface{}{} json.Unmarshal(b, &m) Maker.prefix = m["account.prefix"].(string) }
рдХрд╛рд░реНрдпрд╛рддреНрдордХрддрд╛ рд░реВрдкрд░реЗрдЦрд╛
рдЕрдВрдд рдореЗрдВ, рд╣рдо рд░реВрдкрд░реЗрдЦрд╛ рдмрдирд╛рдо рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд╡рд┐рд╖рдп рдкрд░ рдЖрддреЗ рд╣реИрдВред рдЕрдВрддрд░ рдмрд╣реБрдд рд╕реВрдХреНрд╖реНрдо рд╣реИред рдпрд╣ рдХреЗрд╡рд▓ рдЖрдХрд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╣реИ; рдЖрдкрдХреЗ рдкрд╛рд╕ рдмрдбрд╝реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдФрд░ рдЫреЛрдЯреЗ рдврд╛рдВрдЪреЗ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдЬрдм рдЖрдк рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛрдб рд╕реНрд╡рдпрдВ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдлреНрд░реЗрдорд╡рд░реНрдХ рдЖрдкрдХреЗ рдХреЛрдб рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рдЖрдк рдЕрдкрдирд╛ рдХреЛрдб рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рддрд░реАрдХреЗ рд╕реЗ рд▓рд┐рдЦреЗрдВ, рдЪрд╛рд╣реЗ рд╡рд╣ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдирд┐рдпрдореЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЖрдкрдХреЗ рддрд░реАрдХреЛрдВ рдХрд╛ рдирд╛рдордХрд░рдг рд╣реЛ, рдпрд╛ рдХрд┐ рд╡реЗ рдХреБрдЫ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рдЕрдиреБрд░реВрдк рд╣реЛрдВ, рдпрд╛ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдХреЛрдб рдХреЛ рдлреНрд░реЗрдорд╡рд░реНрдХ рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░реЗрдВред рдЖрдкрдХреЗ рд╕рднреА рдХреЛрдб рдХреЗ рд▓рд┐рдП рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреА рдЕрдкрдиреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдВ рд╣реИрдВред рдпрд╣реА рд╣реИ, рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЪреМрдЦрдЯреЗ рдЖрдкрдХреЛ рдЖрджреЗрд╢ рджреЗрддреЗ рд╣реИрдВред
рдЬрд╛рдУ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЬреБрдбрд╝реЗ рд╣реБрдП рд╣реИрдВред рдпрджреНрдпрдкрд┐, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдкреНрд░рддреНрдпреЗрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдбреЗрдЯрд╛ рдХреЛ рдкреНрд░реЗрд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИ, рдЖрдк рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рджреВрд╕рд░реЗ рдХреЗ рдЗрдирдкреБрдЯ рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдХрдиреЗрдХреНрдЯрд┐рдВрдЧ рдХреЛрдб рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВред
рд╕реАрдорд▓реЗрд╕ рд░реВрдк рд╕реЗ рдПрдХ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлреНрд░реЗрдорд╡рд░реНрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдХрдард┐рди рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╣рд░ рдлреНрд░реЗрдо рдХреЛрдб рдЬреАрд╡рди рдЪрдХреНрд░ рдкрд░ рдкреВрд░реНрдг рдирд┐рдпрдВрддреНрд░рдг рдЪрд╛рд╣рддрд╛ рд╣реИред рдЕрдХреНрд╕рд░ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлреНрд░реЗрдорд╡рд░реНрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рдлреНрд░реЗрдорд╡рд░реНрдХ рд▓реЗрдЦрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рде рдЖрдирд╛ рдФрд░ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЖрдкрд╕реА рд╕рдорд░реНрдерди рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдирд╛ рд╣реИред ┬л ┬╗ тАФ , .
, . ┬л┬╗, ┬л┬╗ ┬л┬╗.