go - golang中接口(interface)指针和接口(interface)值有什么区别

标签 go interface type-conversion

Node是结构类型,无法编译。

但是当Node是接口(interface)类型没关系。

为什么?

type Node interface {
}
// test1's parameter are pointer
func test1(b *Node) {
    test2(b)
}
// test2's parameter are not pointer
func test2(c Node) {}

最佳答案

回答标题中的问题:接口(interface)指针是指向接口(interface)值的指针。但是,接口(interface)指针并没有那么有用,因为接口(interface)已经是引用类型。

至于为什么你的代码在 Node 时无法编译?是一个结构,您试图将一个指针传递给一个带值的函数。你应该这样做:

func test1(b *Node) {
    test2(*b)
}

但是当Node test2()的参数为空接口(interface)是 interface{} 类型也称为空接口(interface)。任何类型(包括b,它是一个指针)都将被隐式转换为空接口(interface)。因此将任何内容传递给 test2()将编译 当它的参数是 interface{} 类型时.

关于go - golang中接口(interface)指针和接口(interface)值有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62146693/

相关文章:

ruby - 在 ruby​​ 中类型转换为整数

Java:集合中的接口(interface)未被识别为参数

oracle - oracle中long数据类型与varchar数据的比较

Go lang 多路复用所有 goroutines 都睡着了 - 死锁

go - 使用 Go 确定进程/程序是否已终止

java - Java 的 C++ 仿函数,重载运算符 ()()

c# - 接口(interface)是否应该为拮抗剂方法提供定义?

r - R 中是否有用于将列(数据框或表的)自动转换为其原始向量类型的功能

go - 如何添加新路由来自动生成资源?

go - 访问结构中嵌入 slice 的值