相关疑难解决方法(0)

X没有实现Y(...方法有一个指针接收器)

关于这个" X没有实现Y(...方法有一个指针接收器) "的事情,已经有几个问答,但对我来说,他们似乎在谈论不同的事情,而不是适用于我的具体案例.

因此,我没有将问题变得非常具体,而是将其广泛和抽象化 - 似乎有几个不同的案例可以使这个错误发生,有人可以总结一下吗?

即,如何避免这个问题,如果发生,有什么可能性?谢谢.

methods pointers interface go

157
推荐指数
3
解决办法
5万
查看次数

为什么存储在接口中的值在Golang中无法寻址

引用golang wiki(https://github.com/golang/go/wiki/MethodSets#interfaces):

"存储在接口中的具体值不可寻址,就像地图元素不可寻址一样."

这里解释了地图值不可寻址的问题: 为什么地图值不可寻址?

但是,关于界面还不清楚.为什么他们无法解决?这是因为一些硬设计假设吗?

go

6
推荐指数
1
解决办法
2747
查看次数

golang和指针接收器中的自定义错误

阅读有关Web和stackoverflow上的值接收器与指针接收器的信息,我了解以下基本规则:如果您不打算修改接收器,并且接收器相对较小,则不需要指针。

然后,阅读有关实现error接口的信息(例如https://blog.golang.org/error-handling-and-go),我看到该Error()函数的示例全部使用指针接收器。

但是,我们没有修改接收器,结构非常小。

我觉得没有指针(return &appError{}vs return appError{})的代码会更好。

示例使用指针有原因吗?

error-handling pointers pass-by-reference go

5
推荐指数
2
解决办法
2264
查看次数

如何在GO中获取指向接口的指针

我想在以下代码中摆脱变量temp:

type myinterface interface {
    f1()
}

type a struct {
    val int
}

type b struct {
    mi *myinterface
}

func (a) f1() {

}

    func demo() {

        a1 := a{3}
        var temp myinterface = a1
        b1 := b{&temp}
        fmt.Println(b1)
Run Code Online (Sandbox Code Playgroud)

但如果我试着写

b1 := b{&myinterface(a1)}
Run Code Online (Sandbox Code Playgroud)

我收到了消息

不能取myinterface的地址(a1)(undefined)

这样做的正确方法是什么?

更新:

我没有指向接口的指针,因为接口可以包含结构或指向结构的指针,这也在这个问题中详述:

"<type>是指向接口的指针,而不是接口"混乱

pointers casting temporary go

1
推荐指数
2
解决办法
204
查看次数