рдЕрддреАрдд рдореЗрдВ Gocritic рдХреА рдпрд╛рддреНрд░рд╛


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


рд▓реЗрдЦ рдХреЗ рджреВрд╕рд░реЗ рднрд╛рдЧ рдореЗрдВ, рд╣рдо рдЧреЛ-рдЖрд▓реЛрдЪрдХ рдореЗрдВ рдХреБрдЫ рдирдП рдирд┐рджрд╛рдиреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ, рдЬреЛ рдЖрдкрдХреЛ рдРрд╕рд╛ рдХреЛрдб рдЦреЛрдЬрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рддреНрд░реБрдЯрд┐ рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдЕрдзрд┐рдХ рд╣реЛрддреА рд╣реИред


рдЕрддреАрдд рдореЗрдВ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреА рдЦреЛрдЬ рдХрд░реЗрдВ


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


рдорд╛рди рд▓реАрдЬрд┐рдП рдЖрдк Go-Files рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреА рдЬрд╛рдБрдЪ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рд▓рд┐рдВрдЯрд░ (рд╕реНрдерд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ) рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ, рд╕реНрд░реЛрдд рдЧреНрд░рдВрдереЛрдВ рдХреЗ рдСрдбрд┐рдЯ рдиреЗ рднреА рдорд╣рд╛рди рдкрд░рд┐рдгрд╛рдо рдирд╣реАрдВ рд▓рд╛рдПред рдХреНрдпрд╛ рдореБрдЭреЗ Go-Files рдПрдХ рддрд░рдл рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП? рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд╣реАрдВред


рдЕрдкрдиреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдХреЗ рджреМрд░рд╛рди, Go-Files рдореЗрдВ рдХрдИ рдЖрд╕рд╛рдиреА рд╕реЗ рдкрд╣рдЪрд╛рдиреЗ рдЬрд╛рдиреЗ рдпреЛрдЧреНрдп рджреЛрд╖ рдереЗ, рд▓реЗрдХрд┐рди рдЕрдм рд╡реЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рддрдп рд╣реЛ рдЧрдП рд╣реИрдВред рд╣рдореЗрдВ рдЬреЛ рдХрд░рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рд╡рд╣ рдЧрд┐рдЯ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЗ рдЗрддрд┐рд╣рд╛рд╕ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдирд╛ рд╣реИред



рдХреАрдбрд╝реЗ рдХрд╣реАрдВ рдкрд╛рд╕ рдореЗрдВ рд╣реИрдВред


рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдмреНрдпрд╛рдЬ рдХрд╛ рд╕рдВрдЧреНрд░рд╣


рд╕рдорд╕реНрдпрд╛рдПрдВ:


  • рдмрд╣реБрдд рд╕рд╛рд░реЗ рдХрдорд┐рдЯрдореЗрдВрдЯ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ
  • рдХрднреА-рдХрднреА рдПрдХ рд╣реА рд╕рдВрд╢реЛрдзрди рдореЗрдВ рдЪреАрдЬреЗрдВ рдПрдХ-рджреВрд╕рд░реЗ рд╕реЗ рдЕрд╕рдВрдмрдВрдзрд┐рдд рд╣реЛрддреА рд╣реИрдВ
  • рдХрднреА-рдХрднреА рдХрдореЗрдВрдЯ рдкрд░ рдПрдХ рдЯрд┐рдкреНрдкрдгреА рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рд╕реЗ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддреА рд╣реИред
  • рдХреБрдЫ рд▓реЛрдЧреЛрдВ рдиреЗ рдЕрдЪреНрдЫреЗ рдХрдорд┐рдЯ рдореИрд╕реЗрдЬ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рд╣реИ (рдЪрд▓реЛ рдЙрдВрдЧрд▓рд┐рдпреЛрдВ рдкрд░ рдирд╣реАрдВ)

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдЙрди рд╕реВрдЪрдирд╛рдУрдВ рдХреА рдорд╛рддреНрд░рд╛ рдХреЛ рдХрдо рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд╕реНрд╡рдЪрд╛рд▓рди рдХреЗ рдмрд┐рдирд╛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдирдореВрдирд╛ рдЖрдХрд╛рд░ (рдирд┐рдпрдВрддреНрд░рдг рд╕рдореВрд╣ рдкрд░ рдЕрдзрд┐рдХ рдЧреЛ рдкреИрдХреЗрдЯ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ) рдХреЛ рдмрдврд╝рд╛рдХрд░ рдЭреВрдареА-рдирдХрд╛рд░рд╛рддреНрдордХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред


