作者热门文章
- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
这是来自 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 中如何实现?类型可以采用接口(interface)、结构关键字以外的其他东西吗?
谢谢~!
最佳答案
type By func(p1, p2 *Planet) bool
是从函数值定义类型的示例。
我们可以通过创建一个新的 By
值并使用 fmt.Printf
打印类型来看到这一点。在下面的示例中,我将 Planet
作为一个字符串来处理——对于示例的目的而言,类型无关紧要。
type.go
package main
import(
"fmt"
)
type Planet string
type By func(p1, p2 *Planet) bool
func main() {
fmt.Printf("The type is '%T'", new(By))
fmt.Println()
}
输出:
mike@tester:~/Go/src/test$ go run type.go
The type is '*main.By'
编辑:根据 nemo 的评论更新。 new
关键字返回指向新值的指针。 func
并没有像我错误地认为的那样返回一个函数指针,而是返回一个函数值。
关于戈朗 : type By in Go?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19330426/
我是一名优秀的程序员,十分优秀!