为了账号安全,请及时绑定邮箱和手机立即绑定

Golang:在 Go 中输入 By?

Golang:在 Go 中输入 By?

Go
慕后森 2021-07-02 14:00:11
这是来自 Golang.org http://golang.org/pkg/sort/ // By is the type of a "less" function that defines the ordering of its Planet arguments. type By func(p1, p2 *Planet) bool我从未见过这种结构。func 怎么出现在 type 之后?这里的类型是什么?我见过以下结构,但type aaaaaa interface { aaa() string }type dfdfdf struct { } 没见过像type By func(p1, p2 *Planet) bool这在 Go 中怎么可能?type 可以带接口、struct 关键字以外的东西吗
查看完整描述

2 回答

?
冉冉说

TA贡献1877条经验 获得超1个赞

您可以使用任何基本类型(包括另一个用户定义的类型)在 go 中定义新类型。

例如,如果您定义一个新类型 File

type File struct {}

用一些方法

func (f *File) Close() { ... }
func (f *File) Size() { ... }

然后,您可以定义一个新类型,称为:

type SpecialFile File

并在其上定义您自己的不同方法。

func (f *SpecialFile) Close() { (*File)(f).Close() }

需要注意的重要一点是,SpecialFile 类型没有 Size 方法,即使它的基本类型是 File。您必须将其转换为 *File 才能调用 Size 方法。

如果您希望它们甚至不在同一个包中,您可以对您甚至不拥有的类型执行此操作。


查看完整回答
反对 回复 2021-07-05
  • 2 回答
  • 0 关注
  • 194 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信