标签:# Go

go 新特性浅析(泛型)

Golang在1.18时才支持了泛型,为此新增了两个操作符,|和~。 ~ T: 表示底层类型是T,比如 ~string表示所有基于string创建的自定义类型。 T1 | T2 |...: 代表或,类型列表之一。 Go的泛型有别于其它语言的方案,在Go语言中泛型叫做Type Parameter(类型参数). Golang的泛型: 1.18才有 只能用在方法上,无法使用在结构体上 泛型下边界需要在类型上使用 ~ 表达式 泛型的示例 type myStr string type customType interface { float32 | float64 | int | int8 | int32 | int16 | int64 | uint | uint8 | uint32 | uint16 | uint64 | ~string } func min[T customType](a, b T) T { if a > b { return b } return a } func main() { // 泛型 fmt.Println(min(1, 2)) fmt.Println(min(1.1, 2.2)) fmt.Println(min("3", "2")) // 自定义类型泛型 num1 := myStr("33") num2 := myStr("344") fmt.Println(min(num1, num2)) }
Read More ~

Go 新特性 embed

go 1.16版本开始,支持将静态资源文件打包至二进制文件啦~,在1.16版本之前,开源界提供了很多方案,终于在此版本官方提供了统一的解决方案。具体使用见官方文档:https://pkg.go.dev/embed import _ "embed" //go:embed hello.txt var s string print(s)
Read More ~