go-dev
18
总安装量
17
周安装量
#19487
全站排名
安装命令
npx skills add https://github.com/doccker/cc-use-exp --skill go-dev
Agent 安装分布
codex
14
opencode
14
claude-code
13
gemini-cli
13
antigravity
12
windsurf
11
Skill 文档
Go å¼åè§è
åèæ¥æº: Effective GoãGo Code Review Commentsãuber-go/guide
å·¥å ·é¾
goimports -w . # æ ¼å¼åå¹¶æ´ç import
go vet ./... # éæåæ
golangci-lint run # ç»¼åæ£æ¥
go test -v -race -cover ./... # æµè¯ï¼å«ç«ææ£æµåè¦ççï¼
å½å约å®
| ç±»å | è§å | ç¤ºä¾ |
|---|---|---|
| å å | å°ååè¯ï¼ä¸ç¨ä¸å线 | user, orderservice |
| åé/彿° | 驼峰å½åï¼ç¼©åè¯ä¸è´å¤§å°å | userID, HTTPServer |
| 常é | 导åºç¨é©¼å³°ï¼ç§æå¯é©¼å³°æå ¨å¤§å | MaxRetryCount |
| æ¥å£ | åæ¹æ³ç¨æ¹æ³å+er | Reader, Writer |
ç¦æ¢: common, util, base çæ æä¹å
å
import 顺åº
import (
"context" // æ ååº
"fmt"
"github.com/gin-gonic/gin" // ç¬¬ä¸æ¹åº
"project/internal/model" // 项ç®å
é¨
)
é误å¤ç
å¿ é¡»å¤çé误ï¼ä¸è½å¿½ç¥ï¼
// â
å¥½ï¼æ·»å ä¸ä¸æ
if err != nil {
return fmt.Errorf("failed to query user %d: %w", userID, err)
}
// â å·®ï¼å¿½ç¥é误
result, _ := doSomething()
é误å
è£
: ä½¿ç¨ %w ä¿çé误é¾ï¼ç¨ errors.Is() / errors.As() æ£æ¥
å¹¶åç¼ç¨
åºæ¬åå:
- ä¼å ä½¿ç¨ channel éä¿¡
- å¯å¨ goroutine åèèï¼è°æ¥çå¾ å®ï¼æä¹åæ¢å®ï¼
- 使ç¨
context.Contextæ§å¶çå½å¨æ
// â
好ï¼ä½¿ç¨ context æ§å¶
func process(ctx context.Context) error {
done := make(chan error, 1)
go func() { done <- doWork() }()
select {
case err := <-done:
return err
case <-ctx.Done():
return ctx.Err()
}
}
æ°æ®ç«äº: ä½¿ç¨ go test -race æ£æµ
æµè¯è§è
// è¡¨é©±å¨æµè¯
func TestAdd(t *testing.T) {
tests := []struct {
name string
a, b int
expected int
}{
{"positive", 1, 2, 3},
{"zero", 0, 0, 0},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
got := Add(tt.a, tt.b)
if got != tt.expected {
t.Errorf("Add(%d, %d) = %d, want %d", tt.a, tt.b, got, tt.expected)
}
})
}
}
æ§è½ä¼å
| é·é± | è§£å³æ¹æ¡ |
|---|---|
| 循ç¯ä¸æ¼æ¥å符串 | ä½¿ç¨ strings.Builder |
| æªé¢åé slice | make([]T, 0, cap) |
| N+1 æ¥è¯¢ | æ¹éæ¥è¯¢ + é¢å è½½ |
| æ éå¶å¹¶å | ä½¿ç¨ semaphore æ worker pool |
# æ§è½åæ
go test -cpuprofile=cpu.prof -bench=.
go tool pprof cpu.prof
项ç®ç»æ
project/
âââ cmd/ # 坿§è¡æä»¶å
¥å£
âââ internal/ # ç§æä»£ç
â âââ handler/
â âââ service/
â âââ repository/
â âââ model/
âââ pkg/ # å
Œ
±ä»£ç
âââ go.mod
âââ go.sum
详ç»åè
宿´è§èè§ references/go-style.mdï¼å
å«ï¼
- 宿´å½å约å®å示ä¾
- 详ç»é误å¤ç模å¼
- å¹¶åç¼ç¨æä½³å®è·µ
- æµè¯è¾ å©å½æ°åæ³
- æ§è½ä¼åå·¥å ·ä½¿ç¨
ð æ¬åå¤éµå¾ªï¼
go-dev– [å ·ä½ç« è]