3 回答

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

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)
}

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
- 3 回答
- 0 關(guān)注
- 228 瀏覽
添加回答
舉報(bào)