这似乎是相当基本的,但我无法轻易纠正下面的程序 https://play.golang.org/p/8IJn7g0m1Asimport ( "fmt")type A struct{ value int }type B *Afunc (b B) Print() { fmt.Printf("Value: %d\n", b.value)}func main() { a := &A{1} b := new(B(a)) b.Print()}./prog.go:10:6: invalid receiver type B (B is a pointer type)./prog.go:16:12: B(a) is not a type首先,我尝试将接收器更改为 ,但不起作用。对于第二个,我尝试了,这也不起作用。func (b *B) &B{a}A实际上是一个包含互斥体的复杂结构(由 生成的结构),所以我需要将其保留为指针,同时需要在其上定义其他方法,因此定义一个新类型。protobufB
2 回答
小怪兽爱吃肉
TA贡献1852条经验 获得超1个赞
您需要在 B 的结构中嵌入 A。不能使用指针声明新类型。
type A struct{ value int }
type B struct{
*A
}
func (b B) Print() {
fmt.Printf("Value: %d\n", b.value)
}
func main() {
a := &A{1}
b := B{a}
b.Print()
}
- 2 回答
- 0 关注
- 192 浏览
添加回答
举报
0/150
提交
取消
