有没有更简单的方法来附加结构片段?

时间:2019-03-10 20:15:44

标签: go

以下代码有效,但我想找到一种更简单的方法

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

但是我会收到“语法错误:意外的{,需要表达”

我不明白为什么我不能这样做,因为数据结构是正确的。

1 个答案:

答案 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},
)

https://laravel.com/docs/5.7/routing#route-model-binding