
_ = err 或直接忽略。return result, nil(可用)return nil, err(不可用)return nil, nil(语义暧昧)return result, err(信谁?)res, err := svc.Do(ctx)
if err != nil {
// 选一种:记录 或 返回
return nil, fmt.Errorf("do: %w", err)
}
return res, nil
// ✅ 起步:具体类型
type FileStore struct{ dir string }
func (s *FileStore) Save(b []byte) error { /*...*/ return nil }
// ✅ 需要多实现时再定义接口
type Saver interface{ Save([]byte) error }
func Upload(s Saver, b []byte) error { return s.Save(b) }
sync.Mutex / sync.WaitGroup;复杂编排再用 channel,减少“二次 close / send on closed”与死锁风险。 (Speaker Deck[2])type Counter struct {
mu sync.Mutex
n int
}
func (c *Counter) Inc() { c.mu.Lock(); c.n++; c.mu.Unlock() }
if ok := check(id); !ok { return errors.New("bad id") } // ok 就地声明
error 处理,不要遍地 if x==nil。type Profile struct {
Name string // 值类型更安全
}
if err := validate(req); err != nil { return err }
// 主流程更扁平
util.go / misc.go / constants.go 这类“杂物间”。userMap、idStr、injectFn。// 为了避免在热路径上分配,我们用对象池复用缓冲区,牺牲可读性换吞吐。
nil,nil。util.go,按领域命名、就近放置。注:本文为演讲要点的中文化与工程落地版,便于团队直接纳入代码评审与编码规范。欢迎转给同事做 code review checklist。
[1]Speaker Deck: https://speakerdeck.com/konradreiche/writing-better-go-lessons-from-10-code-reviews?utm_source=chatgpt.com
[2]Speaker Deck: https://speakerdeck.com/konradreiche/writing-better-go-lessons-from-10-code-reviews?utm_source=chatgpt.com
[3]Speaker Deck: https://speakerdeck.com/konradreiche/writing-better-go-lessons-from-10-code-reviews?utm_source=chatgpt.com
[4]Speaker Deck: https://speakerdeck.com/konradreiche/writing-better-go-lessons-from-10-code-reviews?utm_source=chatgpt.com
[5]Speaker Deck: https://speakerdeck.com/konradreiche/writing-better-go-lessons-from-10-code-reviews?utm_source=chatgpt.com
[6]Speaker Deck: https://speakerdeck.com/konradreiche/writing-better-go-lessons-from-10-code-reviews?utm_source=chatgpt.com
[7]golab.io: https://golab.io/speakers/reiche?utm_source=chatgpt.com
[8]golab.io: https://golab.io/talks/writing-better-go-lessons-from-10-code-reviews?utm_source=chatgpt.com
[9]Speaker Deck: https://speakerdeck.com/konradreiche/writing-better-go-lessons-from-10-code-reviews?utm_source=chatgpt.com
[10]golangweekly.com: https://golangweekly.com/issues/575?utm_source=chatgpt.com