рдЧреЛ рдХреЗ рд╕рд╛рде рдкрд░рд┐рдЪрд┐рдд - рд╣рдо рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ рдФрд░ рд╣рд╛рд░реНрд▓реЛрдЯреНрд╕ рдХреЗ рд╕рд╛рде рд╡реЗрдм рдкреЗрдЬреЛрдВ рдХрд╛ рдПрдХ рдзрд░рдиреЗрд╡рд╛рд▓рд╛ рд▓рд┐рдЦрддреЗ рд╣реИрдВ

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

рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдПрдХ рд╕рд╛рдЗрдЯ рд╣реИ http://vpustotu.ru рдЬрд╣рд╛рдВ рдХреЛрдИ рднреА рджрд░реНрджрдирд╛рдХ рд░реВрдк рд╕реЗ рдЧреБрдордирд╛рдо рд░реВрдк рд╕реЗ рдмреЛрд▓ рд╕рдХрддрд╛ рд╣реИред рд╕рднреА рдХрдерди (рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдореИрдВ рдЙрдиреНрд╣реЗрдВ "рдЙрджреНрдзрд░рдг" рдХрд╣реВрдВрдЧрд╛) рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдореЙрдбрд░реЗрд╢рди (рдмреИрд╢реЙрд░реНрдЬ рдХреЗ "рд░рд╕рд╛рддрд▓ рдХрд╛ рдПрдХ рдПрдирд╛рд▓реЙрдЧ) рдореЗрдВ рдЖрддреЗ рд╣реИрдВ, рдЬрд╣рд╛рдВ рдЖрдЧрдВрддреБрдХ рд╡рд┐рдЪрд╛рд░ рдХреА рдЙрдбрд╝рд╛рди рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░" рд╡рд╛рд╣! "рдпрд╛" рдмреБрд▓рд╢рд┐рдЯ! "рдХреА рд╢реИрд▓реА рдореЗрдВ рдЙрджреНрдзрд░рдг рдХреЗ рд▓рд┐рдП рд╡реЛрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореЙрдбрд░реЗрд╢рди рдкреЗрдЬ ( http://vpustotu.ru/moderation/ ) рдкрд░ рд╣рдореЗрдВ рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдЙрджреНрдзрд░рдг, рдорддрджрд╛рди рд▓рд┐рдВрдХ рдФрд░ рдПрдХ "рдЕрдзрд┐рдХ" рд▓рд┐рдВрдХ рджрд┐рдЦрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдПрдХ рд╣реА рдкреГрд╖реНрда рдкрд░ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИред рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ, рдпрд╣ рд╕рдм рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИред

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

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

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЖрдкрдХреЛ рдПрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:



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



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

рдЕрдкрдирд╛ рдкрд╕рдВрджреАрджрд╛ рд╕рдВрдкрд╛рджрдХ рдЦреЛрд▓реЗрдВ, рдПрдХ рдирдпрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВред рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, рдЦрд╛рд▓реА рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд╛ рдХреЛрдб рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
package main import ( "fmt" ) func main() { fmt.Println("Hello World!") } 

рд╣рдо рд╕реВрдЪреА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдФрд░ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдХреНрд░рдо рдореЗрдВ рдЬрд╛рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ:

