Go1.18 泛型的使用

Go1.18 泛型的使用,第1张

Go1.18 泛型的使用 1. 对函数的支持
// 定义一个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)
}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/989744.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存