рдЧреЛ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдкреНрд░рд╡рд╛рд╣ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ: рдпрджрд┐, рдХреЗ рд▓рд┐рдП, рд╕реНрд╡рд┐рдЪ, рдЧреЛрдЯреЛред рдПрдХ рдЕрд▓рдЧ рд╡реЗрдВ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдХреЛрдб рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЧреЛ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рднреА рд╣реИред рдЕрдм, рдореИрдВ рдХрдо рд╕рд╛рдорд╛рдиреНрдп рддрд░реАрдХреЛрдВ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛: рдбреЗрдлрд░, рдШрдмрд░рд╛рд╣рдЯ, рдФрд░ рдЙрдмрд░рдирд╛ред
рдбреЗрдлрд░ рдХрдорд╛рдВрдб рдПрдХ рд╕реВрдЪреА рдореЗрдВ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред рд▓рдВрдмрд┐рдд рдлрд╝рдВрдХреНрд╢рди рд╕реВрдЪреА рдкреВрд░реА рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдЗрд╕ рд▓рдВрдмрд┐рдд рдХреЙрд▓ рд╕реВрдЪреА рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдбреАрдлрд╝рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрдорддреМрд░ рдкрд░ рдЙрди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдХрд┐рд╕реА рд╕рдВрд╕рд╛рдзрди рдХреА рд░рд┐рд▓реАрдЬрд╝ рд╕реЗ рдирд┐рдкрдЯрддреЗ рд╣реИрдВред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рджреЗрдЦреЗрдВ рдЬреЛ рджреЛ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЦреЛрд▓рддрд╛ рд╣реИ рдФрд░ рдПрдХ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рджреВрд╕рд░реА рдлрд╝рд╛рдЗрд▓ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдХреЙрдкреА рдХрд░рддрд╛ рд╣реИ:
func CopyFile (dstName, srcName string ) ( int64 рд▓рд┐рдЦрд╛ рд╣реИ, рдЬрдм рддрдХ os.Error ) {
src, рдЗрд░реЗрдЯ: = os.Open (srcName, os.O_RDONLY, 0 )
рдЕрдЧрд░ рдЧрд▓рдд рд╣реИ! = nil {
рд╡рд╛рдкрд╕реА
}
dst, рдЗрд░реЗрдЯ: = os.Open (dstName, os.O_WRONLY | os.O_CREATE, 0644 )
рдЕрдЧрд░ рдЧрд▓рдд рд╣реИ! = nil {
рд╡рд╛рдкрд╕реА
}
рд▓рд┐рдЦрд┐рдд, рдЗрд░ = io.Copy (dst, src)
dst.Close ()
src.Close ()
рд╡рд╛рдкрд╕реА
}
рдХреЛрдб рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рдПрдХ рддреНрд░реБрдЯрд┐ рд╣реИред рдпрджрд┐ os.Open рдореЗрдВ рджреВрд╕рд░реА рдХреЙрд▓ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддреА рд╣реИ, рддреЛ рдлрд╝рдВрдХреНрд╢рди рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рдПрдЧрд╛, рдЬрд┐рд╕рд╕реЗ рдкрд╣рд▓реА рдлрд╝рд╛рдЗрд▓ рдЦреБрд▓реА рд░рд╣реЗрдЧреАред рджреВрд╕рд░реА рд╡рд╛рдкрд╕реА рд╕реЗ рдкрд╣рд▓реЗ src.Close () рдореЗрдВ рдХреЙрд▓ рдЬреЛрдбрд╝рдХрд░ рдЗрд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рдареАрдХ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрджрд┐ рдлрд╝рдВрдХреНрд╢рди рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИ, рддреЛ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдпрд╛рдж рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред рдЖрд╕реНрдердЧрд┐рдд рдЖрджреЗрд╢реЛрдВ рдХреЛ рджрд░реНрдЬ рдХрд░рдХреЗ, рдЖрдк рдХрд┐рд╕реА рднреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдмрдВрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
func CopyFile (dstName, srcName string ) ( int64 рд▓рд┐рдЦрд╛ рд╣реИ, рдЬрдм рддрдХ os.Error ) {
src, рдЗрд░реЗрдЯ: = os.Open (srcName, os.O_RDONLY, 0 )
рдЕрдЧрд░ рдЧрд▓рдд рд╣реИ! = nil {
рд╡рд╛рдкрд╕реА
}
defer src.Close ()
dst, рдЗрд░реЗрдЯ: = os.Open (dstName, os.O_WRONLY | os.O_CREATE, 0644 )
рдЕрдЧрд░ рдЧрд▓рдд рд╣реИ! = nil {
рд╡рд╛рдкрд╕реА
}
defer dst.Close ()
рд╡рд╛рдкрд╕реА io.Copy (dst, src)
}
рдбрд┐рдлрд░ рдХрдорд╛рдВрдб рдЖрдкрдХреЛ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЦреЛрд▓рдиреЗ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдлрд╝рд╛рдЗрд▓ рдмрдВрдж рд╣реИ, рднрд▓реЗ рд╣реА рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХреЗ рдмрд┐рдВрджреБрдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣реЛред
рдЖрд╕реНрдердЧрд┐рдд рдЖрджреЗрд╢реЛрдВ рдХрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рд╕рд░рд▓ рдФрд░ рдЕрдиреБрдорд╛рдирд┐рдд рд╣реИред рддреАрди рдЖрд╕рд╛рди рдирд┐рдпрдо рд╣реИрдВ:
1.
рдЖрд╕реНрдердЧрд┐рдд рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдХреЗ рддрд░реНрдХреЛрдВ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рддрдм рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рдбреЗрдлрд╝рд░ рдХрдорд╛рдВрдб рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИредрдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, "i" рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рддрдм рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм Println рдХреЛ рдХреЙрд▓ рд╕реНрдердЧрд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рд▓реМрдЯрдиреЗ рдХреЗ рдмрд╛рдж рдПрдХ рдЖрд╕реНрдердЧрд┐рдд рдХреЙрд▓ "0" рдкреНрд░рд┐рдВрдЯ рдХрд░реЗрдЧрд╛ред
func a () {
рдореИрдВ: = 0
defer fmt.Println (i)
рдореИрдВ ++
рд╡рд╛рдкрд╕реА
}
2.
рдбрд┐рдлрд░реНрдб рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдХреЛ LIFO рдХреНрд░рдо рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: рдЕрдВрддрд┐рдо рдЖрд╕реНрдердЧрд┐рдд рдХреЙрд▓ рдХреЛ рдкрд╣рд▓реЗ рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛ - рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдмрд╛рджредрдпрд╣ рдлрд╝рдВрдХреНрд╢рди "3210" рдкреНрд░рд┐рдВрдЯ рдХрд░реЗрдЧрд╛:
рдлрдВрдХ рдмреА () {
рдореИрдВ рдХреЗ рд▓рд┐рдП: = 0 ; i < 4 ; рдореИрдВ ++ {
defer fmt.Print (i)
}
}
3.
рдЖрд╕реНрдердЧрд┐рдд рдлрд╝рдВрдХреНрд╢рди рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдирд╛рдорд┐рдд рд░рд┐рдЯрд░реНрди рдорд╛рдиреЛрдВ рдХреЛ рдкрдврд╝ рдФрд░ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВредрдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдПрдХ рдЖрд╕реНрдердЧрд┐рдд рдлрд╝рдВрдХреНрд╢рди рдПрдиреНрдХреНрд▓реЛрдЬрд┐рдВрдЧ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж i рдХрд╛ рд░рд┐рдЯрд░реНрди рдорд╛рди рдмрдврд╝рд╛рддрд╛ рд╣реИред рддреЛ, рдпрд╣ рдлрд╝рдВрдХреНрд╢рди 2 рджреЗрддрд╛ рд╣реИ:
func c () (i int ) {
defer func () {i ++} ()
рд╡рд╛рдкрд╕реА 1
}
рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рджреНрд╡рд╛рд░рд╛ рд▓реМрдЯрд╛рдП рдЧрдП рддреНрд░реБрдЯрд┐ рдХреЛрдб рдХреЛ рдмрджрд▓рдиреЗ рдХрд╛ рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рддрд░реАрдХрд╛ рд╣реИред рдЬрд▓реНрдж рд╣реА рд╣рдо рдЗрд╕рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВрдЧреЗред
рдкреИрдирд┐рдХ рдПрдХ рдмрд┐рд▓реНрдЯ-рдЗрди рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдЬреЛ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ рдХреЛ рд░реЛрдХрддрд╛ рд╣реИ рдФрд░ рдШрдмрд░рд╛рд╣рдЯ рдХрд░рдиреЗ рд▓рдЧрддрд╛ рд╣реИред рдЬрдм рдХреЛрдИ рдлрд╝рдВрдХреНрд╢рди F рдШрдмрд░рд╛рд╣рдЯ рдХреЛ рдмреБрд▓рд╛рддрд╛ рд╣реИ, рддреЛ F рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди рд░реЛрдХ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, F рдореЗрдВ рд╕рднреА рд▓рдВрдмрд┐рдд рдХреЙрд▓ рдХреЛ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддрдм F рдХреЙрд▓рд┐рдВрдЧ рдлрд╝рдВрдХреНрд╢рди рдкрд░ рдирд┐рдпрдВрддреНрд░рдг рд▓реМрдЯрд╛рддрд╛ рд╣реИред рдХреЙрд▓рд┐рдВрдЧ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП, F рдХреЛ рдХреЙрд▓ рдПрдХ рдкреИрдирд┐рдХ рдХреЙрд▓ рдХреА рддрд░рд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛ рд╣реИред рдкреНрд░рдХреНрд░рд┐рдпрд╛ рддрдм рддрдХ рдЬрд╛рд░реА рд░рд╣рддреА рд╣реИ рдЬрдм рддрдХ рдХрд┐ рд╡рд░реНрддрдорд╛рди рд╡реЗрдВ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди рдкреВрд░рд╛ рдирд╣реАрдВ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдШрдмрд░рд╛рд╣рдЯ рдПрдХ рдкреНрд░рддреНрдпрдХреНрд╖ рдХреЙрд▓ рдХреЗ рдХрд╛рд░рдг рдШрдмрд░рд╛рд╣рдЯ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рд░рдирдЯрд╛рдЗрдо рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдХрд╛рд░рдг рд╣реЛ рд╕рдХрддреА рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рд╕рд░рдгреА рдХреА рд╕реАрдорд╛ рдХреЗ рдмрд╛рд╣рд░ рдкрд╣реБрдВрдЪред
рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдПрдХ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдЬреЛ рдкреИрдирд┐рдВрдЧ рдЧреЛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдирд┐рдпрдВрддреНрд░рдг рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХреЗрд╡рд▓ рдПрдХ рдЖрд╕реНрдердЧрд┐рдд рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдХреЗ рдЕрдВрджрд░ рдЙрдкрдпреЛрдЧреА рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рджреМрд░рд╛рди, рд░рд┐рдЯрд░реНрди рдирд┐рд▓ рдареАрдХ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдХреЛрдИ рдЕрдиреНрдп рдкреНрд░рднрд╛рд╡ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдпрджрд┐ рд╡рд░реНрддрдорд╛рди th рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЖрддрдВрдХрд┐рдд рдХрд░рддреА рд╣реИ, рддреЛ рдХреЙрд▓ рдХреЛ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╣ рдореВрд▓реНрдп рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдШрдмрд░рд╛рд╣рдЯ рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИред
рдпрд╣рд╛рдБ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХрд╛рд░реНрдпрдХреНрд░рдо рд╣реИ рдЬреЛ рдШрдмрд░рд╛рд╣рдЯ рдФрд░ рд╣реАрдирддрд╛ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ:
рдкреИрдХреЗрдЬ рдореБрдЦреНрдп
рдЖрдпрд╛рдд "fmt"
рджреБрд░реНрдЧрдВрдз рдореБрдЦреНрдп () {
рдЪ ()
fmt.Println ( "рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ f рд╕реЗ рд▓реМрдЯрд╛ред" )
}
func f () {
рдбреЗрдлрд╝ рдлрдВрдХ () {
if r: = рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд (); рдЖрд░! = рдиреАрд▓ {
fmt.Println ( " рдЖрд░ рдореЗрдВ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд" , рдЖрд░)
}
} ()
fmt.Println ( "рдХреЙрд▓рд┐рдВрдЧ рдЬреАред" )
рдЬреА ( 0 )
fmt.Println ( "рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдЬреА рд╕реЗ рд▓реМрдЯрд╛ред" )
}
func g (i int ) {
рдЕрдЧрд░ рдореИрдВ> 3 {
fmt.Println ( " рдкреИрдирдХрд┐рдВрдЧ !" )
рдШрдмрд░рд╛рд╣рдЯ (fmt.Sprintf ( "% v" , i))
}
defer fmt.Println ( " рдбреЗрдлрд░ рдЗрди рдЬреА" , i)
fmt.Println ( "рдкреНрд░рд┐рдВрдЯрд┐рдВрдЧ рдЗрди рдЬреА" , i)
рдЬреА (i + 1 )
}
рдлрд╝рдВрдХреНрд╢рди рдЬреА рдкреВрд░реНрдгрд╛рдВрдХ i рдХреЛ рдПрдХ рдЗрдирдкреБрдЯ рдФрд░ рдкреИрдирд┐рдХ рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЗрддрд╛ рд╣реИ рдпрджрд┐ рдореИрдВ 3 рд╕реЗ рдЕрдзрд┐рдХ рд╣реИ, рдпрд╛ рддрд░реНрдХ i + 1 рдХреЗ рд╕рд╛рде рд╣реА рд╡рд╛рдЪрд╛ рд╣реИред F рдлрдВрдХреНрд╢рди рдПрдХ рдРрд╕реЗ рдлрдВрдХреНрд╢рди рдХреЛ рд░реЛрдХрддрд╛ рд╣реИ рдЬреЛ рд░рд┐рдХрд╡рд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд░рд┐рд╕реНрдЯреЛрд░ рдХреА рд╣реБрдИ рд╡реИрд▓реНрдпреВ рдХреЛ рдкреНрд░рд┐рдВрдЯ рдХрд░рддрд╛ рд╣реИ (рдЕрдЧрд░ рдпрд╣ рдЦрд╛рд▓реА рдирд╣реАрдВ рд╣реИ)ред рдпрд╣ рдХрд▓реНрдкрдирд╛ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ рдХрд┐ рдЖрдЧреЗ рдкрдврд╝рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдпрд╣ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреНрдпрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░реЗрдЧрд╛ред
рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рдЙрддреНрдкрд╛рджрди рд╣реЛрдЧрд╛:
рдХреЙрд▓рд┐рдВрдЧ рдЬреАред
рдЬреА 0 рдореЗрдВ рдореБрджреНрд░рдг
рдореБрджреНрд░рдг рдХрд░рдирд╛ g рез
рдЬреА 2 рдореЗрдВ рдореБрджреНрд░рдг
рдЬреА 3 рдореЗрдВ рдЫрдкрд╛рдИ
рдбрд░!
рдЬреА 3 рдореЗрдВ рд╣реНрд░рд╛рд╕
рдЬреА 2 рдореЗрдВ рдбрд┐рдлрд░
рдЬреА рдореЗрдВ рдЧрд┐рд░рд╛рдирд╛ рез
рдЬреА 0 рдореЗрдВ рдбрд┐рдлрд░
рдПрдл 4 рдореЗрдВ рдмрд░рд╛рдордж
рдПрдл рд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рд▓реМрдЯрд╛ред
рдпрджрд┐ рд╣рдо рд╕реНрдердЧрд┐рдд рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдХреЛ f рд╕реЗ рд╣рдЯрд╛рддреЗ рд╣реИрдВ, рддреЛ рдШрдмрд░рд╛рд╣рдЯ рдмрдВрдж рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ рдФрд░ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рд░реЛрдХрддреЗ рд╣реБрдП, рдЧреЛ-рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдХреЙрд▓ рд╕реНрдЯреИрдХ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдкрд╣реБрдВрдЪ рдЬрд╛рддреА рд╣реИред рддреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд╛рд░реНрдпрдХреНрд░рдо рдЖрдЙрдЯрдкреБрдЯ рд╣реЛрдЧрд╛:
рдХреЙрд▓рд┐рдВрдЧ рдЬреАред
рдЬреА 0 рдореЗрдВ рдореБрджреНрд░рдг
рдореБрджреНрд░рдг рдХрд░рдирд╛ g рез
рдЬреА 2 рдореЗрдВ рдореБрджреНрд░рдг
рдЬреА 3 рдореЗрдВ рдЫрдкрд╛рдИ
рдбрд░!
рдЬреА 3 рдореЗрдВ рд╣реНрд░рд╛рд╕
рдЬреА 2 рдореЗрдВ рдбрд┐рдлрд░
рдЬреА рдореЗрдВ рдЧрд┐рд░рд╛рдирд╛ рез
рдЬреА 0 рдореЗрдВ рдбрд┐рдлрд░
рдШрдмрд░рд╛рд╣рдЯ: 4
рдкреИрдирд┐рдХ рдкреАрд╕реА = 0x2a9cd8
[рдХреЙрд▓ рд╕реНрдЯреИрдХ рдбрд╛рдЙрди рдХрд░реЗрдВ]
рдкреИрдирд┐рдХ рдФрд░
рд░рд┐рдХрд╡рд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ
рд▓рд┐рдП, рдЧреЛ рд╕реНрдЯреИрдВрдбрд░реНрдб рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реЗ
рдЬреЛрдВрд╕ рдкреИрдХреЗрдЬ рджреЗрдЦреЗрдВред рдпрд╣ рдкреБрдирд░рд╛рд╡рд░реНрддреА рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдПрдХ рд╕реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ JSON рдПрдиреНрдХреЛрдбреЗрдб рдбреЗрдЯрд╛ рдХреЛ рдбреАрдХреЛрдб рдХрд░рддрд╛ рд╣реИред рдЬрдм рдПрдХ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рдмрдирд╛рдИ рдЧрдИ JSON рдЗрдирдкреБрдЯ рдкрд░ рдЖрддреА рд╣реИ, рддреЛ рдкрд╛рд░реНрд╕рд░ рд╕реНрдЯреИрдХ рдХреЛ рд╢реАрд░реНрд╖ рдХреЙрд▓ рдореЗрдВ
рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдШрдмрд░рд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдПрдХ рдЖрддрдВрдХ рдХреЗ рдмрд╛рдж рдмрд╣рд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдПрдХ рдЙрдкрдпреБрдХреНрдд рддреНрд░реБрдЯрд┐ рдХреЛрдб ("рддреНрд░реБрдЯрд┐" рдФрд░ "
рдЕрдирдорд░реНрд╕рд▓ "
рдлрд╝рдВрдХреНрд╢рди рдХреЛ
рдбрд┐рдХреЛрдб .go рдореЗрдВ
рд▓реМрдЯрд╛рддрд╛ рд╣реИ )ред рдЗрд╕ рддрдХрдиреАрдХ рдХрд╛ рдПрдХ рд╕рдорд╛рди рдЙрджрд╛рд╣рд░рдг
regexp рдкреИрдХреЗрдЬ рдХреА
рд╕рдВрдХрд▓рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╣реИред рдПрдХ рдХрдиреНрд╡реЗрдВрд╢рди рд╣реИ рдХрд┐ рдЧреЛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ, рднрд▓реЗ рд╣реА рдХреЛрдИ рдкреИрдХреЗрдЬ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рдШрдмрд░рд╛рд╣рдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдмрд╛рд╣рд░реА рдПрдкреАрдЖрдИ рд╕реНрдкрд╖реНрдЯ рддреНрд░реБрдЯрд┐ рдХреЛрдб рджреЗрддрд╛ рд╣реИред
Defer рдХреЗ рдЕрдиреНрдп рдЙрдкрдпреЛрдЧ (рдЙрдкрд░реЛрдХреНрдд рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрд▓рд╛рд╡рд╛ред рдХреНрд▓реЛрдЬрд╝ () рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдореНрдпреВрдЯреЗрдХреНрд╕ рдХреА рд░рд┐рд▓реАрдЬрд╝ рд╢рд╛рдорд┐рд▓ рд╣реИ:
рдореНрдпреВ рд▓реЙрдХ ()
defer mu.Unlock ()
рдкрд╛рдж рдореБрджреНрд░рдг:
рдкреНрд░рд┐рдВрдЯ рд╣реИрдбрд░ ()
рдбреЗрдлрд╝рд░ рдкреНрд░рд┐рдВрдЯрдлрд╝рд╛рдпрд░ ()
рдФрд░ рднреА рдмрд╣реБрдд рдХреБрдЫред
рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдкреНрд░рд╡рд╛рд╣ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╕реНрдердЧрд┐рдд рдХрдорд╛рдВрдб (рд╕рд╛рде рдпрд╛ рдмрд┐рдирд╛ рдЖрддрдВрдХ рдФрд░ рд╡рд╕реВрд▓реА рдХреЗ) рдПрдХ рдЕрд╕рд╛рдорд╛рдиреНрдп рдФрд░ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рддрдВрддреНрд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд┐рднрд┐рдиреНрди рдХреНрд╖рдорддрд╛рдУрдВ рдХреЛ рдЕрдиреБрдХрд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдЕрдиреНрдп рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рд╡рд┐рд╢реЗрд╖ рд╕рдВрд░рдЪрдирд╛рдПрдВ рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИрдВред рдЗрд╕реЗ рдЖрдЬрдорд╛рдЗрдПред
PS рдЯрд╛рдЗрдкреНрд╕ рдФрд░ рдЕрдиреНрдп рдЕрд╢реБрджреНрдзрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ, рдХреГрдкрдпрд╛ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд╕рдВрджреЗрд╢реЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕реВрдЪрд┐рдд рдХрд░реЗрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╡рд┐рднрд┐рдиреНрди рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдореИрдВ рдХреЗрд╡рд▓ рд╢рд╛рдо рдХреЛ рдЙрдиреНрд╣реЗрдВ рдареАрдХ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред