【发布时间】:2021-02-09 12:20:02
【问题描述】:
我正在写我的硕士论文,我正在间接使用 Go (go2go) 中的泛型“原型”。
我想知道是否可以使用组合并嵌入通用结构(当然是 go2go)?
我想做这样的事情:
type A[T any] struct {
a T
}
func (a A[T]) F() T {
return a.a
}
type B[T any] struct {
A[T]
}
func main() {
b := B[string]{A[string]{"Hello"}}
fmt.Println(b.F())
}
我会收到此错误消息,它指的是在主函数中调用“Println”:“b 的类型 B[string] 与 A[T] 不匹配(无法推断 T)”
这个的非通用版本可能是这样的(它可以工作并打印“Hello”):
type A struct {
a string
}
func (a A) F() string {
return a.a
}
type B struct {
A
}
func main() {
b := B{A{"Hello"}}
fmt.Println(b.F())
}
我对 Go 中这个新的通用方面不是很熟悉,所以可能是我做错了?还是不可能?
【问题讨论】: