gpt4 book ai didi

go - Go 方法语法的基本原理

转载 作者:IT王子 更新时间:2023-10-29 01:06:29 24 4
gpt4 key购买 nike

好吧,我不得不承认,我并没有真正使用 Go,但我确实观察到了一些让我感到奇怪的事情,因为它像 Go 一样追求最小化和所有好的东西。如果它背后没有合理的理由,我会感到惊讶,所以这就是我要找的东西。

所以当你有一个方法时,你可以这样定义它:

func (s *SomeStruct) Foo(x int) { }

但为什么要为“接收器”添加一个额外的参数列表,正如我认为的那样?直接做岂不是更简单更优雅的设计

func Foo(s *SomeStruct, x int) { }

然后将 s.Foo(5) 转换为对函数 Foo(s, 5) 的调用?

最佳答案

方法本质上是特殊的,不同于常规函数。

  • 方法必须与接收者类型存在于同一个包中。
  • 方法用于满足接口(interface)。
  • 接收器参数是唯一可以重载的参数。
  • 当匿名结构字段有方法时,这些方法是“继承的”。

根据您的提议,函数和方法之间的界限变得非常模糊,很难弄清楚如何解决上述问题。

也就是说,我认为设计一种具有多种方法和接口(interface)的语言会非常有趣。然而,那种语言不会是 Go。

关于go - Go 方法语法的基本原理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9759020/

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