рдореБрдЭреЗ рдЬрд╛рдирд╛ рдХреНрдпреЛрдВ рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИ

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

рдПрд░реНрдЧреЛрдиреЙрдорд┐рдХреНрд╕ рдбрд┐рдЬрд╛рдЗрди

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

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

рдФрд░ 2012 рдЧреЛ-рдирдЯреНрд╕ рд╢рд╛рдЦрд╛ рдореЗрдВ рдлрд┐рд░ рд╕реЗ:

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

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

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

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

рдпрд╣ рд░рд╡реИрдпрд╛ рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рд╕рдВрдШ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рд╣реИред 2000 рдореЗрдВ, JWZ рдиреЗ рдЬрд╛рд╡рд╛ рдХреА рдЖрд▓реЛрдЪрдирд╛ рдХреА:

, enum :keywords . (, , ┬л`enumeration value x', switch┬╗).

Java , Java .  тАФ , Rust, Scala, Elixir , Go, C тАФ , . , , Go .


, . .

, Go . , . Go ┬л ┬╗ ┬л ┬╗, .

, ┬л ┬╗. , , , , , . Go , , Java 1.4.

тАФ . , , , . , Go.

Google, ┬л┬╗ ┬л┬╗ .


go get . тАФ , Go .

Go, , , . C Autotools тАФ , . , 21 .

GOPATH


. vendor , , ┬л┬╗ ┬л┬╗ .

, Go ┬л ┬╗ .

Go


Go , , ( ; Go ) error , nil ┬л ┬╗.

, Go. , , . , : , , error - , , тАФ .

Go , - :

a, err := fallibleOperationA()
if err != nil {
    return nil, err
}

b, err := fallibleOperationB(a)
if err != nil {
    return nil, err
}

return b, nil



a = fallibleOperationA()
b = fallibleOperationB(a)
return b



return fallibleOperationA()
    .then(a => fallibleOperationB(a))
    .result()

.

, ( , ). . , . :

a, err := fallibleOperationA()
if err != nil {
    return nil, err
}

if err := fallibleOperationB(a); err != nil {
    return nil, err
}

c, err := fallibleOperationC(a)
if err != nil {
    return nil, err
}

fallibleOperationD(a, c)

return fallibleOperationE()

- .

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


All Articles