// 定义一个any类型的参数
// T 就是any类型
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"
// 声明一个map类型, 关键字是K 值是any --> any ==> interface{}
// 并且关节词不支持any,底层不支持
type M[K string, V any] map[K]V // 这里的K不支持any,由于底层map不支持,所以使用string
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)
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)