рдЖрдк рдЗрд╕реЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд░реАрдХреЛрдВ рд╕реЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдореИрдВрдиреЗ рдмрд╕ рдЕрдкрдиреЗ рдХрдорд┐рдЯ рдореИрд╕реЗрдЬ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХрдорд┐рдЯ рдХреЗ рд╕реНрдХреЛрд░ рдХреЛ рдХрдо рдХрд░рдХреЗ рдЖрдВрдХрд╛ рдФрд░ рдХрдо рдХрд░рдХреЗ, рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреЗ рд╕реЗрдЯ рдХреЗ рд▓рд┐рдП git log --grep рдХрд┐рдпрд╛ рдерд╛ред рдпрджрд┐ рдХрдорд┐рдЯ рдмрд╣реБрдд рдмрдбрд╝рд╛ рд╣реИ, рддреЛ рдЖрдк рдЗрд╕реЗ рддреБрд░рдВрдд рддреНрдпрд╛рдЧ рд╕рдХрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдмрд╣реБрдд рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ, рдпрд╣ рдЕрдирд┐рдпрдВрддреНрд░рд┐рдд рд╣реЛрдЧрд╛ред


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


 - "We check length later, but we assumed it was always 1 bytes long. Not always the case. I'm a little depressed that this bug was there" - "Really fixed the bug now" - "WTF, the changes that actually fixed the bug for the accesspattern wasn't actually committed" - "how do i pronounce this damn project" ( traefic) - "damnit travis" - "one f*cking dot" (./.. => ./...  .travis.yml) 

рд╕рдмрд╕реЗ рдмреЗрдХрд╛рд░ "рдмрдЧ рдлрд┐рдХреНрд╕" рд╕рд┐рдВрдЯреИрдХреНрд╕ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдпрд╛ рдЕрдиреНрдп рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рдВрдкрд╛рджрди рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ go build рдорд╛рдзреНрдпрдо рд╕реЗ рднреА рд╕рдВрдХрд▓рди рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрддреЗ go build ред рд╕рднреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ CI рдпрд╛ рдкреВрд░реНрд╡-рдкреНрд░рддрд┐рдмрджреНрдз рд╣реБрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреА рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдРрд╕реЗ рдЯреВрдЯреЗ рд╣реБрдП рд╕рдВрд╢реЛрдзрди рдХрднреА-рдХрднреА рдорд╛рд╕реНрдЯрд░ рд╢рд╛рдЦрд╛ рдореЗрдВ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред


рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рддреНрд░реБрдЯрд┐рдпрд╛рдВ


рдЪрд▓реЛ рдХреБрдЫ рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрд▓рддреЗ рд╣реИрдВ рдЬреЛ рдЧрд┐рдЯ рд▓реЙрдЧ рдХреЗ рдХрд╡рд░ рдХреЗ рддрд╣рдд рдкрд╛рдП рдЧрдП рдереЗред


рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд░рд┐рдгрд╛рдо рдХреЗ рдмрдЬрд╛рдп рд╢реВрдиреНрдп рд▓реМрдЯреЗрдВ


gin-gonic / gin: рдмрдЧ рдХреЛ рдареАрдХ рдХрд░реЗрдВ, рд╡рд┐рдлрд▓ рд╣реЛрдиреЗ рдкрд░ рд╡рд╛рдкрд╕ рд▓реМрдЯреЗрдВ рдЬрдм рдмрд╛рдзреНрдпрдХрд╛рд░реА рдмрдВрдзрди рдирд╣реАрдВ :


  if err == nil { field.SetBool(boolVal) } - return nil + return err } 

go-pg / pg: AppendParam рдмрдЧ рдлрд┐рдХреНрд╕ :


  return method.AppendValue(b, m.strct.Addr(), 1), true } - return nil, false + return b, false } 

рддреЗрдЬ рдкрде рдореЗрдВ рд╡рд╛рдкрд╕реА рдХрд╛ рдЕрднрд╛рд╡


рдЧреЛрдирдо / рдЧреЛрдирдо: рдбрд╕реНрд╡реИрдк рдлрд╛рд╕реНрдЯ рдкрде рдореЗрдВ рдлрд┐рдХреНрд╕реНрдб рдмрдЧ :


  for i := 0; i < n; i++ { x[i], y[i] = y[i], x[i] } + return } 

Wg.Add рдХреЗ рдмрд┐рдирд╛ рдЧреЛрд░реЛрдирд╛рдЗрдЯ рдЪрд▓рд╛рдирд╛


btcsuite / btcd: RPC рд╕рд░реНрд╡рд░ рд╢рдЯрдбрд╛рдЙрди рдореЗрдВ рдХрдИ рдмрдЧ рдХреЛ рдареАрдХ рдХрд░реЗрдВ :


 +s.wg.Add(1) go s.walletListenerDuplicator() 

рдЕрдорд╛рдиреНрдп рддрд╛рд░реНрдХрд┐рдХ рд╕реНрдерд┐рддрд┐


