2013-10-12 2 views
-1

http://golang.org/pkg/sort/Golang, 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?

ответ

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} 
1

Параметр `меньше ... lessFunc` в декларации Func означает:

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

Так он создает` multiSorter`-структуру, которая поддерживает интерфейс сортировки, и называя метод сортировки из этого интерфейса (и реализованный multiSorter) заставит объект использовать каждый lessFunc в свою очередь при сортировке

Имеет ли это смысл? Я могу расширить, если потребуется, ...

Смежные вопросы