Go1.18 泛型的使用
1. 对函数的支持
func printSlice[T any](s []T) {
for _, V := range s {
fmt.Printf("%v \n", v)
}
}
func main() {
printSlice[int]([]int{66, 77, 88, 99, 100})
printSlice[string]([]string{"zhangsan", "lisi", "wangwu", "zhaosi"})
printSlice([]int{66, 77, 88, 99, 100})
}
2. 声明一个泛型map
package main
import "fmt"
type M[K string, V any] map[K]V
func main() {
m1 := M[string, int]{"key": 1}
m1["key"] = 2
m2 := M[string, string]{"key": "value"}
m2["key"] = "new value"
fmt.Println(m1, m2)
}
3. 声明一个泛型通道
package main
import "fmt"
type C[T any] chan T
func main() {
c1 := make(C[int], 10)
c1 <- 1
c1 <- 2
c2 := make(C[string], 10)
c2 <- "hello"
c2 <- "world"
fmt.Println(<-c1, <-c2)
}