泛型

之前如果想要为一个非泛型结构体是编写一个可以处理任意类型的泛型方法, 那只能把这个方法声明称一个包级函数, 像这样

1
2
3
4
5
type Converter struct {}

func ConvertToStrng[T any](c Converter, val T) string {
return fmt.Sprintf("%v", val)
}

而现在, 方法可以声明自己的类型参数了, 泛型函数可以约束在特定的数据类型中使用

1
2
3
4
5
6
type Converter struct{}

//方法现在可以有自己的类型参数T
func (c Converter) ConverterToString[T any](val T) string {

}

嵌套结构体初始化

以前

1
2
3
4
5
6
7
8
type Address struct {
City string
}

type User struct {
Name string
Address
}

初始化需要这样

1
2
3
4
5
6
u := User{
Name: "Alice",
Address: Address{
City: "Taipei",
},
}

现在可以直接初始化

1
2
3
4
u := User{
Name: "Alice",
City: "Taipei",
}