亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

Golang - 如何將數組( [ ] )“轉換”為列表( ... )?

Golang - 如何將數組( [ ] )“轉換”為列表( ... )?

Go
鴻蒙傳說 2021-09-21 16:22:30
我正在使用 UI lib ( https://github.com/andlabs/ui ) 來制作一個關于學生團體的程序。ui.SimpleGrid 允許輸入控件的“列表”:func NewSimpleGrid(nPerRow int, controls ...Control) SimpleGrid我覺得在 Java 和其他語言中,它就像一個數組一樣工作,這基本上意味著給它一個會起作用。然而,這在 Go 中似乎不一樣。func initStudentsGrid(students ...Student) ui.SimpleGrid {var i intvar grd_studentsList []ui.Gridfor i = 0; i < len(students); i++ {    grd_student := ui.NewGrid()    grd_student.Add(ui.NewLabel(students[i].group), nil, ui.West, true, ui.LeftTop, true, ui.LeftTop, 1, 1)    grd_student.Add(ui.NewLabel(students[i].lastName), nil, ui.West, true, ui.LeftTop, true, ui.LeftTop, 1, 1)    grd_student.Add(ui.NewLabel(students[i].firstName), nil, ui.West, true, ui.LeftTop, true, ui.LeftTop, 1, 1)    grd_studentsList = append(grd_studentsList, grd_student)}return ui.NewSimpleGrid(1, grd_studentsList)該程序未編譯,因為:不能在 ui.NewSimpleGrid 的參數中使用 grd_studentsList(類型 []ui.Grid)作為類型 ui.Control:[]ui.Grid 沒有實現 ui.Control(缺少 ui.containerHide 方法)有什么方法可以將數組從數組“轉換”為所需的格式,因為不可能一個一個地添加網格(SimpleGrid 上沒有 append 方法)?
查看完整描述

2 回答

?
慕后森

TA貢獻1802條經驗 獲得超5個贊

嘗試類似:

return ui.NewSimpleGrid(1, grd_studentsList...)
                              ^^^^

這在規范Passing arguments to ... parameters 中提到。


查看完整回答
反對 回復 2021-09-21
?
天涯盡頭無女友

TA貢獻1831條經驗 獲得超9個贊

它也不起作用......


cannot use grd_studentsList (type `[]ui.Grid`) as type `[]ui.Control`

in argument to `ui.NewSimpleGrid`

正如我前面提到的(“關于內存布局意味著什么[]T不能轉換到[]interface{}進去嗎? ”),你不能隱式轉換A[]中[]B。


您需要先復制:


var controls []ui.Control = make([]ui.Control, len(grd_studentsList))

for i, gs := range grd_studentsList{

    controls [i] = gs

}

然后使用正確的切片(使用正確的類型)


 return ui.NewSimpleGrid(1, controls...)


查看完整回答
反對 回復 2021-09-21
  • 2 回答
  • 0 關注
  • 786 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號