gorgonia / gorgonia: рдХреБрдЫ рдХреАрдбрд╝реЗ рднреА рддрдп :


 -for i := 0; i > start; i++ { +for i := 0; i < start; i++ { retVal[i] = 0 } 

src-d / go-git: рдкреНрд▓рдВрдмрд┐рдВрдЧ / idxfile: рдореИрдореЛрд░реАрдЗрдиреНрдбреЗрдХреНрд╕ рдореЗрдВ рдЦреЛрдЬ рдХреЛ рдареАрдХ рдХрд░реЗрдВ


 -if low < high { +if low > high { break } 

go-xorm / xorm: рдпреЛрдЧ рдкрд░ рдмрдЧ рдХреЛ рдареАрдХ рдХрд░реЗрдВ :


 -if !strings.Contains(colName, " ") && strings.Contains(colName, "(") { +if !strings.Contains(colName, " ") && !strings.Contains(colName, "(") { 

btcsuite / btcd: рд╕рд░реНрд╡рд░: рдлрд╝рд┐рд▓реНрдЯрд░ рдмрдЧ рдкрд░ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдкреАрдпрд░ рдХреЛ рдареАрдХ рдХрд░реЗрдВ :


 -if sp.filter.IsLoaded() { +if !sp.filter.IsLoaded() { 

btcsuite / btcd: рдЕрдзрд┐рдХрддрдо рд╕рдВрдЪрд╛рд▓рди рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд╕рд╛рде рдЙрд▓рдЯ рдкрд░реАрдХреНрд╖рдг рдмрдЧ рдХреЛ рдареАрдХ рдХрд░реЗрдВ :


 -if pop.opcode.value < OP_16 { +if pop.opcode.value > OP_16 { s.numOps++ 

рдЕрджреНрдпрддрди рд░рд┐рд╕реАрд╡рд░ (рдпрд╣ / рд╕реНрд╡рдпрдВ) рдореВрд▓реНрдп рджреНрд╡рд╛рд░рд╛ рдкрд╛рд░рд┐рдд


рдХреНрд▓рд╛рд╕рд┐рдХред рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рдПрдХ рдкреНрд░рддрд┐ рд╡рд┐рдзрд┐ рдХреЗ рдЕрдВрджрд░ рд╕рдВрд╢реЛрдзрд┐рдд рдХреА рдЬрд╛рддреА рд╣реИ, рдЬрд┐рд╕рдХреЗ рдХрд╛рд░рдг рдХреЙрд▓рд░ рдХреЛ рдЕрдкреЗрдХреНрд╖рд┐рдд рдкрд░рд┐рдгрд╛рдо рдирд╣реАрдВ рджрд┐рдЦрд╛рдИ рджреЗрдВрдЧреЗред


рдлрд┐рдХреНрд╕реНрдб рдПрдХ рд╕реНрдЯреИрдХ / рдХрддрд╛рд░ / deque рдмрдЧ (рдкреЙрдЗрдВрдЯрд░ рд░рд┐рд╕реАрд╡рд░) :


 -func (s Stack) Push(x interface{}) { - s = append(s, x) +func (s *Stack) Push(x interface{}) { + *s = append(*s, x) } 

рдПрдХ рд▓реВрдк рдХреЗ рдЕрдВрджрд░ рд╡рд╕реНрддреБрдУрдВ рдХреА рдкреНрд░рддрд┐рдпрд╛рдВ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛


рд╕рдордХрд╛рд▓рд┐рдХ / рдЯреНрд░реИрдлрд┐рдХ: рд╕реНрд▓рд╛рдЗрд╕ рдореЗрдВ рдирд┐рд╣рд┐рдд рдРрдкреНрд╕ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд┐рдП рдЧрдП рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЕрд╕рд╛рдЗрди рдХрд░реЗрдВ :


 -for _, app := range filteredApps { - app.Tasks = fun.Filter(func(task *marathon.Task) bool { +for i, app := range filteredApps { + filteredApps[i].Tasks = fun.Filter(func(task *marathon.Task) bool { return p.taskFilter(*task, app) }, app.Tasks).([]*marathon.Task) 

рд╢рд╛рдорд┐рд▓ / рдЯреНрд░реИрдлрд┐рдХ: рдкреИрдХреЗрдЬ рд╕реБрд░рдХреНрд╖рд┐рдд рдХреЗ рд▓рд┐рдП рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдг рдЬреЛрдбрд╝реЗрдВ :


 -for _, routine := range p.routines { +for i := range p.routines { p.waitGroup.Add(1) - routine.stop = make(chan bool, 1) + p.routines[i].stop = make(chan bool, 1) Go(func() { - routine.goroutine(routine.stop) + p.routines[i].goroutine(p.routines[i].stop) p.waitGroup.Done() }) } 

рд░реИрдкрд┐рдВрдЧ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред


gorgonia / gorgonia: рдЧреНрд░реИрдб рдореЗрдВ рдПрдХ рдЫреЛрдЯреЗ рдЧреИрд░-рдкрд░рд┐рдгрд╛рдореА рдмрдЧ рдХреЛ рдлрд┐рдХреНрд╕реНрдб () :


 if !n.isInput() { - errors.Wrapf(err, ...) - // return + err = errors.Wrapf(err, ...) + return nil, err } 

рдмрдирд╛рдиреЗ рдХреЗ рд╕рд╛рде рдЧрд▓рдд рдХрд╛рдо


рдХрднреА-рдХрднреА рдпреБрд╡рд╛ рдЧреЛрдлрд╝рд░ " make([]T, count) " рдЙрд╕рдХреЗ рдмрд╛рдж рд▓реВрдк рдХреЗ рдЕрдВрджрд░ append рд╣реЛрддреЗ рд╣реИрдВред рдпрд╣рд╛рдБ рд╕рд╣реА рд╡рд┐рдХрд▓реНрдк " make([]T, 0, count) " рд╣реИред


HouzuoGuo / рдмрдВрдз: рдПрдХ рд╕рдВрдЧреНрд░рд╣ рд╕реНрдХреИрди рдмрдЧ рдХреЛ рдареАрдХ рдХрд░реЗрдВ :


 -ids := make([]uint64, benchSize) +ids := make([]uint64, 0) 

рдЙрдкрд░реЛрдХреНрдд рд╕реБрдзрд╛рд░ рдореВрд▓ рддреНрд░реБрдЯрд┐ рдХреЛ рдареАрдХ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рджреЛрд╖ рд╣реИ рдЬреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ рддрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:


 -ids := make([]uint64, 0) +ids := make([]uint64, 0, benchSize) 

рд▓реЗрдХрд┐рди рдХреБрдЫ рдСрдкрд░реЗрд╢рди, рдЬреИрд╕реЗ рдХрд┐ copy рдпрд╛ ScanSlice рдХреЛ "рд╕рд╣реА" рд▓рдВрдмрд╛рдИ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред


go-xorm / xorm: рдмрдЧ рдлрд┐рдХреНрд╕ рдХреЗ рд▓рд┐рдП SumsInt рдЦрд╛рд▓реА рд╕реНрд▓рд╛рдЗрд╕ рд▓реМрдЯреЗрдВ :


 -var res = make([]int64, 0, len(columnNames)) +var res = make([]int64, len(columnNames), len(columnNames)) if session.IsAutoCommit { err = session.DB().QueryRow(sqlStr, args...).ScanSlice(&res) } else { 

рдЬрд▓реНрдж рд╣реА рдЧреЛ-рдЖрд▓реЛрдЪрдХ рдЗрд╕ рд╡рд░реНрдЧ рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдВрдЧреЗред


рдЕрдиреНрдп рддреНрд░реБрдЯрд┐рдпрд╛рдВ


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


рдореБрдЭреЗ рдФрд░ рдЪрд╛рд╣рд┐рдП!


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


рдЧреЛрдирдо / рдЧреЛрдирдо: рд╕рдмреНрд╕реЗрдЯ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рдлрд┐рдХреНрд╕реНрдб рдмрдЧ :


 -for _, el := range *s1 { +for el := range *s1 { if _, ok := (*s2)[el]; !ok { return false } 

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


dgraph-io / dgraph: рд╕рд░реНрд╡рд░ / main.go рдореЗрдВ nil рдкреЙрдЗрдВрдЯрд░ рд░реЗрдлрд░реЗрдВрд╕ рдмрдЧ рдлрд┐рдХреНрд╕ рдХрд░рдирд╛ :


 func (s *server) Query(ctx context.Context, - req *graph.Request) (resp *graph.Response, err error) { + req *graph.Request) (*graph.Response, error) { + resp := new(graph.Response) 

рддреНрд░реБрдЯрд┐рдпреЛрдВ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рджреМрд░рд╛рди рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рдФрд░ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдЫрд╛рдпрд╛рджрд╛рд░ рдХрд╛рдЯрдиреЗред


btcsuite / btcd: blockchain / indexers: рдЗрдВрдбреЗрдХреНрд╕ рд░реА-рдСрд░реНрдЧ рдХреИрдЪ рдореЗрдВ рдмрдЧ рдХреЛ рдареАрдХ рдХрд░реЗрдВ :


 -block, err := btcutil.NewBlockFromBytes(blockBytes) +block, err = btcutil.NewBlockFromBytes(blockBytes) if err != nil { return err } 

go-xorm / xorm: рдмрдЧ рдХреЛ рдареАрдХ рдХрд░реЗрдВ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░реЗрдВ :


 -err = session.Rollback() +err1 := session.Rollback() +if err1 == nil { + return lastId, err +} +err = err1 

gin-gonic / gin: рд░рди * рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ debugPrint рдХреЗ рд╕рд╛рде рдлрд┐рдХреНрд╕реНрдб рдиреНрдпреВрд▓рд╛рдЗрди рд╕рдорд╕реНрдпрд╛ :


 -debugPrint("Listening and serving HTTP on %s", addr) +debugPrint("Listening and serving HTTP on %s\n", addr) 

рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдореНрдпреВрдЯреЗрдХреНрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╕реЗ рдореБрдЭреЗ рдПрдХ рдЪреЗрдХ рд▓рд┐рдЦрдиреЗ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдЖрдпрд╛ рдЬреЛ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдПрдХ рд╕рджрд╕реНрдп рдХреЗ рд░реВрдк рдореЗрдВ *sync.Mutex рдХреЗ рдЙрдкрдпреЛрдЧ рдкрд░ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рддрд╛ рд╣реИред рдбреЗрд╡ рдЪреЗрдиреА рд╣рдореЗрд╢рд╛ рдореНрдпреВрдЯреЗрдХреНрд╕ рдореВрд▓реНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддреЗ рд╣реИрдВ , рди рдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕реВрдЪрдХред


рдЯреАрдореЗрдВ / xlsx: рд╕реНрдкреНрд░реИрдбрд╢реАрдЯ рд▓реЛрдб рдХрд░рддреЗ рд╕рдордп рдмрдЧ рдХреЛ рдареАрдХ рдХрд░реЗрдВ :


  styleCache map[int]*Style `-` + lock *sync.RWMutex } 



рд╕рдВрджрд┐рдЧреНрдз рдХреЛрдб рдХреЗ рдЦрд┐рд▓рд╛рдл рдзрд░реНрдордпреБрджреНрдз


badCond


badCond рдЪреЗрдХ рд╕рдВрднрд╛рд╡рд┐рдд рдЧрд▓рдд рддрд╛рд░реНрдХрд┐рдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдкрд╛рддрд╛ рд╣реИред


рд╕рдВрджрд┐рдЧреНрдз рддрд╛рд░реНрдХрд┐рдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреЗ рдЙрджрд╛рд╣рд░рдг:


  • рдкрд░рд┐рдгрд╛рдо рд╣рдореЗрд╢рд╛ true рдпрд╛ false
  • рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдПрдХ рдРрд╕реЗ рд░реВрдк рдореЗрдВ рд▓рд┐рдЦреА рдЧрдИ рд╣реИ рдЬреЛ рддреНрд░реБрдЯрд┐рдкреВрд░реНрдг рд╕реЗ рд▓рдЧрднрдЧ рдЕрдкреНрд░рднреЗрджреНрдп рд╣реИ

рдпрд╣ рдЪреЗрдХ " x == nil && x == y " рдЬреИрд╕реЗ рдСрдкрд░реЗрд╢рди рдкрд░ рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдПрдХ рд╕рд░рд▓ рдЙрдкрд╛рдп " x == nil && y == nil " рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдирд╛ рд╣реИред рдХреЛрдб рдХреА рдкрдардиреАрдпрддрд╛ рдХреЛ рдиреБрдХрд╕рд╛рди рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд▓рд┐рдВрдЯрд░ рдХреЛ рдЗрд╕ рдХреЛрдб рдореЗрдВ рдХреБрдЫ рднреА рд╕рдВрджрд┐рдЧреНрдз рдирд╣реАрдВ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ред


рдпрд╣рд╛рдБ рдмрдЧ рдлрд┐рдХреНрд╕ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдЬреЛ badCond рджреНрд╡рд╛рд░рд╛ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:


 -if err1 := f(); err != nil && err == nil { +if err1 := f(); err1 != nil && err == nil { err = err1 } 

рдЯреНрд░рд╛рдлреА:



weakCond


weakCond рдХреЗ рд╕рдорд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдЕрд▓рд░реНрдЯ рдХрд╛ рдЖрддреНрдорд╡рд┐рд╢реНрд╡рд╛рд╕ рд╕реНрддрд░ рдереЛрдбрд╝рд╛ рдХрдо рд╣реИред


рдПрдХ рдХрдордЬреЛрд░ рд╕реНрдерд┐рддрд┐ рдПрдХ рдРрд╕реА рд╕реНрдерд┐рддрд┐ рд╣реИ рдЬреЛ рдЗрдирдкреБрдЯ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рдХрд╡рд░ рдирд╣реАрдВ рдХрд░рддреА рд╣реИред


рдХрдордЬреЛрд░ (рдЕрдкрд░реНрдпрд╛рдкреНрдд) рд╕реНрдерд┐рддрд┐ рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рдЙрджрд╛рд╣рд░рдг nil рд▓рд┐рдП рд╕реНрд▓рд╛рдЗрд╕ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛ рдФрд░ рдлрд┐рд░ рдкрд╣рд▓реЗ рддрддреНрд╡ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИред рдпрд╣рд╛рдВ " s != nil " рд╕реНрдерд┐рддрд┐рдпрд╛рдВ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИрдВред рд╕рд╣реА рд╕реНрдерд┐рддрд┐ " len(s) != 0 " рдпрд╛ рдЗрд╕рдХреЗ рд╕рдорддреБрд▓реНрдп рд╣реИ:


 func addRequiredHeadersToRedirectedRequests( req *http.Request, via []*http.Request) error { - if via != nil && via[0] != nil { + if len(via) != 0 && via[0] != nil { 

рдЯреНрд░рд╛рдлреА:



dupArg


рдХреБрдЫ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдПрдХ рд╣реА рдорд╛рди (рдпрд╛ рдЪрд░) рдХреЛ рдХрдИ рддрд░реНрдХреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рд╕реЗ рдмрд╣реБрдд рдЕрд░реНрде рдирд╣реАрдВ рдирд┐рдХрд▓рддрд╛ рд╣реИред рдЕрдХреНрд╕рд░, рдпрд╣ рдПрдХ рдХреЙрдкреА / рдкреЗрд╕реНрдЯ рддреНрд░реБрдЯрд┐ рдХрд╛ рд╕рдВрдХреЗрдд рджреЗрддрд╛ рд╣реИред


рдРрд╕реЗ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг copy ред рдПрдХреНрд╕рдкреНрд░реЗрд╢рди copy(xs, xs) рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИред


 -if !bytes.Equal(i2.Value, i2.Value) { +if !bytes.Equal(i1.Value, i2.Value) { return fmt.Errorf("tries differ at key %x", i1.Key) } 

рдЯреНрд░рд╛рдлреА:



dupCase


рдЖрдк рд╢рд╛рдпрдж рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЧреЛ рдореЗрдВ рдЖрдк switch рдЕрдВрджрд░ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ case рд╡реИрд▓реНрдпреВрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред


рдиреАрдЪреЗ рджрд┐рдпрд╛ рдЧрдпрд╛ рдЙрджрд╛рд╣рд░рдг рд╕рдВрдХрд▓рд┐рдд рдирд╣реАрдВ рд╣реИ :


 switch x := 0; x { case 1: fmt.Println("first") case 1: fmt.Println("second") } 

рд╕рдВрдХрд▓рди рддреНрд░реБрдЯрд┐: рд╕реНрд╡рд┐рдЪ рдореЗрдВ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХреЗрд╕ 1ред

рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рд╣рдо рдПрдХ рдЙрджрд╛рд╣рд░рдг рдФрд░ рдЕрдзрд┐рдХ рджрд┐рд▓рдЪрд╕реНрдк рд▓реЗрддреЗ рд╣реИрдВ :


 one := 1 switch x := 1; x { case one: fmt.Println("first") case one: fmt.Println("second") } 

рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдорд╛рди рдЪрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдиреБрдорддрд┐ рджреА рдЬрд╛рддреА рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, switch true рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдФрд░ рднреА рдЕрдзрд┐рдХ рдЬрдЧрд╣ рджреЗрддрд╛ рд╣реИ:


 switch x := 0; true { case x == 1: fmt.Println("first") case x == 1: fmt.Println("second") } 

рдФрд░ рдпрд╣рд╛рдБ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рддреНрд░реБрдЯрд┐ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ:


 switch { case m < n: // Upper triangular matrix. //   . case m == n: // Diagonal matrix. //   . -case m < n: // Lower triangular matrix. +case m > n: // Lower triangular matrix. //   . } 

рдЯреНрд░рд╛рдлреА:



dupBranchBody


рд╕рд╢рд░реНрдд рд╡рд┐рд╡рд░рдг рдЬреИрд╕реЗ if/else рдФрд░ switch рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдХрд╛рдп рд╣реИрдВред рдЬрдм рд╢рд░реНрдд рдкреВрд░реА рд╣реЛ рдЬрд╛рддреА рд╣реИ, рддреЛ рд╕рдВрдЪрд╛рд▓рди рдХреА рд╕рдВрдмрдВрдзрд┐рдд рдЗрдХрд╛рдИ рдкрд░ рдирд┐рдпрдВрддреНрд░рдг рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЕрдиреНрдп рдбрд╛рдпрдЧреНрдиреЛрд╕реНрдЯрд┐рдХреНрд╕ рдпрд╣ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЗрди рдмреНрд▓реЙрдХреЛрдВ рдХреА рд╕реНрдерд┐рддрд┐рдпрд╛рдВ рднрд┐рдиреНрди рд╣реИрдВ, рдлрд┐рд░ рднреА dupBranchBody рдЬрд╛рдВрдЪрддрд╛ рд╣реИ рдХрд┐ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдмреНрд▓реЙрдХ рд╕реНрд╡рдпрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдорд╛рди рдирд╣реАрдВ рд╣реИрдВред


рд╕рд╢рд░реНрдд рдмрдпрд╛рдиреЛрдВ рдХреЗ рдЕрдВрджрд░ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдирд┐рдХрд╛рдпреЛрдВ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐, рдЬрдм рддрдХ рдХрд┐ рдпрд╣ рдПрдХ type switch рд╣реИ, рдХрдо рд╕реЗ рдХрдо рд╕рдВрджрд┐рдЧреНрдз рд╣реИред


 -if s, err := r.ReceivePack(context.Background(), req); err != nil { - return s, err -} else { - return s, err -} +return r.ReceivePack(context.Background(), req) 

рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдХреЛрдб рдХреА рд╢реБрджреНрдзрддрд╛ рдХреА рдбрд┐рдЧреНрд░реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд┐рд░реНрдгрдп рдкрд╛рдардХ рдкрд░ рдЫреЛрдбрд╝ рджрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ:


 if field.IsMessage() || p.IsGroup(field) { //   . } else if field.IsString() { if nullable && !proto3 { p.generateNullableField(fieldname, verbose) } else { pP(`if this.`, fieldname, ` != that1.`, fieldname, `{`) } } else { if nullable && !proto3 { p.generateNullableField(fieldname, verbose) } else { pP(`if this.`, fieldname, ` != that1.`, fieldname, `{`) } } } 

" if field.IsString() " рдФрд░ рд╕рдВрдмрджреНрдз " else " рдХреЗ рдЕрдВрджрд░ рдирд┐рдХрд╛рдп рд╕рдорд╛рди рд╣реИрдВред


рдЯреНрд░рд╛рдлреА:



caseOrder


рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдЕрдВрджрд░ type switch рдкрд╣рд▓реЗ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рдХреНрд░рдорд┐рдХ рд░реВрдк type switch рдХреНрд░рдордмрджреНрдз type switch ред рдпрджрд┐ рдЯреИрдЧ рдХрд╛ рдорд╛рди рдЯрд╛рдЗрдк *T , рдФрд░ рдЗрдореНрдкреНрд▓реАрдореЗрдВрдЯ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ I , рддреЛ рдЖрдкрдХреЛ " case I " рдХреЗ рд╕рд╛рде рд▓реЗрдмрд▓ рд╕реЗ рдкрд╣рд▓реЗ " case *T " рдХреЗ рд╕рд╛рде рдПрдХ рд▓реЗрдмрд▓ рд▓рдЧрд╛рдирд╛ рд╣реЛрдЧрд╛, рдЕрдиреНрдпрдерд╛ рдХреЗрд╡рд▓ " case I " рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ *T I рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рд╣реИ (рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд рдирд╣реАрдВ)ред


 case string: res = append(res, NewTargetExpr(v).toExpr().(*expr)) -case Expr: - res = append(res, v.toExpr().(*expr)) case *expr: res = append(res, v) +case Expr: + res = append(res, v.toExpr().(*expr)) 

рдЯреНрд░рд╛рдлреА:



offBy1


рдкреНрд░рддрд┐ рдпреВрдирд┐рдЯ рддреНрд░реБрдЯрд┐ рдЗрддрдиреА рд▓реЛрдХрдкреНрд░рд┐рдп рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рдЕрдкрдирд╛ рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рдкреГрд╖реНрда рднреА рд╣реИ ред


 if len(optArgs) > 1 { return nil, ErrTooManyOptArgs } -node = optArgs[1] +node = optArgs[0] 

 -last := xs[len(xs)] +last := xs[len(xs) - 1] 

рдЗрд╕ рддрд░рд╣ рдХреА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП go-critic рдкрд╛рд╕ рд╕реАрдорд┐рдд рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрднреА рддрдХ рдПрдХ рднреА рдлрд┐рдХреНрд╕ рдХреЛ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдирд╣реАрдВ рднреЗрдЬрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣рд╛рдБ рдХреБрдЫ рдлрд┐рдХреНрд╕реЗрд╕ рджрд┐рдП рдЧрдП рд╣реИрдВ рдЬреЛ рдХрд╣рд╛рдиреА рджреЗрдЦрддреЗ рд╕рдордп рджрд┐рдП рдЧрдП рд╣реИрдВ:



рдЕрдВрдд рдореЗрдВ рдереЛрдбрд╝рд╛ рдбрд░


go vet рдореЗрдВ " x != a || x != b " рдЬреИрд╕реЗ рднрд╛рд╡реЛрдВ рдХреА рдЕрдЪреНрдЫреА рдЬрд╛рдБрдЪ рд╣реИред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд▓реЛрдЧреЛрдВ рдХреЛ gometalinter рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рдкрддрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди go vet gometalinter рд▓рдЧрднрдЧ рд╕рднреА рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░рддрд╛ рд╣реИ, рд╣реИ рдирд╛?


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


рд╕рдмрд╕реЗ рдмрд╣рд╛рджреБрд░ рдмрд┐рд▓реНрд▓рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП


рдореИрдВ рдЗрд╕ рд╕реВрдЪреА рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдФрд░ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рднреЗрдЬрдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд░рддрд╛ рд╣реВрдВред


 cloud.google.com/go/trace/trace_test.go:943:7: expectTraceOption != ((o2&1) != 0) || expectTraceOption != ((o3&1) != 0) github.com/Shopify/sarama/mocks/sync_producer_test.go:36:5: offset != 1 || offset != msg.Offset github.com/Shopify/sarama/mocks/sync_producer_test.go:44:5: offset != 2 || offset != msg.Offset github.com/docker/libnetwork/api/api_test.go:376:5: id1 != i2e(i2).ID || id1 != i2e(i3).ID github.com/docker/libnetwork/api/api_test.go:408:5: "sh" != epList[0].Network || "sh" != epList[1].Network github.com/docker/libnetwork/api/api_test.go:1196:5: ep0.ID() != ep1.ID() || ep0.ID() != ep2.ID() github.com/docker/libnetwork/api/api_test.go:1467:5: ep0.ID() != ep1.ID() || ep0.ID() != ep2.ID() github.com/docker/libnetwork/ipam/allocator_test.go:1261:5: len(indices) != len(allocated) || len(indices) != num github.com/esimov/caire/grayscale_test.go:27:7: r != g || r != b github.com/gogo/protobuf/test/bug_test.go:99:5: protoSize != mSize || protoSize != lenData github.com/gogo/protobuf/test/combos/both/bug_test.go:99:5: protoSize != mSize || protoSize != lenData github.com/gogo/protobuf/test/combos/marshaler/bug_test.go:99:5: protoSize != mSize || protoSize != lenData github.com/gogo/protobuf/test/combos/unmarshaler/bug_test.go:99:5: protoSize != mSize || protoSize != lenData github.com/gonum/floats/floats.go:65:5: len(dst) != len(s) || len(dst) != len(y) github.com/gonum/lapack/testlapack/dhseqr.go:139:7: wr[i] != h.Data[i*h.Stride+i] || wr[i] != h.Data[(i+1)*h.Stride+i+1] github.com/gonum/stat/stat.go:1053:5: len(x) != len(labels) || len(x) != len(weights) github.com/hashicorp/go-sockaddr/ipv4addr_test.go:659:27: sockaddr.IPPort(p) != test.z16_portInt || sockaddr.IPPort(p) != test.z16_portInt github.com/hashicorp/go-sockaddr/ipv6addr_test.go:430:27: sockaddr.IPPort(p) != test.z16_portInt || sockaddr.IPPort(p) != test.z16_portInt github.com/nats-io/gnatsd/server/monitor_test.go:1863:6: v.ID != c.ID || v.ID != r.ID github.com/nbutton23/zxcvbn-go/adjacency/adjcmartix.go:85:7: char != "" || char != " " github.com/openshift/origin/pkg/oc/cli/admin/migrate/migrator_test.go:85:7: expectedInfos != writes || expectedInfos != saves github.com/openshift/origin/test/integration/project_request_test.go:120:62: added != deleted || added != 1 github.com/openshift/origin/test/integration/project_request_test.go:126:64: added != deleted || added != 4 github.com/openshift/origin/test/integration/project_request_test.go:132:62: added != deleted || added != 1 gonum.org/v1/gonum/floats/floats.go:60:5: len(dst) != len(s) || len(dst) != len(y) gonum.org/v1/gonum/lapack/testlapack/dhseqr.go:139:7: wr[i] != h.Data[i*h.Stride+i] || wr[i] != h.Data[(i+1)*h.Stride+i+1] gonum.org/v1/gonum/stat/stat.go:1146:5: len(x) != len(labels) || len(x) != len(weights) 



рджреВрд╕рд░реЛрдВ рдХреА рдЧрд▓рддрд┐рдпреЛрдВ рд╕реЗ рд╕реАрдЦрдирд╛



рдирд╣реАрдВ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдВрддрд┐рдо рднрд╛рдЧ рдореЗрдВ рдорд╢реАрди рд▓рд░реНрдирд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реЛрдЧрд╛ред


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


go-critic рдХреЛ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рд▓рд┐рдВрдЯрдкреИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред рд╡рд┐рд╡рд░рдг рдЧреЛ рд▓рд┐рдВрдЯрдкреИрдХ рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ : рдПрдХ рд╕рдВрдпреЛрдЬрдХ рд▓рд┐рдВрдЯрд░ рдореИрдиреЗрдЬрд░ ред


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


рд╕рднреА рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫрд╛ рд╣реИред

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


All Articles