Что означает [...] в инициализаторе (слайсе) переменной в golang? - PullRequest
0 голосов
/ 30 апреля 2018

Я просматривал stdlib, в частности https://golang.org/src/html/template/context.go, и я наткнулся на этот код, задача которого состоит в создании строковых представлений перечисления uint8, определенного ранее.

var stateNames = [...]string{
    stateText:        "stateText",
    stateTag:         "stateTag",
//... many more elided 
    stateCSSBlockCmt: "stateCSSBlockCmt",
    stateCSSLineCmt:  "stateCSSLineCmt",
    stateError:       "stateError",
  }

Меня заинтересовал синтаксис [...] инициализатора. Есть ли что-то, что означает больше, чем простой var stateNames = []string{} в этом синтаксисе?

1 Ответ

0 голосов
/ 30 апреля 2018

Хорошо, как я должен был сделать, я положил это на игровую площадку, инициализировал переменную, затем вызвал fmt.Printf("%T", stateNames) и получил [25]string

https://play.golang.org/p/3k-WiI8Jh9K

Оказывается, это определяет массив, а не срез, и массив инициализируется с длиной, автоматически устанавливаемой на количество определенных элементов. Ухоженная!

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