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

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

你如何傳遞一片 *interface{} 作為參數(shù)?

你如何傳遞一片 *interface{} 作為參數(shù)?

Go
茅侃侃 2023-05-15 14:46:19
Scan()我想在 package 中使用sql,但列數(shù)以及參數(shù)的數(shù)量將在運(yùn)行時(shí)發(fā)生變化。這是以下人的簽名Scan():func (rs *Rows) Scan(dest ...interface{}) error根據(jù)文檔,*interface{}是Scan(). 所以我想創(chuàng)建一個(gè)片段[]*interface{}并將其擴(kuò)展為參數(shù)。這是我認(rèn)為可行的方法:func query(database *sql.DB) {    rows, _ := database.Query("select * from testTable")    for rows.Next() {        data := make([]*interface{}, 2)        err := rows.Scan(data...) // Compilation error        fmt.Printf("%v%v\n", *data[0], *data[1])        if err != nil {            fmt.Println(err.Error())        }    }}編譯失敗cannot use data (type []*interface {}) as type []interface {} in argument to rows.Scan。我以為那data...會(huì)擴(kuò)展到&data[0], &data[1],但顯然不是。我不明白錯(cuò)誤信息。*interface{}與 兼容interface{},那么為什么我不能將指針切片擴(kuò)展到接口類型?這有效:func query(database *sql.DB) {    rows, _ := database.Query("select * from testTable")    for rows.Next() {        data := make([]*interface{}, 2)        err := rows.Scan(&data[0], &data[1]) // Only changed this line        fmt.Printf("%v%v\n", *data[0], *data[1]) // Outputs "[48][116 101 120 116]"        if err != nil {            fmt.Println(err.Error())        }    }}但是我不能使用它,因?yàn)榱袛?shù)在編譯時(shí)是未知的。我該如何編寫這段代碼,以便我可以將可變數(shù)量的傳遞*interface{}給rows.Scan()?
查看完整描述

2 回答

?
慕的地8271018

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

首先,您不能使用[]*interface{}指針切片來接口,而不是[]interface{}接口是指針的地方。[]*interface{}不同于[]interface{}. 只需創(chuàng)建一片接口,其中每個(gè)元素都是指向具體類型的指針。


這是您將如何執(zhí)行此操作的片段。


var x int

var s string


data := []interface{}{&x, &s}


rows.Scan(data...)

關(guān)于使用...擴(kuò)展運(yùn)算符的注意事項(xiàng)。


查看完整回答
反對(duì) 回復(fù) 2023-05-15
?
紅糖糍粑

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

如果你真的想傳遞 a []*interface{}(也許你不知道輸出的具體類型),你必須首先將每個(gè)包裝*interface{}在 a 中interface{}:


values := make([]interface{}, columnsCount)

for i := range values {

    values[i] = new(interface{})

}

傳遞給...interface{}參數(shù)的單個(gè)值會(huì)自動(dòng)包裝在 a 中interface{},但就像[]int...不會(huì)滿足一樣...interface{},也不會(huì)[]*interface{}...。


查看完整回答
反對(duì) 回復(fù) 2023-05-15
  • 2 回答
  • 0 關(guān)注
  • 163 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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