Объявление переменных-указателей
Часть раздела Основы путешествия по GO на Coddy — урок 61 из 109.
В Go вы можете объявлять указатели двумя основными способами: используя var с типом указателя или используя оператор взятия адреса с :=.
Объявите указатель, используя var с типом указателя:
func main() {
var x int = 42
var ptr *int // Объявление указателя на целое число
ptr = &x // Присваивание адреса x переменной ptr
fmt.Println("Value of x:", x)
fmt.Println("Value of ptr:", ptr)
fmt.Println("Value at ptr:", *ptr)
}Вывод показывает, что указатель хранит адрес x:
Value of x: 42
Value of ptr: 0xc000018030
Value at ptr: 42Вы также можете объявить и инициализировать указатель в одной строке, используя :=:
y := 100
ptr := &y // Объявление и инициализация указателя за один шагЗадание
НовичокВ этом испытании вы попрактикуетесь в объявлении и использовании указателей в Go. Указатель уже настроен для вас, и ваша задача — создать новый указатель, который указывает на то же значение.
Выполните TODO в коде, чтобы объявить новую переменную-указатель с именем 'secondPointer', которая указывает на тот же адрес памяти, что и существующий указатель.
Шпаргалка
В Go вы можете объявлять указатели, используя var с типом указателя или используя оператор взятия адреса с :=.
Объявление указателя с помощью var:
var x int = 42
var ptr *int // Объявление указателя на целое число
ptr = &x // Присваивание адреса x переменной ptrОбъявление и инициализация указателя в одну строку с помощью :=:
y := 100
ptr := &y // Объявление и инициализация указателя за один шагДоступ к значениям указателя:
ptr— адрес памяти*ptr— значение по этому адресу
Попробуйте сами
package main
import "fmt"
func main() {
// Вот переменная и указатель на нее
originalValue := 42
pointerToValue := &originalValue
// TODO: Объявите новую переменную-указатель с именем 'secondPointer'
// которая указывает на тот же адрес памяти, что и 'pointerToValue'
// Не изменяйте код ниже
fmt.Printf("Original value: %v\n", originalValue)
fmt.Printf("Value through first pointer: %v\n", *pointerToValue)
fmt.Printf("Value through second pointer: %v\n", *secondPointer)
// Давайте изменим исходное значение и увидим, что все указатели отражают это изменение
originalValue = 100
fmt.Printf("\nAfter changing original value to 100:\n")
fmt.Printf("Original value: %v\n", originalValue)
fmt.Printf("Value through first pointer: %v\n", *pointerToValue)
fmt.Printf("Value through second pointer: %v\n", *secondPointer)
}В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
4Операторы сравнения и логические операторы
Операторы сравнения — Часть 1Операторы сравнения — Часть 2Логический оператор ANDЛогический оператор ORЛогический оператор NOTОсновы приоритета операторовИтоги: выполнение сравнений7Управляющие конструкции: Циклы
Что такое цикл `for`Цикл `for` — основыЦикл `for` — только условиеКлючевое слово `break`Ключевое слово `continue`Вложенные циклыИтоги — повторение действий2Переменные и базовые типы данных
Что такое переменнаяВывод типов с помощью `:=`Целые числа (int)Числа с плавающей точкойЛогический тип (Booleans)СтрокиНулевые значения (Zero Values)КонстантыПравила именованияИтоги: переменные и типы5Основы ввода-вывода
Форматированный выводСпецификаторы форматаВывод типовБазовый ввод данных пользователемИтоги: ввод и вывод8Функции
Понимание функцийОбъявление функцииВызов функцийПараметры функцииВозврат одного значенияВозврат нескольких значенийИменованные возвращаемые значенияОсновы области видимости функцийИтоги — создание переиспользуемого кода3Базовые операторы
Арифметические операторыОператор деленияОператор остатка от деленияОператор присваиванияКомбинированные операторы присваиванияИнкремент и декрементПовторение — Вычисления6Управление потоком: Условные конструкции
Оператор `if`Ключевое слово `else`Ключевое слово `else if`Затенение переменных в `if`Инициализация переменныхОператор `switch`Switch с выражениямиSwitch без выраженийКлючевое слово `fallthrough`Итоги — Принятие решений9Указатели
Что такое указатель?Объявление переменных-указателейОператор взятия адресаРазыменование указателейИспользование указателей в функцияхНулевые указателиИтоги: Понимание указателей