gpt4 book ai didi

go - 空白对界面有什么作用?

转载 作者:IT王子 更新时间:2023-10-29 02:04:09 26 4
gpt4 key购买 nike

试图理解 go 中 interface 的空白功能。

type Manager interface {
GetAge(name string) (int, error)
}

type manager struct {
}

var _ Manager = &manager{}

func NewManager() Manager {
return &manager{}
}

最佳答案

这是一个特殊的习语,用于在编译时断言具体类型是否实现了给定的接口(interface)。

在上面的代码中,如果编写manager类型的人忘记为它实现一个GetAge方法,代码将不会编译,编译错误会准确告诉他们缺少哪些方法。

这里可能显得有点多余,但是如果一个类型需要实现的接口(interface)有大量的方法,这个技巧可能会有帮助。

请注意,由于上述原因,上面的代码将无法编译。此外,您需要确保在空白声明中使用 &manager{},它是 *manager(指向 manager 的指针)它实现了 Manager 接口(interface),而不仅仅是 manager

关于go - 空白对界面有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39025540/

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