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
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 ~