Golang 泛型定义类型的时候前面 ~ 代表什么意思

先看代码,定义一个简单的泛型 c1 里面一个 int ,定义一个函数goods 下面 main函数进行调用, 如果直接传int 类型是不会报错的,但是如果传自定义类型的b就会报错。

bash 复制代码
type c1 interface {
	int
}

func goods[T c1](a T) {
	fmt.Println(a)
}

type myint int

func main() {
	var a int = 1
	var b myint = 2
	goods(a)
	goods(b) error:myint does not satisfy c1 (possibly missing ~ for int in c1)compilerInvalidTypeArg
}

对面代码改成就不会有问题

bash 复制代码
type c1 interface {
	~int
}

解释

"~" 符号的类型则代表以该类型为底层类型(underlying type)的所有类型,这类带有 "~" 的类型也被称为 approximation elemen

相关推荐
Yeats_Liao5 小时前
Go Web 编程快速入门 13 - 部署与运维:Docker容器化、Kubernetes编排与CI/CD
运维·前端·后端·golang
Yeats_Liao6 小时前
Go Web 编程快速入门 14 - 性能优化与最佳实践:Go应用性能分析、内存管理、并发编程最佳实践
前端·后端·性能优化·golang
QX_hao8 小时前
【Go】--接口(interface)
开发语言·后端·golang
不爱笑的良田8 小时前
从零开始的云原生之旅(一):把 Go 应用塞进 Docker
docker·云原生·golang
数据知道9 小时前
Go语言设计模式:桥接模式详解
设计模式·golang·桥接模式
Wenhao.10 小时前
LeetCode LRU缓存
算法·leetcode·缓存·golang
数据知道14 小时前
Go语言设计模式:原型模式详解
设计模式·golang·原型模式
千码君201614 小时前
Go语言:常量计数器iota的意义
开发语言·后端·golang·状态码·const·iota·常量
ttghgfhhjxkl17 小时前
《macOS 配置 GO 语言后,如何切换不同 GO 版本?》
开发语言·macos·golang
绛洞花主敏明18 小时前
Go语言中json.RawMessage
开发语言·golang·json