1 回答

TA貢獻1779條經(jīng)驗 獲得超6個贊
您面臨的問題似乎與中的聲明node = MHN有關(guān)getIndex(但由于您的代碼不完整,我無法確認這是否是唯一的問題)。
node = MHN將更新node(一個參數(shù),所以按值傳遞,它的作用域是函數(shù)體)的值。MinHeapNode這對函數(shù)node開頭指向的值沒有影響。糾正這個用法*node = *MHN。
這可以用一個簡單的程序(操場)來演示
type MinHeapNode struct {
Test string
}
func getIndexBad(node *MinHeapNode) {
newNode := MinHeapNode{Test: "Blah"}
node = &newNode
}
func getIndexGood(node *MinHeapNode) {
newNode := MinHeapNode{Test: "Blah"}
*node = newNode
}
func main() {
n := MinHeapNode{}
fmt.Println(n)
getIndexBad(&n)
fmt.Println(n)
getIndexGood(&n)
fmt.Println(n)
}
輸出表明“壞”函數(shù)不會更新傳入的node:
{}
{}
{Blah}
- 1 回答
- 0 關(guān)注
- 124 瀏覽
添加回答
舉報