Оголошення типів

Оголошення типів #

Ми познайомились з основними типами даних у 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. Особливість полягає у тому що цей тип має ті самі особливості і методи, як і той з якого ми його створили. Ми лише створили нову назву для того самого типу.