Введение
Этот лаба旨在测试您对Go语言结构体的了解,结构体是字段的类型化集合。结构体对于将数据分组以形成记录很有用。
This tutorial is from open-source community. Access the source code
💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал
Этот лаба旨在测试您对Go语言结构体的了解,结构体是字段的类型化集合。结构体对于将数据分组以形成记录很有用。
В этом лабе вам нужно завершить функцию newPerson
, которая создает новый структур person
с заданным именем. Структ тип person
имеет поля name
и age
.
person
должен иметь поля name
и age
.newPerson
должна создать новый структур person
с заданным именем.newPerson
должна вернуть указатель на вновь созданный структур person
.main
должна напечатать следующее:
newPerson
с именем "Jon" и возрастом 42.name
структуры с именем "Sean" и возрастом 50.age
структуры-указателя на структуру с именем "Sean" и возрастом 50.age
структуры-указателя на структуру с именем "Sean" и возрастом 50 после обновления поля age
до 51.$ go run structs.go
{Bob 20}
{Alice 30}
{Fred 0}
&{Ann 40}
&{Jon 42}
Sean
50
51
Ниже представлен полный код:
// Структуры в Go - это типизированные коллекции полей.
// Они полезны для группировки данных в записи.
package main
import "fmt"
// Этот тип структуры `person` имеет поля `name` и `age`.
type person struct {
name string
age int
}
// `newPerson` создает новый структур `person` с заданным именем.
func newPerson(name string) *person {
// Вы можете безопасно вернуть указатель на локальную переменную,
// так как локальная переменная будет существовать за пределами области видимости функции.
p := person{name: name}
p.age = 42
return &p
}
func main() {
// Эта синтаксис создает новый структур.
fmt.Println(person{"Bob", 20})
// Вы можете именовать поля при инициализации структуры.
fmt.Println(person{name: "Alice", age: 30})
// Пропущенные поля будут иметь нулевые значения.
fmt.Println(person{name: "Fred"})
// Префикс `&` дает указатель на структуру.
fmt.Println(&person{name: "Ann", age: 40})
// idiomatic - инкапсулировать создание новых структур в конструкторах функций
fmt.Println(newPerson("Jon"))
// Доступ к полям структуры с помощью точки.
s := person{name: "Sean", age: 50}
fmt.Println(s.name)
// Вы также можете использовать точки с указателями на структуры -
// указатели автоматически разыменовываются.
sp := &s
fmt.Println(sp.age)
// Структуры изменяемы.
sp.age = 51
fmt.Println(sp.age)
}
В этом лабе вы узнали, как использовать структуры в Go для группировки данных в записи. Также вы узнали, как создавать новые структуры, обращаться к полям структуры и обновлять поля структуры.