Go 骨架代码
Go 标志性骨架代码行,配合代码模式练习(大小写敏感)
词条计数说明
本页展示前 50 词 / 完整 50 词。该词库全部 50 条已完整列出。
术语对照与用法说明
下面按用途归类的 Go 词汇,全部来自本页词库;分组只改变呈现顺序,词形与释义与下方完整词条列表逐条一致。
这份词库的词条不是单个单词,而是整行 Go 骨架代码——`if err != nil { return err }`、`go worker(wg, jobCh)`、`wg.Add(len(jobList))` 这样的最小可编译片段。练习方式建议配合应用内的代码模式:大小写敏感,`{`/`}`、缩进与分号都要照打,这练的是把代码结构敲进肌肉记忆,而不是认单词。下面按「这行代码在做什么」归类,同一组里的行通常一起出现在同一个函数里。
下面 6 个场景分组覆盖本页全部 50 个词条, 分组依据是词条本身的用途(代码型词库按每行代码的职责归类,术语型词库按词形归类),不是人工随意编排。
并发、通道与取消12 词
goroutine、channel、锁、原子操作与上下文取消——Go 并发的主干词汇。
- var wg sync.WaitGroup
- wg.Add(len(jobList))
- go worker(wg, jobCh)
- go func() { jobs <- i }()
- ch := make(chan string, 10)
- for msg := range msgCh {
- select { case v := <-ch: use(v) }
- ctx, cancel := context.WithCancel(ctx)
- ticker := time.NewTicker(time.Second)
- time.Sleep(2 * time.Second)
- var mu sync.RWMutex
- atomic.AddInt64(&counter, 1)
序列化、格式化与文件读写6 词
结构体与 JSON 之间的来回转换、fmt 字符串拼接,以及把字节写进文件。
- err := json.Unmarshal(raw, &cfg)
- out, err := json.Marshal(v)
- fmt.Sprintf("%s-%d", name, idx)
- label := fmt.Sprintf("worker-%d", id)
- os.WriteFile(path, data, 0644)
- w.Header().Set("Content-Type", "application/json")
错误处理与资源释放8 词
err 冒泡、错误包装与 defer 收尾——Go 里最该形成肌肉记忆的一段。
- if err != nil { return err }
- if err != nil { log.Fatal(err) }
- data, err := os.ReadFile(path)
- count, err := strconv.Atoi(input)
- defer resp.Body.Close()
- return nil, fmt.Errorf("no user")
- fmt.Errorf("read %s: %w", path, err)
- errors.New("invalid input")
类型定义、方法签名与服务骨架10 词
结构体声明、构造函数、指针接收者方法与 Stringer 接口,加上起服务、注册路由、写响应头与 t.Run 子测试。
- type User struct { ID int; Name string }
- type Server struct {
- func NewServer(cfg Config) (*Server, error) {
- func (s *Server) Start() error {
- func (u *User) String() string {
- return &Server{cfg: cfg}, nil
- t.Run("case1", func(t *testing.T) {
- srv := &http.Server{Addr: ":8080"}
- http.HandleFunc("/health", healthCheck)
- w.WriteHeader(http.StatusOK)
流程控制与变量声明5 词
带初始化语句的 if、类型 switch,以及带初始值的 var 与包级 const。
- if n := len(items); n > 0 {
- switch v := x.(type) {
- var retryCount int = 3
- const MaxRetries = 3
- if strings.HasPrefix(name, "test") {
集合与字符串处理9 词
map 增删查、切片追加、strings 系列与字节缓冲区。
- m := make(map[string][]int)
- m[key] = append(m[key], value)
- config, ok := m["config"]
- delete(cache, staleKey)
- s := strings.TrimSpace(input)
- parts := strings.Split(line, ",")
- joined := strings.Join(paths, "/")
- buf := new(bytes.Buffer)
- b, _ := io.ReadAll(resp.Body)
相关词库
这几个词库在真实工作里常一起出现,可以连着练: 后端服务与运维、推理任务与集群、前端框架与工程化词各成一条线。
词汇列表
- if err != nil { return err }
- if err != nil { log.Fatal(err) }
- data, err := os.ReadFile(path)
- err := json.Unmarshal(raw, &cfg)
- out, err := json.Marshal(v)
- count, err := strconv.Atoi(input)
- if n := len(items); n > 0 {
- switch v := x.(type) {
- var wg sync.WaitGroup
- wg.Add(len(jobList))
- go worker(wg, jobCh)
- go func() { jobs <- i }()
- ch := make(chan string, 10)
- for msg := range msgCh {
- select { case v := <-ch: use(v) }
- defer resp.Body.Close()
- ctx, cancel := context.WithCancel(ctx)
- ticker := time.NewTicker(time.Second)
- time.Sleep(2 * time.Second)
- var mu sync.RWMutex
- atomic.AddInt64(&counter, 1)
- type User struct { ID int; Name string }
- type Server struct {
- func NewServer(cfg Config) (*Server, error) {
- func (s *Server) Start() error {
- func (u *User) String() string {
- return &Server{cfg: cfg}, nil
- return nil, fmt.Errorf("no user")
- fmt.Errorf("read %s: %w", path, err)
- errors.New("invalid input")
- var retryCount int = 3
- const MaxRetries = 3
- m := make(map[string][]int)
- m[key] = append(m[key], value)
- config, ok := m["config"]
- delete(cache, staleKey)
- s := strings.TrimSpace(input)
- parts := strings.Split(line, ",")
- joined := strings.Join(paths, "/")
- if strings.HasPrefix(name, "test") {
- buf := new(bytes.Buffer)
- b, _ := io.ReadAll(resp.Body)
- fmt.Sprintf("%s-%d", name, idx)
- label := fmt.Sprintf("worker-%d", id)
- os.WriteFile(path, data, 0644)
- t.Run("case1", func(t *testing.T) {
- srv := &http.Server{Addr: ":8080"}
- http.HandleFunc("/health", healthCheck)
- w.Header().Set("Content-Type", "application/json")
- w.WriteHeader(http.StatusOK)
使用说明
以上词条与释义直接来自本词库的内容包(go-code),未做改写。 本页是静态索引页,只列出词条与释义,不提供练习;完整词库、打字练习与复习调度请进入应用。
进入完整词库 →