-5

我收到错误消息,在 clusters = append(clusters, Cluster{Point{rand.Float64()}, []Point{}}) 行的 struct initialiser 中的值太少,引发错误的函数如下。

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
}

有人可以帮忙吗?

4

1 回答 1

3

结构复合文字必须使用命名字段或指定所有字段。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

按名称指定结构字段通常优于位置值。

于 2019-02-06T05:49:37.250 回答