gpt4 book ai didi

pointers - 为什么接口(interface)不能用指针接收器实现

转载 作者:IT老高 更新时间:2023-10-28 12:58:37 25 4
gpt4 key购买 nike

我很困惑为什么编译失败:

impossible type assertion: Faz does not implement Foo (Bar method has pointer receiver)

如果我将 Faz.Bar 的接收器设为 Faz 值而不是 Faz 指针,那么它编译得很好,但我认为拥有指针接收器总是更好,这样值就不会被复制?

package main

import (
"log"
)

func main() {
foo := New().(Faz)
log.Println(foo)
}

type Foo interface {
Bar() string
}

func New() Foo {
return &Faz{}
}

type Faz struct {
}

func (f *Faz) Bar() string {
return `Bar`
}

最佳答案

因为它是 *Faz 而不是 Faz

func main() {
foo := New().(*Faz)
log.Println(foo)
}

关于pointers - 为什么接口(interface)不能用指针接收器实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30403642/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com