в чем разница между * [] Type и [] * Type in go - PullRequest
0 голосов
/ 06 мая 2018

Допустим, у нас есть структура с именем Person, и она поддерживается структурой с именем People.

type Person {
    Name string
    age  int
}

type People {
    City string
    List []*Person //check this out
}

type People2 {
    City string
    List *[]Person //What's the difference?
}
  1. Что именно означает []*Person и *[]Person?

  2. Как я могу получить значение элемента этого среза?

Я больше знаком с C, поэтому будет приятно, если вы сможете объяснить это в C

1 Ответ

0 голосов
/ 06 мая 2018
  • []*Type - это указатель на Type.
  • *[]Type - указатель на фрагмент Type.

Чтобы отделить отдельный элемент от указателя:

var x []*Type
y := *x[0]

Чтобы разыменовать отдельный элемент из указателя на фрагмент:

var x *[]Type
y := (*x)[0]

А для бонусных баллов, чтобы отнести отдельный элемент от указателя к срезу указателей:

var x *[]*Type
y := *(*x)[0]

см. детская площадка .

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