1 回答

TA貢獻(xiàn)1864條經(jīng)驗 獲得超2個贊
當(dāng)您迭代一個切片時,所有元素都被復(fù)制到一個單獨的、可重復(fù)使用的循環(huán)變量中。這意味著如果您修改此副本的字段,則切片中的元素不會受到影響。
要么將指針存儲在切片中(元素仍將被復(fù)制,但元素現(xiàn)在將是指向相同結(jié)構(gòu)值的指針),要么通過索引表達(dá)式修改元素,例如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 關(guān)注
- 114 瀏覽
添加回答
舉報