我想让下面的代码编译。通过阅读类型参数提案(Go Generics),我的理解是这应该可行,但我一定错过了一些东西。
package main
import "fmt"
func main() {
s := Struct{A: "Hello World!"}
PrintA(s)
}
func PrintA[T Type](v T) {
fmt.Printf("%s\n", v.A)
}
type Type interface {
struct{ A string }
}
type Struct struct {
A string
}
func (s Struct) String() string {
return s.A
}
Run Code Online (Sandbox Code Playgroud)
我得到的错误是:
./prog.go:7:8:Struct 未实现 Type(约束 Type 中的 struct{A string} 可能缺少 ~)
./prog.go:11:23:vA 未定义(类型 T 没有字段或方法 A )
我想T
用特定类型的特定字段来表示所有结构。添加~
没有帮助。
以下是已实施的提案中的一个示例,它是最新 Go beta 版本的一部分。
type structField interface {
struct { …
Run Code Online (Sandbox Code Playgroud)