Указатели на структуры
Часть раздела Основы путешествия по GO на Coddy — урок 97 из 109.
При работе со структурами вы можете создавать указатели на них точно так же, как и с другими типами. Это полезно для эффективной передачи больших структур.
Определите структуру Person и создайте указатель на нее:
type Person struct {
name string
age int
}
func main() {
person := Person{name: "Alice", age: 30}
// Создайте указатель на структуру
personPtr := &person
// Доступ к полям через указатель
fmt.Println(personPtr.name)
fmt.Println(personPtr.age)
}Вывод показывает, что мы можем обращаться к полям через указатель:
Alice
30Вы также можете изменять поля через указатель:
personPtr.age = 31
fmt.Println(person.age) // Выводит: 31Задание
НовичокВ этом испытании вы попрактикуетесь в работе с указателями на структуры в Go. У вас есть структура Person с полями name и age. Ваша задача — обновить информацию о человеке, используя указатель на структуру.
Код уже создает структуру Person и указатель на нее. Вам нужно изменить информацию о человеке через указатель.
Шпаргалка
Создавайте указатели на структуры с помощью оператора &:
type Person struct {
name string
age int
}
person := Person{name: "Alice", age: 30}
personPtr := &personДоступ к полям структуры и их изменение через указатели:
// Доступ к полям
fmt.Println(personPtr.name)
fmt.Println(personPtr.age)
// Изменение полей
personPtr.age = 31Попробуйте сами
package main
import "fmt"
// Структура Person с полями name и age
type Person struct {
name string
age int
}
func main() {
// Создание структуры Person
person := Person{
name: "John",
age: 25,
}
// Создание указателя на структуру Person
personPtr := &person
// Вывод исходной информации о человеке
fmt.Println("Original person:")
fmt.Printf("Name: %s, Age: %d\n", person.name, person.age)
// TODO: Используйте указатель, чтобы изменить имя человека на "Jane" и возраст на 30
// Подсказка: Вы можете получить доступ к полям структуры через указатель, используя точечную нотацию
// Вывод обновленной информации о человеке
fmt.Println("Updated person:")
fmt.Printf("Name: %s, Age: %d\n", person.name, person.age)
}В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
4Операторы сравнения и логические операторы
Операторы сравнения — Часть 1Операторы сравнения — Часть 2Логический оператор ANDЛогический оператор ORЛогический оператор NOTОсновы приоритета операторовИтоги: выполнение сравнений7Управляющие конструкции: Циклы
Что такое цикл `for`Цикл `for` — основыЦикл `for` — только условиеКлючевое слово `break`Ключевое слово `continue`Вложенные циклыИтоги — повторение действий10Составные типы: Массивы
Введение в массивыОбъявление массивовИнициализация массивовДоступ к элементам массиваДлина массива с `len`Итерация по массивамМногомерные массивы13Составные типы: Структуры
Определение пользовательских типовСоздание экземпляров структурДоступ к полям структурУказатели на структурыИнициализация структурВложенные структурыАнонимные структурыИтоги: Пользовательские структуры данных2Переменные и базовые типы данных
Что такое переменнаяВывод типов с помощью `:=`Целые числа (int)Числа с плавающей точкойЛогический тип (Booleans)СтрокиНулевые значения (Zero Values)КонстантыПравила именованияИтоги: переменные и типы5Основы ввода-вывода
Форматированный выводСпецификаторы форматаВывод типовБазовый ввод данных пользователемИтоги: ввод и вывод8Функции
Понимание функцийОбъявление функцииВызов функцийПараметры функцииВозврат одного значенияВозврат нескольких значенийИменованные возвращаемые значенияОсновы области видимости функцийИтоги — создание переиспользуемого кода3Базовые операторы
Арифметические операторыОператор деленияОператор остатка от деленияОператор присваиванияКомбинированные операторы присваиванияИнкремент и декрементПовторение — Вычисления6Управление потоком: Условные конструкции
Оператор `if`Ключевое слово `else`Ключевое слово `else if`Затенение переменных в `if`Инициализация переменныхОператор `switch`Switch с выражениямиSwitch без выраженийКлючевое слово `fallthrough`Итоги — Принятие решений