这一版怎么学
- 01 · new 支持初始值表达式
构造使用指针表示可选值的字段。
- 02 · 自引用泛型约束
描述返回相同具体类型的 Add 等操作。
- 03 · errors.AsType
提取被包装的具体错误类型。
已有 Go 基础可从示例开始;首次学习建议先完成 Go Tour ↗ 中的函数、切片、接口与并发部分。历史版本用于理解演进,新项目选用受支持的正式版本。
构造使用指针表示可选值的字段。
描述返回相同具体类型的 Add 等操作。
提取被包装的具体错误类型。
官方发布说明 ↗ · 核对于 2026-10-06
new 除了接受类型,还能接受表达式,返回保存该值的新变量指针。
怎么用构造使用指针表示可选值的字段。
旧版做法先声明临时变量再取地址,或编写指针辅助函数。
注意事项new(int) 仍表示零值分配;new(42) 表示值初始化,不能混淆两种含义。
官方依据 ↗ · 最低版本 1.26 · 核对于 2026-10-06
运行示例保存为 main.go,在 go.mod 声明 go 1.26 或以上的项目中执行 go run .
package main
import "fmt"
func main() { age := new(42); fmt.Println(*age) }42
泛型类型的类型参数列表可以引用该泛型类型自身,表达同类值之间的操作。
怎么用描述返回相同具体类型的 Add 等操作。
旧版做法调整约束结构,避免在参数列表中引用自身。
注意事项这里只声明 Add 操作的关系;泛型本身不会生成该方法。
官方依据 ↗ · 最低版本 1.26 · 核对于 2026-10-06
运行示例保存为 main.go,在 go.mod 声明 go 1.26 或以上的项目中执行 go run .
package main
import "fmt"
type Adder[A Adder[A]] interface { Add(A) A }
type Number int
func (n Number) Add(other Number) Number { return n + other }
func Combine[A Adder[A]](left, right A) A { return left.Add(right) }
func main() { fmt.Println(Combine(Number(2), Number(3))) }5
泛型 AsType 返回匹配类型的错误和是否找到,省去传入目标指针的写法。
怎么用提取被包装的具体错误类型。
旧版做法声明目标变量,调用 errors.As(err, &target)。
注意事项仍遍历错误树;目标类型应是错误类型或接口,并检查布尔结果。
官方依据 ↗ · 最低版本 1.26 · 核对于 2026-10-06
运行示例保存为 main.go,在 go.mod 声明 go 1.26 或以上的项目中执行 go run .
package main
import ("errors"; "fmt"; "os")
func main() {
err := fmt.Errorf("load: %w", &os.PathError{Op:"open", Path:"note.txt", Err:os.ErrNotExist})
value, ok := errors.AsType[*os.PathError](err)
if ok { fmt.Println(value.Op, value.Path) }
}open note.txt
没有找到匹配的中文解读。试试其他关键词,或查看下方官方目录。
自动同步官方目录,涵盖语言、标准库、弃用及迁移变化。标题保留官方原文;中文解读精选于上方。
官方目录中没有匹配项。
提示:new(true) 保存 true,而 new(bool) 保存零值 false。
package main
import "fmt"
func main() { enabled := new(true); fmt.Println(*enabled) }true