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

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

如何使用帶界面的 Sscan

如何使用帶界面的 Sscan

Go
慕雪6442864 2023-06-01 17:56:47
我正在使用將fmt.Sscan字符串轉(zhuǎn)換為任何類型,這就是我正在做的事情:package mainimport (    "fmt"    "reflect")func test() interface{} {    return 0}func main() {    a := test() // this could be any type    v := "10" // this could be anything    fmt.Println(reflect.TypeOf(a), reflect.TypeOf(&a))    _, err := fmt.Sscan(v, &a)    fmt.Println(err)}此代碼失敗,因?yàn)镾scan不接受接口作為第二個值:can't scan type: *interface {}。演示我覺得最奇怪的是第一個 print 打?。篿nt *interface {}, is it a int or an interface?我如何斷言a正確的類型(它可以是任何原始類型)?有沒有不包含巨型 switch 語句的解決方案?謝謝。
查看完整描述

1 回答

?
慕斯709654

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

以下是將字符串轉(zhuǎn)換為包支持的任何類型的值的方法fmt:


// convert converts s to the type of argument t and returns a value of that type.

func convert(s string, t interface{}) (interface{}, error) {


    // Create pointer to value of the target type

    v := reflect.New(reflect.TypeOf(t))


    // Scan to the value by passing the pointer SScan 

    _, err := fmt.Sscan(s, v.Interface())


    // Dereference the pointer and return the value.

    return v.Elem().Interface(), err

}

像這樣稱呼它:


a := test()

a, err := convert("10", a)

fmt.Println(a, err)

在操場上運(yùn)行


查看完整回答
反對 回復(fù) 2023-06-01
  • 1 回答
  • 0 關(guān)注
  • 133 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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