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

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

通過引用將不同類型的變量作為參數(shù)傳遞給相同的可變參數(shù)

通過引用將不同類型的變量作為參數(shù)傳遞給相同的可變參數(shù)

Go
繁華開滿天機(jī) 2022-12-26 15:40:52
我一直在為golang缺少可選參數(shù)而苦苦掙扎,所以我一直在使用最接近的解決方法:可變參數(shù)。盡管我讓它工作了,但嘗試通過引用將多個變量類型傳遞給同一個可變參數(shù)是很麻煩的:// back-endfunc UpdateRef(variadic ...*interface{}) {    for _, v := range variadic {        if v.(type) == string {            *v = "New ref val"        }    }}// front-endfunc Interface(x interface{}) interface{} { return &x }func main() {    ref := Interface("Hey") // starts as "Hey"    i := Interface(500)    UpdateRef(&ref, &i) // ends at "New ref val"}如果我用這個替換前端:// front-endfunc main() {    ref := "Hey" // starts as "Hey"    UpdateRef(ref, 500) // ends at "New ref val"}...那么我如何更改后端以使所需的前端代碼工作?后端可以根據(jù)需要盡可能冗長,只要所需的前端按原樣運(yùn)行即可。這可能嗎?如果沒有,是否有一個優(yōu)雅的解決方案需要對所需的前端進(jìn)行最少的更改?
查看完整描述

2 回答

?
拉莫斯之舞

TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超10個贊

用作interface{}參數(shù)類型。類型斷言指針類型。取消引用指針以設(shè)置值。


func UpdateRef(variadic ...interface{}) {

    for _, v := range variadic {

        if v, ok := v.(*string); ok {

            *v = "New ref val"

        }

    }

}

將指針傳遞給函數(shù):


ref := "Hey"

i := 500

UpdateRef(&ref, &i)

fmt.Println(ref)  // prints “New ref val”


查看完整回答
反對 回復(fù) 2022-12-26
?
30秒到達(dá)戰(zhàn)場

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超6個贊

你剛才


package main


import (

    "reflect"

)


// back-end

func UpdateRef(variadic ...interface{}) {

    for _, v := range variadic {

        kind := reflect.TypeOf(v).Kind()

        if kind == reflect.Pointer {

            reflect.ValueOf(v).Elem().Set(reflect.ValueOf("New ref val"))

        }

    }

}


// front-end

func main() {

    ref := "Hey"         // starts as "Hey"

    // To modify a reflection object, the value must be settable.

    UpdateRef(&ref, 500) // ends at "New ref val"

    println(ref)

}


查看 golang 博客:https ://go.dev/blog/laws-of-reflection 。


編碼快樂!


查看完整回答
反對 回復(fù) 2022-12-26
  • 2 回答
  • 0 關(guān)注
  • 105 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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