1 回答
TA贡献1864条经验 获得超2个赞
当您迭代一个切片时,所有元素都被复制到一个单独的、可重复使用的循环变量中。这意味着如果您修改此副本的字段,则切片中的元素不会受到影响。
要么将指针存储在切片中(元素仍将被复制,但元素现在将是指向相同结构值的指针),要么通过索引表达式修改元素,例如chunk[i].Grouped = true.
使用指针这就是它的样子:
func sort_chunk_no_p(chunk []*BoolInt) [][]*BoolInt {
COSINE_THRESHOLD := 0.90
allGroups := [][]*BoolInt{}
for i, message1 := range chunk {
if !message1.Grouped {
message1.Grouped = true
tempGroup := []*BoolInt{message1}
for _, message2 := range chunk[i+1:] {
if !message2.Grouped {
if rand.Float64() >= COSINE_THRESHOLD {
message2.Grouped = true
tempGroup = append(tempGroup, message2)
}
}
}
allGroups = append(allGroups, tempGroup)
}
}
return allGroups
}
并称它为:
allMessages := make([]*BoolInt, hi-lo+1)
for i := range allMessages {
allMessages[i] = &BoolInt{Val: i + lo}
}
sorted_chunk := sort_chunk_no_p(allMessages)
- 1 回答
- 0 关注
- 89 浏览
添加回答
举报