第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

當(dāng)結(jié)構(gòu)在接收器方法中稱為指針時,是否會對其進行修改?

當(dāng)結(jié)構(gòu)在接收器方法中稱為指針時,是否會對其進行修改?

Go
暮色呼如 2022-08-09 12:54:26
我正在嘗試在 Go 中實現(xiàn)一棵樹。type BinaryNode struct {    left  *BinaryNode    right *BinaryNode    data  int}type BinaryTree struct {    root *BinaryNode}現(xiàn)在要插入元素,我有一個插入函數(shù),func (t *BinaryNode) insertNode(d int) {    fmt.Printf("%+v\n", t)    if t == nil {        t = &BinaryNode{            data:  d,            left:  nil,            right: nil,        }        fmt.Printf("%+v inside insert\n", t)    } else {        if d <= t.data {            t.left.insertNode(d)        } else {            t.right.insertNode(d)        }    }}如果指針為 nil,則根據(jù)數(shù)據(jù)創(chuàng)建一個新節(jié)點(如果不是,則查找左側(cè)或右側(cè))。在我的主要功能中,我正在嘗試簡單的幾個步驟:func main() {    tree1 := &BinaryTree{        root: nil,    }    tree1.root.insertNode(3)    fmt.Printf("%+v\n", tree1.root)}我期望看到的是根值為3的樹。但我沒有看到任何東西。相反,我得到:<nil>&{left:<nil> right:<nil> data:3} inside insert<nil>據(jù)我所知,如果結(jié)構(gòu)指針用于方法,則不會進行復(fù)制。在這種情況下,修改應(yīng)保持不變。我在這里錯過了什么?
查看完整描述

1 回答

?
慕妹3242003

TA貢獻1824條經(jīng)驗 獲得超6個贊

這是我的事情一個最簡單的解決方案,你可以做,我希望它不言自明


type Bin struct {

    left, right *Bin

    value       int

}


func New(value int) *Bin {

    return &Bin{value: value}

}


func (b *Bin) Insert(value int) {

    if value <= b.value {

        if b.left == nil {

            b.left = New(value)

        } else {

            b.left.Insert(value)

        }

    } else {

        if b.right == nil {

            b.right = New(value)

        } else {

            b.right.Insert(value)

        }

    }

}


查看完整回答
反對 回復(fù) 2022-08-09
  • 1 回答
  • 0 關(guān)注
  • 97 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號