Go - Типы данных:Friendly Guide for Beginners
Привет, будущий программист! Готовы окунуться в чудесный мир программирования на языке Go? Сегодня мы рассмотрим один из основных концептов Go: типы данных. Не волнуйтесь, если вы еще ни разу не писали кода – я проведу вас через это шаг за шагом, как я делал это для countless студентов на протяжении многих лет моего преподавания. Поехали!
Что такое типы данных?
Прежде чем углубиться в детали, давайте поймем, что такое типы данных. Представьте, что вы организовываете كبير聚会 (весело, правда?). Вам нужно следить за разной информацией:
- Количество гостей (целое число)
- Стоимость еды на человека (число с десятичными знаками)
- Будет ли это сюрприз-пати или нет (да или нет)
- Имя почетного гостя (последовательность букв)
В программировании мы используем разные типы данных для представления этих разных видов информации. Go, будучи продуманным языком, предоставляет нам несколько типов данных для работы.
Целые типы
Давайте начнем с целых типов. Они используются для целых чисел, таких как количество гостей на нашем празднике.
Основные целые типы
Go предлагает несколько целых типов, различающихся по размеру и способности представлять отрицательные числа:
Тип | Размер (биты) | Диапазон |
---|---|---|
int8 | 8 | -128 до 127 |
int16 | 16 | -32,768 до 32,767 |
int32 | 32 | -2,147,483,648 до 2,147,483,647 |
int64 | 64 | -9,223,372,036,854,775,808 до 9,223,372,036,854,775,807 |
uint8 | 8 | 0 до 255 |
uint16 | 16 | 0 до 65,535 |
uint32 | 32 | 0 до 4,294,967,295 |
uint64 | 64 | 0 до 18,446,744,073,709,551,615 |
Давайте посмотрим, как мы можем использовать их в коде:
package main
import "fmt"
func main() {
var partyGuests int = 50
var smallPartyGuests int8 = 10
var hugePartyGuests uint64 = 1000000
fmt.Println("Обычные гости на вечеринке:", partyGuests)
fmt.Println("Маленькая вечеринка гостей:", smallPartyGuests)
fmt.Println("Много гостей на вечеринке:", hugePartyGuests)
}
В этом примере мы объявляем переменные для хранения количества гостей на разных типах вечеринок. Тип int
используется для обычной вечеринки, int8
для маленького собрания (поскольку мы знаем, что оно не превысит 127), и uint64
для огромного праздника (на случай, если мы планируем мероприятие для всего города!).
Типы 'int' и 'uint'
Go также предоставляет типы int
и uint
, которые имеют размер не менее 32 бит, но могут быть больше в зависимости от системы. Они часто являются наиболее удобным выбором, когда вам не нужно конкретное значение размера.
var flexibleNumber int = 42
var positiveFlexibleNumber uint = 42
Здесь flexibleNumber
может быть положительным или отрицательным, в то время как positiveFlexibleNumber
всегда положителен.
Плавающие типы
Теперь давайте поговорим о浮点ных числах. Они используются для чисел с десятичными знаками, таких как стоимость на человека для еды на нашей вечеринке.
Go предоставляет два浮点ных типа:
Тип | Размер (биты) | Точность |
---|---|---|
float32 | 32 | Приблизительно 7 десятичных знаков |
float64 | 64 | Приблизительно 15 десятичных знаков |
Давайте посмотрим, как их использовать:
package main
import "fmt"
func main() {
var costPerPerson float32 = 15.50
var totalBudget float64 = 1000.75
fmt.Printf("Стоимость на человека: $%.2f\n", costPerPerson)
fmt.Printf("Общий бюджет: $%.2f\n", totalBudget)
}
В этом примере мы используем float32
для стоимости на человека (поскольку нам не нужно极端ное точность) и float64
для общего бюджета (где мы можем хотеть больше десятичных знаков для точных расчетов).
Символ %.2f
в функции Printf
instructs Go отобразить浮点ное число с двумя десятичными знаками.
Другие числовые типы
Go предоставляет еще несколько числовых типов, которые полезны в конкретных ситуациях.
Комплексные числа
Да, Go может обрабатывать комплексные числа! Он предлагает два типа:
Тип | Описание |
---|---|
complex64 | Комплексные числа с float32 реальными и мнимыми частями |
complex128 | Комплексные числа с float64 реальными и мнимыми частями |
Вот быстрый пример:
package main
import "fmt"
func main() {
var c64 complex64 = 1 + 2i
var c128 complex128 = 3 + 4i
fmt.Println("Complex64:", c64)
fmt.Println("Complex128:", c128)
}
Хотя вы, возможно, не часто используете комплексные числа, приятно знать, что Go всегда готов помочь, если вам это нужно!
Байт и Рун
Go также имеет два синонима для целых типов, которые используются в конкретных контекстах:
Тип | Синоним для | Обычное использование |
---|---|---|
byte | uint8 | Представляет байт данных |
rune | int32 | Представляет Unicode кодовую точку |
Вот как вы можете использовать их:
package main
import "fmt"
func main() {
var b byte = 65
var r rune = 'A'
fmt.Printf("Байт %d represents: %c\n", b, b)
fmt.Printf("Рун %d represents: %c\n", r, r)
}
В этом примере, и b
, и r
представляют букву 'A', но по-разному. Байт использует ASCII значение, а рун использует Unicode кодовую точку.
Заключение
Уф! Мы сегодня covered много ground. От целых чисел до浮点ных и даже_complexных чисел, Go предоставляет богатый набор типов данных для работы. Помните, что выбор правильного типа данных подобен выбору подходящего инструмента для работы – он может сделать ваш код более эффективным и предотвратить ошибки.
Пока вы продолжаете свое путешествие в Go, вы будете чувствовать себя более комфортно с этими типами и узнаете, когда использовать каждый из них. Не волнуйтесь, если это покажется вам подавляющим сначала – это совершенно нормально! Как и обучение езде на велосипеде, это требует практики, но через некоторое время вы будете легко передвигаться по коду на Go, как профессионал.
Продолжайте программировать, продолжайте учиться и, что самое главное, получайте удовольствие! В конце концов, программирование немного похоже на планирование идеальной вечеринки – все дело в том, чтобы правильно combining элементы, чтобы создать что-то потрясающее. Счастливого кодирования!
Credits: Image by storyset