Структуры (struct) это коллекция полей.
package main
import "fmt"
type Vertex struct {
X int
Y int
}
func main() {
fmt.Println(Vertex{1, 2})
}
Вывод:
{1 2}
Поля структуры
Доступ к полям структуры производится с помощью точки.
package main
import "fmt"
type Vertex struct {
X int
Y int
}
func main() {
v := Vertex{1, 2}
v.X = 4
fmt.Println(v.X)
}
Вывод:
4
Указатели на структуры
Доступ к полям структуры может быть получен через указатель на структуру.
Чтобы получить поле X структуры, когда у нас есть указатель на структуру p, мы можем написать (*p).X. Однако такая запись громоздка, поэтому язык позволяет нам просто писать p.X, без явного разыменования.
package main
import "fmt"
type Vertex struct {
X int
Y int
}
func main() {
v := Vertex{1, 2}
p := &v
p.X = 1e9
fmt.Println(v)
}
Вывод:
{1000000000 2}
Литералы структур
Литерал структуры определяет новую структуру путем перечисления значений ее полей.
Вы можете перечислить не все поля, а лишь некоторое подмножество с помощью синтаксиса Name:. (Тогда порядок именованных полей не имеет значения.)
Специальный префикс & возвращает указатель на структуру.
package main
import "fmt"
type Vertex struct {
X, Y int
}
var (
v1 = Vertex{1, 2} // имеет type Vertex
v2 = Vertex{X: 1} // Y:0 неявно
v3 = Vertex{} // X:0 и Y:0
p = &Vertex{1, 2} // имеет type *Vertex
)
func main() {
fmt.Println(v1, p, v2, v3)
}
Вывод:
{1 2} &{1 2} {1 0} {0 0}
Читайте также:
Комментариев нет:
Отправить комментарий