这一版怎么学
- 01 · 每轮独立的循环变量
保存回调、创建任务时减少意外共享。
- 02 · range 整数
重试次数、固定数量的工作单元和简单计数。
- 03 · ServeMux 方法与路径参数
使用标准库实现清晰的小型 HTTP API。
新的循环变量语义减少闭包误用,整数 range 简化计数,ServeMux 支持方法与路径参数。
查看发布说明 ↗已有 Go 基础可从示例开始;首次学习建议先完成 Go Tour ↗ 中的函数、切片、接口与并发部分。历史版本用于理解演进,新项目选用受支持的正式版本。
保存回调、创建任务时减少意外共享。
重试次数、固定数量的工作单元和简单计数。
使用标准库实现清晰的小型 HTTP API。
官方发布说明 ↗ · 核对于 2026-10-06
for 中声明的循环变量在每轮迭代中独立,闭包不再全部捕获最后一轮的变量。
怎么用保存回调、创建任务时减少意外共享。
旧版做法在循环体里用 v := v 重新声明,再创建闭包。
注意事项使用赋值给既有变量的循环仍会共享变量;示例模块需声明 go 1.22 或以上。
官方依据 ↗ · 最低版本 1.22 · 核对于 2026-10-06
运行示例保存为 main.go,在 go.mod 声明 go 1.22 或以上的项目中执行 go run .
package main
import "fmt"
func main() {
var callbacks []func() int
for i := 0; i < 3; i++ { callbacks = append(callbacks, func() int { return i }) }
for _, callback := range callbacks { fmt.Print(callback(), " ") }; fmt.Println()
}0 1 2
range n 按顺序生成从 0 到 n-1 的整数,让固定次数循环更短。
怎么用重试次数、固定数量的工作单元和简单计数。
旧版做法写 for i := 0; i < n; i++。
注意事项n 小于或等于零时不执行循环;不是从 1 开始计数。
官方依据 ↗ · 最低版本 1.22 · 核对于 2026-10-06
运行示例保存为 main.go,在 go.mod 声明 go 1.22 或以上的项目中执行 go run .
package main
import "fmt"
func main() { total := 0; for i := range 4 { total += i }; fmt.Println(total) }6
HTTP 路由可声明 GET /users/{name},通过 Request.PathValue 读取路径参数。
怎么用使用标准库实现清晰的小型 HTTP API。
旧版做法手动判断方法并切分 URL,或使用第三方路由器。
注意事项路由冲突可能在注册时 panic;GET 模式也匹配 HEAD。
官方依据 ↗ · 最低版本 1.22 · 核对于 2026-10-06
运行示例保存为 main.go,在 go.mod 声明 go 1.22 或以上的项目中执行 go run .
package main
import ("fmt"; "net/http"; "net/http/httptest")
func main() {
mux := http.NewServeMux()
mux.HandleFunc("GET /users/{name}", func(w http.ResponseWriter, r *http.Request) { fmt.Fprint(w, r.PathValue("name")) })
recorder := httptest.NewRecorder()
mux.ServeHTTP(recorder, httptest.NewRequest("GET", "/users/Ada", nil))
fmt.Println(recorder.Body.String())
}Ada
没有找到匹配的中文解读。试试其他关键词,或查看下方官方目录。
自动同步官方目录,涵盖语言、标准库、弃用及迁移变化。标题保留官方原文;中文解读精选于上方。
官方目录中没有匹配项。
提示:每轮把 i*i 加入 total。
package main
import "fmt"
func main() { total := 0; for i := range 5 { total += i*i }; fmt.Println(total) }30