以下代码有效,但我想找到一种更简单的方法
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)
}
但是我会收到“语法错误:意外的{,需要表达”
我不明白为什么我不能这样做,因为数据结构是正确的。
答案 0 :(得分:3)
您在切片中创建了一个匿名结构,因此添加元素时需要重复该模式:
public function getRouteKeyName()
{
return 'slug';
}
或定义子类型:
// works - but a bit tedious...
steps = append(steps,
struct {
i int
j int
}{1, 1},
struct {
i int
j int
}{1, 2},
)