【问题标题】:How a string could be of type interface{} [closed]字符串如何为 interface{} 类型 [关闭]
【发布时间】:2021-12-15 04:57:19
【问题描述】:

C++ 之后,我目前正在学习go。我每次面对interface 时都会卡住。 例如:

s := []interface{}{"a", "b", "c"}

字符串怎么可能是接口?

我不明白go 中引入的接口是什么意思。关于界面还有很多疑问。

回答上述问题,特别是提供一些关于界面的学习资源会很棒。

提前致谢:)

【问题讨论】:

标签: go interface


【解决方案1】:

根据定义,接口被定义为一组方法签名。所以它用于指示哪些方法应该由另一种类型实现。如果接口没有在接口声明主体中指定任何方法签名,那么任何有效类型都可以是该接口的类型,因为没有成为该接口的先决条件。

在您的示例中,切片包含 interface{} 类型,这意味着任何类型都可以作为切片输入的有效候选者。

s := []interface{}{"a", 1, false}

https://tour.golang.org/methods/9是探索学习的好地方go

【讨论】:

    【解决方案2】:

    您可以将接口视为一个容器,其中包含一个值和该值的类型。

    当您定义自己的接口时,编译器将确保您分配(存储在接口中)的值具有与您在接口定义中指定的方法相匹配的方法。

    空接口interface{} 没有方法,因此可以存储任何值,因为不存在任何特定方法的期望。

    如果您还没有,请查看A Tour of Go 中的接口部分。

    【讨论】:

      猜你喜欢
      • 2012-07-11
      • 1970-01-01
      • 2016-05-24
      • 2013-01-20
      • 2022-09-22
      • 2018-08-28
      • 2014-12-12
      • 2018-05-02
      相关资源
      最近更新 更多