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

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

如何創(chuàng)建不同類(lèi)型的結(jié)構(gòu)數(shù)組數(shù)組?

如何創(chuàng)建不同類(lèi)型的結(jié)構(gòu)數(shù)組數(shù)組?

Go
嗶嗶one 2021-11-08 10:02:25
在我的程序中,我有 2 個(gè)模型:type User struct {    Name string}type Article struct {    Title string}我得到了這些結(jié)構(gòu)的數(shù)據(jù)數(shù)組:users := []Userarticles := []Article我試圖在同一段代碼中迭代它們:models := [][]interface{} {users, articles}for _, model := range models {    log.Printf("%#v", model)}但我收到一個(gè)錯(cuò)誤:cannot use users (type []User) as type []interface {} in array element我究竟做錯(cuò)了什么?
查看完整描述

3 回答

?
Helenr

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

你應(yīng)該使用[]interface{}而不是[][]interface{}

Try it ongo playground


如果要迭代內(nèi)部數(shù)組中的所有結(jié)構(gòu),則需要將它們轉(zhuǎn)換為正確的類(lèi)型,然后進(jìn)行迭代,如下所示:


for _, model := range models {

    if u, ok := model.([]User); ok {

        for _, innerUser := range u {

            log.Printf("%#v", innerUser)

        }

    }

    if a, ok := model.([]Article); ok {

        for _, innerArticle := range a {

            log.Printf("%#v", innerArticle)

        }

    }

}

試試吧 go playground


查看完整回答
反對(duì) 回復(fù) 2021-11-08
?
犯罪嫌疑人X

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

也許我沒(méi)有得到你的要求,但只是有什么問(wèn)題


models := []interface{} {users, articles}

for _, model := range models {

    log.Printf("%#v\n", model)

}


查看完整回答
反對(duì) 回復(fù) 2021-11-08
?
慕工程0101907

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

如何使用接口來(lái)解決您的問(wèn)題?您甚至可以使用默認(rèn)fmt.Stringer接口,使用 byfmt.Prtinf和其他標(biāo)準(zhǔn)方法。


例子:


package main


import "log"

import "fmt"


type User struct {

    Name string

}


type Article struct {

    Title string

}


func (art Article) String() string {

    return art.Title

}


func (user User) String() string {

    return user.Name

}


func main() {

    models := []interface{}{User{"user1"}, User{"user2"}, Article{"article1"}, Article{"article2"}}

    for _, model := range models {

        printable := model.(fmt.Stringer)

        log.Printf("%s\n", printable)

    }

}

游樂(lè)場(chǎng):https : //play.golang.org/p/W3qakrMfOd


查看完整回答
反對(duì) 回復(fù) 2021-11-08
  • 3 回答
  • 0 關(guān)注
  • 228 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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