gpt4 book ai didi

go - 声明函数类型的方法有什么区别?

转载 作者:行者123 更新时间:2023-12-04 12:21:56 24 4
gpt4 key购买 nike

我可以通过两种方式声明函数类型:

type opener = func() error

type opener func() error
这些声明有什么区别?你为什么要使用一个?

最佳答案

根据语言规范,两者都是 type declarations .type opener func() error type definition .它引入了一个名为 opener 的新类型。其底层类型为 func() error .

  • openerfunc() error是不同的类型。它们不可互换。
  • 但是,如 Hymns For Disco points out ,因为它们具有相同的基础类型( func() error ),类型为 opener 的表达式can be assignedfunc() error 类型的变量,反之亦然。
  • 您可以在 opener 上声明方法.

  • 相比之下, type opener = func() erroralias declaration : opener被声明为 func() error 的别名类型。
  • 这两种类型是“同义词”并且完全可以互换。
  • 您不能在 opener 上声明方法这里是因为 func() error不是定义的类型。在更一般的情况下,只有当别名类型是在与别名相同的包中定义的类型时,您才能在类型别名上声明方法。

  • primary motivation为语言添加类型别名(在 Go 1.9 中)是逐步的代码修复,即将类型从一个包移动到另一个包。类型别名还有其他一些小众用例,但您最有可能想要使用类型定义而不是别名声明。

    关于go - 声明函数类型的方法有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68325216/

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