【发布时间】:2015-05-15 21:34:55
【问题描述】:
我正在使用 UI 库 (https://github.com/andlabs/ui) 制作一个关于学生小组的程序。
ui.SimpleGrid 允许输入控件的“列表”:
func NewSimpleGrid(nPerRow int, controls ...Control) SimpleGrid
我觉得在 Java 和其他语言中,它就像一个数组一样工作,这基本上意味着给它一个就可以了。但是,这在 Go 中似乎不一样。
func initStudentsGrid(students ...Student) ui.SimpleGrid {
var i int
var grd_studentsList []ui.Grid
for 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 方法)?
【问题讨论】: