From 063c61fb31cc3596ab40f9b8dade1e9c6aa1cac7 Mon Sep 17 00:00:00 2001 From: badkaktus Date: Mon, 7 Oct 2019 14:49:11 +0300 Subject: [PATCH] =?UTF-8?q?=D1=81=D1=82=D1=80=D1=83=D0=BA=D1=82=D1=83?= =?UTF-8?q?=D1=80=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- examples.txt | 2 +- examples/structs/structs.go | 38 +++++++++++++++++++++---------------- 2 files changed, 23 insertions(+), 17 deletions(-) diff --git a/examples.txt b/examples.txt index 3410b22..a671dc6 100644 --- a/examples.txt +++ b/examples.txt @@ -15,7 +15,7 @@ Switch Замыкания (Closures) Рекурсия (Recursion) Указатели (Pointers) -Structs +Структуры (Structs) Methods Interfaces Errors diff --git a/examples/structs/structs.go b/examples/structs/structs.go index 384b57c..11aa88a 100644 --- a/examples/structs/structs.go +++ b/examples/structs/structs.go @@ -1,21 +1,23 @@ -// Go's _structs_ are typed collections of fields. -// They're useful for grouping data together to form -// records. +// _Структуры_ в Go - это коллекции полей определенных +// типов. Как правило, они используются для логической +// группировки данных. package main import "fmt" -// This `person` struct type has `name` and `age` fields. +// Структура `person` имеет два поля `name` и `age`. type person struct { name string age int } -// NewPerson constructs a new person struct with the given name +// Функция NewPerson создает новую струкутуру person с +// заданным именем. func NewPerson(name string) *person { - // You can safely return a pointer to local variable - // as a local variable will survive the scope of the function. + // Вы можете безопасно вернуть указатель на локальную + // переменную, так как локальная переменная переживет + // область действия функции. p := person{name: name} p.age = 42 return &p @@ -23,31 +25,35 @@ func NewPerson(name string) *person { func main() { - // This syntax creates a new struct. + // Так создается новая структура fmt.Println(person{"Bob", 20}) - // You can name the fields when initializing a struct. + // Вы можете задавать имена для корректного + // присваивания значений при создании структуры fmt.Println(person{name: "Alice", age: 30}) - // Omitted fields will be zero-valued. + // Пропущенные поля будут нулевыми. fmt.Println(person{name: "Fred"}) - // An `&` prefix yields a pointer to the struct. + // Префикс `&` возвращает указатель на структуру. fmt.Println(&person{name: "Ann", age: 40}) - // It's idiomatic to encapsulate new struct creation in constructor functions + // Можно инкапсулировать создание новой структуры + // в функцию fmt.Println(NewPerson("Jon")) - // Access struct fields with a dot. + // Доступ к полям структуры осуществляется через + // точку. s := person{name: "Sean", age: 50} fmt.Println(s.name) - // You can also use dots with struct pointers - the - // pointers are automatically dereferenced. + // Вы также можете использовать точки со + // структурными указателями - указатели автоматически + // разыменовываются. sp := &s fmt.Println(sp.age) - // Structs are mutable. + // Структуры мутабельны. sp.age = 51 fmt.Println(sp.age) }