рд╣рдорд╛рд░реЗ рдкрд╛рд╕ "рд╕реНрдЯреНрд░реАрдо", рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдФрд░ рдЕрдзрд┐рдХ рдХреА рд╕рдВрдЦреНрдпрд╛ рдЬреИрд╕реЗ рдХрдИ рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИрдВред рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд " рдзреНрд╡рдЬ " рдкреИрдХреЗрдЬ рдЖрдкрдХреЛ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╕реЗ рдпрд╣ рд╕рдм рд╕реБрдВрджрд░рддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛ред рдЗрд╕реЗ рдЖрдпрд╛рдд рд╕реВрдЪреА рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ рдФрд░, рдЙрд╕реА рд╕рдордп, рдкреИрд░рд╛рдореАрдЯрд░ рдЪрд░ рдШреЛрд╖рд┐рдд рдХрд░реЗрдВ:
 import ( "flag" "fmt" ) var ( WORKERS int = 2 //- "" REPORT_PERIOD int = 10 //  () DUP_TO_STOP int = 500 //    HASH_FILE string = "hash.bin" //   QUOTES_FILE string = "quotes.txt" //   ) 

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

рдЖрдо рддреМрд░ рдкрд░ init () рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рддрд░реНрдХ рдЬреИрд╕реА рдЪреАрдЬреЗрдВ рдХреА рдЬрд╛рддреА рд╣реИрдВ, рдФрд░ рд╣рдо рдХрд░реЗрдВрдЧреЗ:
 func init() { //  : flag.IntVar(&WORKERS, "w", WORKERS, " ") flag.IntVar(&REPORT_PERIOD, "r", REPORT_PERIOD, "  ()") flag.IntVar(&DUP_TO_STOP, "d", DUP_TO_STOP, "-   ") flag.StringVar(&HASH_FILE, "hf", HASH_FILE, " ") flag.StringVar(&QUOTES_FILE, "qf", QUOTES_FILE, " ") //    flag.Parse() } 

UPD: рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рдлреЛрд░реНрдХреНрдб рд╣реИрдмрд░рд╛рдЗрдЬрд╝рд░ рдиреЗ рд▓реЛрдХрдкреНрд░рд┐рдп рд░реВрдк рд╕реЗ рд╕рдордЭрд╛рдпрд╛ рдХрд┐ рдзреНрд╡рдЬ рдХреЛ рдХреНрдпреЛрдВ рдмреБрд▓рд╛рдирд╛ рд╣реИред Inar () рдлрд╝рдВрдХреНрд╢рди init рдПрдХ рдмреБрд░реА рдЖрджрдд рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рдзрдиреНрдпрд╡рд╛рдж - рдЕрдм рд╕реЗ рдореИрдВ рдЗрд╕реЗ рдореБрдЦреНрдп () рдореЗрдВ рдХрд░реВрдВрдЧрд╛, рдЬреЛ рдореИрдВ рдЖрдкрдХреЛ рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдЙрджрд╛рд╣рд░рдг рдПрдХ рд╕рдВрдкрд╛рджрди рдХреЗ рд░реВрдк рдореЗрдВ рдпрд╣рд╛рдВ рд░рд╣реЗрдЧрд╛ рдХрд┐ "рдлреВ рдРрд╕рд╛ рдХрд░реЗрдВ!"

рд╣рдо рдлрд╝реНрд▓реИрдЧ рдкреИрдХреЗрдЬ рд╕реЗ рдлрд╝рдВрдХреНрд╢рдВрд╕ (рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП) рдФрд░ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╕реНрдЯреНрд░рд┐рдВрдЧрд░ ( рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЗ рд▓рд┐рдП) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ - рд╡реЗ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдХреЗ рддрд░реНрдХреЛрдВ рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреБрдВрдЬреА рдХреЛ рдкрдврд╝рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рд╡реЗрд░рд┐рдПрдмрд▓ рдореЗрдВ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рдХреБрдВрдЬреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рд╣реИ, рддреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╕рдорд╛рди рд╣реИ:
 flag.StringVar( &_,  . ,    ,  ) 

рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╣рдо рдПрдХ рдкреЙрдЗрдВрдЯрд░ рдХреЛ рдПрдХ рдЪрд░ (рдФрд░ рдкреНрд░рддреАрдХ) рдореЗрдВ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдлрд╝рдВрдХреНрд╢рди рдЗрд╕реЗ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдиреЗ рдкрд░ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░ рд╕рдХреЗред рдкреИрд░рд╛рдореАрдЯрд░ "рдХреБрдВрдЬреА рд╡рд┐рд╡рд░рдг" рднреА рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ - рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдзреНрд╡рдЬ рдкреИрдХреЗрдЬ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ "-h" рдХреБрдВрдЬреА рджреНрд╡рд╛рд░рд╛ рд╕реБрд▓рдн рдПрдХ рддрд░реНрдХ рдХрд┐рдВрд╡рджрдВрддреА рдмрдирд╛рддрд╛ рд╣реИред рдЖрдк рдХрд╛рд░реНрдпрдХреНрд░рдо рдЕрднреА рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ:
 C:\Go\src\habratest>habratest.exe -h Usage of habratest.exe: -d=500: -    -hf="hash.bin":   -qf="quotes.txt":   -r=10:   () -w=2:   

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

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

рдЧреЛ рдореЗрдВ рдорд▓реНрдЯреАрдЯрд╛рд╕реНрдХрд┐рдВрдЧ рдХреЛ рдЧреЛрд░реЛрдЗрдЯрд┐рди рджреНрд╡рд╛рд░рд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд рд╣рдо рдХрд┐рд╕реА рднреА рдлрд╝рдВрдХреНрд╢рди рдХреЛ "рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ" рдЙрд╕рдХреЗ рд╕рд╛рдордиреЗ "рдЧреЛ" рдХреАрд╡рд░реНрдб рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдХреЗ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ: рдпрд╣ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдХрд╛рд░реНрдпрдХреНрд░рдо рддреБрд░рдВрдд рдЬрд╛рд░реА рд░рд╣рддрд╛ рд╣реИ, рдпрд╣ рд▓рд┐рдирдХреНрд╕ рдореЗрдВ рдЕрдВрдд рдореЗрдВ & рдХреЗ рд╕рд╛рде рдХрдорд╛рдВрдб рдЪрд▓рд╛рдиреЗ рдЬреИрд╕рд╛ рд╣реИ - рд╣рдо рддреБрд░рдВрдд рд╣рдо рдХреБрдЫ рдФрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
 //   ... func GadgetUmbrella() { //...   ... } //...       ,   : go GadgetUmbrella() fmt.Println(" !") //          ,      GadgetUmbrella() 

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

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

рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╕рдм рдХреБрдЫ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рд░рд▓ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЧреЛ рдХреА рдПрдХ рдФрд░ рдмрдбрд╝реА рд╡рд┐рд╢реЗрд╖рддрд╛ рдЪреИрдирд▓ рд╣реИред рд╕рд░рд▓ рд░реВрдк рд╕реЗ, рдПрдХ рдЪреИрдирд▓ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдПрдХ рдкрд╛рдЗрдк рдХреЗ рд░реВрдк рдореЗрдВ рдХрд▓реНрдкрдирд╛ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рддрд░рдл рдПрдХ рдорд╛рди рдлреЗрдВрдХрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рджреВрд╕рд░реЗ рдкрд░ рдкрдХрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЪреИрдирд▓ рдЯрд╛рдЗрдк рдХрд┐рдП рдЧрдП рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЖрд░рдВрднреАрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдЙрдирдХреЗ рд╕рд╛рде рдЗрд╕ рддрд░рд╣ рдХрд╛рдо рдХрд░реЗрдВ:
 func send( c chan int) {  <- 15 //     } func main() { ch := make(chan int) //      (int) go send(ch) b:= <-ch //    fmt.Println(b) } 

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

рд╣рдо рдбреЗрдЯрд╛ "рдЧреНрд░реИрдмрд░" рднреЗрдЬреЗрдВрдЧреЗ рдФрд░ рд╣рдо рдЙрдиреНрд╣реЗрдВ рдореБрдЦреНрдп рдЪрдХреНрд░ рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗред

рдкреГрд╖реНрда рдХреЛрдб рдореЗрдВ рдмреЛрд▓реА рдмрд╕ рд╡рд░реНрдЧ "fi_text" рдХреЗ рд╕рд╛рде рдПрдХ div рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИред рдЗрд╕реЗ "рдзрд░рдиреЗрд╡рд╛рд▓рд╛" рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдо рдмрдХрд░реА рдХреЗ рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ - рдпрд╣ рдЖрдкрдХреЛ html рдкреГрд╖реНрда рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдФрд░ рдЪрдпрдирдХрд░реНрддрд╛рдУрдВ рдХреЛ рд▓рд╛ рдЬреЗрдПрдХреНрдпреВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрд╣ рдкреИрдХреЗрдЬ рдорд╛рдирдХ рдкреИрдХреЗрдЬ рдореЗрдВ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдЗрд╕реЗ рдкрд╣рд▓реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
 #  : go get github.com/opesun/goquery 

рдФрд░ рдХреЛрдб рдореЗрдВ рдЖрдпрд╛рдд рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рд╣рдо "github.com/opesun/goquery", "рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕" рдФрд░ "рд╕рдордп" рдкреИрдХреЗрдЬ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ - рд╣рдореЗрдВ рджреЗрд░реА рдХреЗ рд▓рд┐рдП рдмрд╛рдж рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд╣рдо рдЕрдкрдиреЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд╕рд╛рде рд╕рд░реНрд╡рд░ рдХреЛ рд▓рдЧрд╛рддрд╛рд░ рдЦреАрдВрдЪрддреЗ рд╣реИрдВ (рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ, рдФрд░ рдЗрд╕рд▓рд┐рдП рд╣рдо рдХрд░реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдЖрдк рдореБрдЭреЗ рд╕рдордЭрддреЗ рд╣реИрдВ):
 import ( "flag" "fmt" "github.com/opesun/goquery" "strings" "time" ) 


рдЗрд╕ рдмрд┐рдВрджреБ рдХреЗ рдХрд░реАрдм, рд╣рдо "рдЧреНрд░реИрдмрд░" рдХреЛрдб рд▓рд┐рдЦрддреЗ рд╣реИрдВ:
 func grab() <-chan string { //  ,        string c := make(chan string) for i := 0; i < WORKERS; i++ { //       - worker'o go func() { for { //     x, err := goquery.ParseUrl("http://vpustotu.ru/moderation/") if err == nil { if s := strings.TrimSpace(x.Find(".fi_text").Text()); s != "" { c <- s //     } } time.Sleep(100 * time.Millisecond) } }() } fmt.Println(" : ", WORKERS) return c } 

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

рддреЛ рдЬрдирд░реЗрдЯрд░ рддреИрдпрд╛рд░ рд╣реИ, рдЖрдк рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдореБрдЦреНрдп () рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдХреЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:
 func main() { quote_chan := grab() for i := 0; i < 5; i++ { // 5    fmt.Println(<-quote_chan, "\n") } } 

рд╣рдо рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рд╕рдм рдХреБрдЫ рдпреЛрдЬрдирд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╣реЛ рд░рд╣рд╛ рд╣реИ: рдЦреБрд▓рд╛рд╕реЗ рд╣рдорд╛рд░реЗ рдЪреИрдирд▓ рдореЗрдВ рдПрдХ рд╡реНрдпрд╛рдкрдХ рдкреНрд░рд╡рд╛рд╣ рдореЗрдВ рдбрд╛рд▓рддреЗ рд╣реИрдВ!


рдЕрдм рдЪрд▓реЛ рдореБрдЦреНрдп рдЪрдХреНрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ, рдпреЛрдЬрдирд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдореВрд▓реНрдпреЛрдВ рдХреЛ рдПрдХрддреНрд░ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдФрд░ рдЗрдЪреНрдЫрд╛рдУрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рд╣рдореЗрдВ рдПрдХ рдЪрдХреНрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:



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

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

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

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

рдХреЛрдб рдХреЗ рд▓рд┐рдП рдиреАрдЪреЗ рдЙрддрд░реЛ! рдкрд╣рд▓реЗ, рдЖрдпрд╛рдд рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдкреИрдХреЗрдЬ рдЬреЛрдбрд╝реЗрдВ, рдЕрдм рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:
 import ( "flag" "fmt" "github.com/opesun/goquery" "strings" "time" //,        : "io" "os" "os/signal" //   -   : "crypto/md5" "encoding/hex" ) 

рд╣рд╛рдВ, рдмрд╣реБрдд рд╕рд╛рд░реА рдЪреАрдЬреЗрдВ ... рдЧреЛ рдХреЗ рд╕реНрдЯреЗрдЯрд┐рдХ рд▓рд┐рдВрдХрд┐рдВрдЧ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдХрд╛ рдЖрдХрд╛рд░ рдкреНрд░рднрд╛рд╡рд╢рд╛рд▓реА рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП!
рд▓реЗрдХрд┐рди рдпрд╣ рджреБрдЦреА рд╣реЛрдиреЗ рдХрд╛ рд╕рдордп рдирд╣реАрдВ рд╣реИ, рд╣рдо рд╣реИрд╢ рдХреЗ рд▓рд┐рдП рднрдВрдбрд╛рд░рдг рдХреА рдШреЛрд╖рдгрд╛ рдХрд░реЗрдВрдЧреЗ:
 var ( ... used map[string]bool = make(map[string]bool) //map        ,    -  . ) 

рдФрд░ рдЕрдВрдд рдореЗрдВ, рд╣рдорд╛рд░реЗ рдореБрдЦреНрдп рдХрд╛рд░реНрдп рдореЗрдВ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИ:
 func main() { //   ... quotes_file, err := os.OpenFile(QUOTES_FILE, os.O_APPEND|os.O_CREATE, 0666) check(err) defer quotes_file.Close() //...    hash_file, err := os.OpenFile(HASH_FILE, os.O_APPEND|os.O_CREATE, 0666) check(err) defer hash_file.Close() // Ticker          ticker := time.NewTicker(time.Duration(REPORT_PERIOD) * time.Second) defer ticker.Stop() // ,     ,     ... key_chan := make(chan os.Signal, 1) signal.Notify(key_chan, os.Interrupt) //...       hasher := md5.New() //    quotes_count, dup_count := 0, 0 // , ! quotes_chan := grab() for { select { case quote := <-quotes_chan: // ""  : quotes_count++ // ,     : hasher.Reset() io.WriteString(hasher, quote) hash := hasher.Sum(nil) hash_string := hex.EncodeToString(hash) //    if !used[hash_string] { //   -    ,        used[hash_string] = true hash_file.Write(hash) quotes_file.WriteString(quote + "\n\n\n") dup_count = 0 } else { //  -   ,    ? if dup_count++; dup_count == DUP_TO_STOP { fmt.Println("  ,  .  : ", len(used)) return } } case <-key_chan: //     : fmt.Println("CTRL-C:  .  : ", len(used)) return case <-ticker.C: //, ,        fmt.Printf(" %d /  %d (%d /) \n", len(used), dup_count, quotes_count/REPORT_PERIOD) quotes_count = 0 } } } 

рдХреЛрдб рдмрд┐рд▓реНрдХреБрд▓ рдкрд╛рд░рджрд░реНрд╢реА рд╣реИ, рд╣рдо рдХреЗрд╡рд▓ рдлрд╛рдЗрд▓ рдЦреЛрд▓рдиреЗ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВрдЧреЗ:
рдЪреЗрдХ () рдлрд╝рдВрдХреНрд╢рди рдорд╛рдирдХ рдирд╣реАрдВ рд╣реИ - рдпрд╣ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд╝рд╛рдЗрд▓ рдЦреЛрд▓рдиреЗ рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХреА рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдВ рд╣реИред рдпрд╣рд╛рдБ рдЗрд╕рдХрд╛ рдХреЛрдб рд╣реИ, рдореБрдЦреНрдп рдХреЗ рд╕рд╛рдордиреЗ рдХрд╣реАрдВ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИ () :
 func check(e error) { if e != nil { panic(e) } } 

рдПрдХ рдФрд░ рджрд┐рд▓рдЪрд╕реНрдк рдмрд┐рдВрджреБ: рд╣рдо "рддреБрд░рдВрдд" рдХрд╛рд░рдг рдлрд╝рд╛рдЗрд▓ рдХреЛ рдмрдВрдж рдХрд░ рджреЗрддреЗ рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рддрдм рд╣рдо рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ:
 defer quotes_file.Close() ... defer hash_file.Close() ... //      : defer ticker.Stop() 

рд▓рдмреНрдмреЛрд▓реБрдЖрдм рдпрд╣ рд╣реИ рдХрд┐ рдлрд╝рдВрдХреНрд╢рди рдХреЛ defer рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рд╣рдо рдЗрд╕рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рд╕реНрдердЧрд┐рдд рдХрд░ рджреЗрддреЗ рд╣реИрдВ: рдЗрд╕реЗ рдХреЗрд╡рд▓ рдЙрд╕ рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рдкрд╣рд▓реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЬрд╣рд╛рдВ рд╕реЗ defer рдХреЙрд▓ рдкреВрд░рд╛ рд╣реБрдЖ рдерд╛ (рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, "рдкреИрд░реЗрдВрдЯ" рдХреА рд╡рд╛рдкрд╕реА рд╕реЗ рдареАрдХ рдкрд╣рд▓реЗ)ред

рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА "рдмрд╣реБрдд рдЖрд╡рд╢реНрдпрдХ рдорд┐рд╢рди" рдХреА рдкреВрд░реНрддрд┐ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЖрдирдВрдж рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдПрдХ рдФрд░ рдЫреЛрдЯрд╛ рд╡рд┐рд╡рд░рдг рд╣реИ - рдЖрдкрдХреЛ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рд╣реИрд╢ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛, рдЕрдЧрд░ рд╣рдо рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдлрд┐рд░ рд╕реЗ рдЪрд▓рд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдкрд░рд┐рдгрд╛рдореА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдирд╣реАрдВ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдпрд╣рд╛рдБ рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИ:
 func readHashes() { //    if _, err := os.Stat(HASH_FILE); err != nil { if os.IsNotExist(err) { fmt.Println("   ,   .") return } } fmt.Println(" ...") hash_file, err := os.OpenFile(HASH_FILE, os.O_RDONLY, 0666) check(err) defer hash_file.Close() //    16  -    : data := make([]byte, 16) for { n, err := hash_file.Read(data) //n    ,  err - ,   . if err != nil { if err == io.EOF { break } panic(err) } if n == 16 { used[hex.EncodeToString(data)] = true } } fmt.Println(".  : ", len(used)) } 

рдпрд╣ рд╕рдм, рдпрд╣ рдХреЗрд╡рд▓ рд░реАрдбрд╣реИрд╢ () рдХреЙрд▓ рдХреЛ рдореБрдЦреНрдп рд╕реНрдерд╛рди рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рд░рдЦрдирд╛ рдпрд╛рдж рд░рдЦрдирд╛ рд╣реИред
 func main() { readHashes() ... 


рд╣реЛ рдЧрдпрд╛! рд▓рдбрд╝рд╛рдИ рд╢реБрд░реВ:


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


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

Pastbin.com рдкрд░ рдкреВрд░рд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛрдб

рдпрджрд┐ рдЖрдк рдЧреЛ рдФрд░ рдЗрд╕рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рдпрд╣рд╛рдВ рдХреБрдЫ рд╕реНрдерд╛рди рд╣реИрдВ:

tour.golang.org - рднрд╛рд╖рд╛ рдХрд╛ рдПрдХ рдСрдирд▓рд╛рдЗрди рджреМрд░рд╛, рдХреЛрдб рдХреЛ рд╕реАрдзреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рдмрд╣реБрдд рд╣реА рд░реЛрдорд╛рдВрдЪрдХ рд╣реИред

gobyexample.com - рд╕рд╛рдорд╛рдиреНрдп рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдЙрджрд╛рд╣рд░рдг

golang.org/ref/spec - рднрд╛рд╖рд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛

golang.org/doc/effective_go.html - рд╡рд┐рд╖рдп рдкрд░ рдПрдХ рд▓реЗрдЦ "рдФрд░ рдЕрдм рд╣рдо рдпрд╣ рд╕рдм рдХрдЪрд░рд╛ рдЙрдард╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВрдЧреЗ" - рдХреИрд╕реЗ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдЙрдбрд╝рд╛рди рднрд░рдиреЗ рдФрд░ рдЙрдбрд╝рд╛рди рднрд░рдиреЗ рдХреЗ рд▓рд┐рдП

Google Go рд╕рдореВрд╣ - " https://groups.google.com/forum/#-forum/golang-nuts " рдФрд░ " https://groups.google.com/forum/#-forum/golang-ru "

Godoc.org - рдЧреЛ рдкреИрдХреЗрдЬ рдФрд░ рдЙрдирдХреЗ рдкреНрд░рд▓реЗрдЦрди рдХреА рдЦреЛрдЬ, рдмрд┐рд▓реНрдЯ-рдЗрди рдФрд░ рдерд░реНрдб-рдкрд╛рд░реНрдЯреА, рджреЛрдиреЛрдВ рдПрдХ рдмреЗрд╣рддрд░реАрди рдПрдВрдЯреА-рдмрд╛рдЗрдХ рдЪреАрдЬрд╝ рд╣реИ!

рд╕реМрднрд╛рдЧреНрдп рд╣реИ

Source: https://habr.com/ru/post/In197598/


All Articles