这是来自 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 方法。
如果您希望它们甚至不在同一个包中,您可以对您甚至不拥有的类型执行此操作。
- 2 回答
- 0 关注
- 194 浏览
添加回答
举报
0/150
提交
取消