如何在golang中分配一个指向接口的指针

package main

import "fmt"

type intr interface {
    String() string
}

type bar struct{}

func (b *bar) String() string {
    return "bar"
}

type foo struct {
    bar *intr
}

func main() {
    bar1 := bar{}
    foo1 := foo{bar: &bar1} 
    fmt.Println(foo1)
}

我收到编译时错误:无法在字段值中使用&bar1(类型* bar)作为类型* intr:* intr是指向接口的指针,而不是接口 为什么会发生此错误? 如何设置foo.bar?

评论
月牙儿
月牙儿

您正在将其分配给指向接口的指针。将字段类型更改为接口后,它将起作用:

type foo struct {
    bar intr
}

很少需要指向接口的指针。

点赞
评论