Оголошення типів #
Ми познайомились з основними типами даних у Go. Та це не всі типи ) Ми можемо створювати свої нові типи даних і використовувати їх так як нам потрібно.
Для створення нового типу даних ми використовуємо ключове слово type
:
type Age int
Таким чином ми створили новий тип даних під назвою Age
який всередині є цілим числом, та при тому є окремим типом, зі своїми методами і властивостями і ми не можемо його використовувати як заміну int
, так само як і не зможемо використати int
як Age
. Наприклад, якщо ми спробуємо призначити новій змінній типу int
значення зі змінної типу Age
, то компілятор go перевірить типи і ми отримаємо помилку при спробі скомпілювати нашу програму.
package main
type Age int
func main() {
var a Age = 5
var b int = a // тут виникне помилка
}
Перетворення типів #
Якщо ж типи сумісні, як у нашому прикладі, то ми можемо їх перетворювати з одного в інший. Для того щоби перетворити зміну з одного типу в інший нам потрібно прописати назву нового типу і потім в дужках прописати змінну, яку нам потрібно перетворити:
var a int = 25
var b Age
b = Age(a)
Таким чином ми можемо привласнити значення цілої змінної a
у змінну b
, перетворивши його у тип Age
Оголошення декількох типів #
Ми можемо створити одразу декілька типів використовуючи лише одне слово type
. Це зручно коли ви бажаєте створити одразу декілька типів, та хочете трошки скоротити запис. Для цього всі нові типи потрібно буде прописати у дужках після ключового слова type
type (
Size uint64
Text string
User struct {
Name string
Age int
}
)
Таким чином ми створимо одразу декілька типів: Size
, Text
та User
. Перший всередині буде беззнаковим цілим числом з розміром 64 біти. Другий - рядком, а третій - структурою.
Псевдоніми типів #
Ще одна особливість роботи з типами у Go - створення псевдонімів. Ця можливість використовується не часто, взагалі у процесі рефакторінга, тобто переписування коду для покращення читабельності коду та підвищення можливості розвитку та створення нового функціоналу. Та я вважаю за потрібне показати вам цю можливість, бо її дуже часто плутають зі створенням нового типу, хоча цей підхід має свої особливості. Ми створюємо псевдонім для типу так само через ключове слово type
type MyInt = int
Таким чином ми створили псевдонім для типу int
під назвою MyInt
. Особливість полягає у тому що цей тип має ті самі особливості і методи, як і той з якого ми його створили. Ми лише створили нову назву для того самого типу.