本篇文章来介绍《有没有更简单的方法来附加结构体切片?》,涉及到,有需要的可以收藏一下
问题内容
以下代码有效,但我想找到一种更简单的方法来实现它
package main
import "fmt"
type steps []struct {
i int
j int
}
func main() {
steps := steps{}
type step struct{ i, j int }
steps = append(steps, step{1, 1}, step{1, 2})
fmt.println(steps)
}
具体来说,我不想定义一个新类型只是为了将其附加到切片中。例如,我想这样做:
package main
import "fmt"
type steps []struct {
i int
j int
}
func main() {
steps := steps{}
steps = append(steps, {1, 1}, {1, 2}) // syntax error
fmt.Println(steps)
}
但是我会收到“语法错误:意外的 {,期望表达式”
我不明白为什么我不能这样做,数据结构是正确的。
解决方案
您在切片中创建了一个匿名结构,因此在添加元素时需要重复该架构:
// works - but a bit tedious...
steps = append(steps,
struct {
i int
j int
}{1, 1},
struct {
i int
j int
}{1, 2},
)
或定义子类型:
type step struct {
i int
j int
}
type steps []step
steps = append(steps, step{3, 4}, step{5, 6})