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

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如何讓多個(gè)接口引用同一個(gè)值?

如何讓多個(gè)接口引用同一個(gè)值?

Go
烙印99 2023-02-14 15:36:56
我想讓兩個(gè)接口引用相同的值(意味著如果你更新一個(gè),另一個(gè)將更新為相同的東西):package mainimport (    "fmt"    "reflect")func main(){    var a, b any    a = "Hi"    b = reflect.ValueOf(&a).Elem()    a = reflect.ValueOf(&b).Elem()    b = "Howdy"    fmt.Println(a)    fmt.Println(b)}打印日志HowdyHowdy游樂場: https://go.dev/play/p/qizVO42UaUja這段代碼按預(yù)期工作,除了和b不是接口這一事實(shí)。所以當(dāng)我將它們轉(zhuǎn)換為這樣的接口時(shí)......package mainimport (    "fmt"    "reflect")func main(){    var a, b any    a = "Hi"    b = reflect.ValueOf(&a).Elem().Interface()    a = reflect.ValueOf(&b).Elem().Interface()    b = "Howdy"    fmt.Println(a)    fmt.Println(b)}打印日志HiHowdy游樂場: https://go.dev/play/p/jCpuepBJYdD...代碼不再按預(yù)期工作。有沒有辦法在保持兩個(gè)接口引用相同值的同時(shí)使用接口數(shù)據(jù)類型而不是 reflect.Value 數(shù)據(jù)類型?
查看完整描述

1 回答

?
蕪湖不蕪

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超7個(gè)贊

簡單的解決方案

想通了——不需要使用反射。在接口中存儲(chǔ)值的地址將允許您通過對接口指針使用類型斷言和取消引用來完成此操作:


package main


import "fmt"


func main() {

    var object any

    object = "Hi"


    var a, b any

    a = &object

    b = &object


    *a.(*any) = "Howdy"


    fmt.Println(*a.(*any))

    fmt.Println(*b.(*any))

}

打印日志


Howdy

Howdy

游樂場: https://go.dev/play/p/LEx8MR4ZK06


使用多個(gè)函數(shù)

如果您想抽象掉類型斷言和取消引用:


package main


import "fmt"


func getStuff(a any) any {

    return *a.(*any)

}


func setStuff(a, to any) {

    *a.(*any) = to

}


func main() {

    var object any

    object = "Hi"


    var a, b any

    a = &object

    b = &object


    setStuff(a, "Howdy")


    fmt.Println(getStuff(a))

    fmt.Println(getStuff(b))

}

打印日志


Howdy

Howdy

游樂場: https://go.dev/play/p/RUX4cu2Cx2o


查看完整回答
反對 回復(fù) 2023-02-14
  • 1 回答
  • 0 關(guān)注
  • 99 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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