Menu
Coddy logo textTech

Указатели на структуры

Часть раздела Основы путешествия по 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
challenge icon

Задание

Новичок

В этом испытании вы попрактикуетесь в работе с указателями на структуры в 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)
}
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Основы