-1

http://golang.org/pkg/sort/

这是来自 Go 示例。

 // OrderedBy returns a Sorter that sorts using the less functions, in order.
// Call its Sort method to sort the data.
func OrderedBy(less ...lessFunc) *multiSorter {
    return &multiSorter{
        changes: changes,
        less:    less,
    }
}

这对冒号有什么作用?是映射吗?是关闭吗?这里有太多新语法。我应该阅读什么来理解 Go 中的这种语法?

4

2 回答 2

1

它是一个工厂函数,创建和初始化一个 multisorter 类型的结构:

https://sites.google.com/site/gopatterns/object-oriented/constructors

此外,Go“构造函数”可以在工厂函数中使用初始化器简洁地编写:

function NewMatrix(rows, cols, int) *matrix {
    return &matrix{rows, cols, make([]float, rows*cols)}
}

此外,它在初始化时使用命名参数:

http://www.golang-book.com/9

这为所有字段分配内存,将每个字段设置为零值并返回一个指针。(圆圈)更多的时候我们想给每个字段一个值。我们可以通过两种方式做到这一点。像这样:

c := Circle{x: 0, y: 0, r: 5}
于 2013-10-12T06:08:11.390 回答
1

func 声明中的 `less ...lessFunc` 表示:

any number of parameters, each of type `lessFunc` can be passed here, and will be stored in the slice `less`

所以它创建了一个`multiSorter`结构,它支持排序接口,并且从该接口调用排序方法(并由multiSorter实现)将导致对象在排序时依次使用每个lessFunc

这有意义吗?如果需要,我可以扩展更多...

于 2013-10-15T05:43:20.940 回答