Есть ли более простой способ добавить часть структур? - PullRequest
0 голосов
/ 10 марта 2019

Следующий код работает, но я хочу найти более простой способ сделать это

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 Ответ

3 голосов
/ 10 марта 2019

Вы создали анонимную структуру в своем срезе, поэтому вам необходимо повторить схему при добавлении элементов:

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

Пример детской площадки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...