亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

迭代時更改值

迭代時更改值

一只萌萌小番薯 2019-11-11 14:47:32
假設我有以下幾種類型:type Attribute struct {    Key, Val string}type Node struct {    Attr []Attribute}我想迭代節點的屬性以更改它們。我本來希望能夠做到:for _, attr := range n.Attr {    if attr.Key == "href" {        attr.Val = "something"    }}但是因為attr不是指針,所以這行不通,我必須這樣做:for i, attr := range n.Attr {    if attr.Key == "href" {        n.Attr[i].Val = "something"    }}有沒有更簡單或更快速的方法?是否可以直接從中獲取指針range?顯然,我不想僅僅為了迭代而更改結構,更冗長的解決方案不是解決方案。
查看完整描述

3 回答

?
慕碼人2483693

TA貢獻1860條經驗 獲得超9個贊

例如:


package main


import "fmt"


type Attribute struct {

        Key, Val string

}


type Node struct {

        Attr []*Attribute

}


func main() {

        n := Node{[]*Attribute{

                &Attribute{"foo", ""},

                &Attribute{"href", ""},

                &Attribute{"bar", ""},

        }}


        for _, attr := range n.Attr {

                if attr.Key == "href" {

                        attr.Val = "something"

                }

        }


        for _, v := range n.Attr {

                fmt.Printf("%#v\n", *v)

        }

}

操場


輸出量


main.Attribute{Key:"foo", Val:""}

main.Attribute{Key:"href", Val:"something"}

main.Attribute{Key:"bar", Val:""}

替代方法:


package main


import "fmt"


type Attribute struct {

        Key, Val string

}


type Node struct {

        Attr []Attribute

}


func main() {

        n := Node{[]Attribute{

            {"foo", ""},

            {"href", ""},

            {"bar", ""},

        }}


        for i := range n.Attr {

                attr := &n.Attr[i]

                if attr.Key == "href" {

                        attr.Val = "something"

                }

        }


        for _, v := range n.Attr {

                fmt.Printf("%#v\n", v)

        }

}

操場


輸出:


main.Attribute{Key:"foo", Val:""}

main.Attribute{Key:"href", Val:"something"}

main.Attribute{Key:"bar", Val:""}


查看完整回答
反對 回復 2019-11-11
  • 3 回答
  • 0 關注
  • 457 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號