Слишком мало значений в ошибке struct intializer - PullRequest
0 голосов
/ 06 февраля 2019

Я получаю сообщение об ошибке, слишком мало значений в struct initializer в кластерах строк = append (clusters, Cluster {Point {rand.Float64 ()}, [] Point {}}), функция, которая выдает ошибку, приведена ниже.

func initClusters(k int) (clusters []Cluster) {
rand.Seed(time.Now().UnixNano())
for i := 0; i < k; i++ {
    clusters = append(clusters, Cluster{Point{rand.Float64()},[]Point{}})
}
return
}

я ставлю k = 3, определена структура кластера

type Cluster struct {
Center Point
Points []Point
}

, а точка также является структурой, определенной как:

type Point struct {
X float64
Y float64
}

Можеткто-нибудь, пожалуйста, помогите?

1 Ответ

0 голосов
/ 06 февраля 2019

Составной литерал структуры должен либо использовать именованные поля, либо указывать все поля.Структура Point имеет два поля, X и Y. Предполагая, что вы пытались установить поле X, выполните одно из следующих действий:

 Point{X: rand.Float64()}  // Y defaults to zero value
 Point(X: rand.Float64(), Y: 0} // Y explicitly set to zero using name
 Point(rand.Float64(), 0}  // Y explicitly set to zero using positional value

Задание структурных полей по имени обычно предпочтительнее позиционных значений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...