Базове Приведення Типів
Приведення типів — це процес перетворення даних з одного типу даних в інший. Однак важливо зазначити, що не завжди можливо перетворити дані з одного типу в інший. Наприклад, ми можемо перетворити float у int і навпаки. Проте, перетворення string у int не має сенсу, тому це неможливо.
Існує два типи перетворення типів або приведення типів. Один з них — це неявне приведення типів. Неявне приведення типів відбувається тоді, коли Go автоматично перетворює один тип в інший, якщо це безпечно та однозначно. Наприклад, коли ми присвоюємо цілочисельне значення змінній типу float, воно автоматично розглядається як float, оскільки під час перетворення дані не втрачаються (10 те саме, що й 10.0):
index.go
1var myFloat float32 = 10 // A valid statement
Інший тип приведення типів — це явне приведення типів (Explicit Type Casting), яке відбувається, коли програміст явно перетворює дані або вирази з одного типу в інший. Синтаксис для явного приведення типів: desiredType(expression), наприклад:
index.go
12345678package main import "fmt" func main() { var number1 float32 = 7.9 var number2 int = int(number1) fmt.Println(number2) // Outputs 7 }
У наведеній вище програмі ми перетворюємо значення типу float32 у int за допомогою явного приведення типів. У результаті десяткова частина початкового числа відкидається, і лише ціле значення 7 зберігається у number2. Важливо зазначити, що в цьому випадку частина даних втрачається, а саме десяткова частина числа (0.9). Однак це рішення було прийнято свідомо.
Аналогічно, ми можемо перетворити rune у string. У розділі Runes ми розглядали програму, яка виводила значення Rune у вигляді числа. Проте ми можемо відобразити символ, що відповідає Rune, перетворивши його у рядок:
index.go
123456789package main import "fmt" func main() { var char rune = 'a' fmt.Println(char) // Outputs 97 fmt.Println(string(char)) // Outputs 'a' }
Однак ми не можемо перетворити string на rune:
index.go
12var myString string = "A string value" fmt.Println(rune(myString)) // Error: cannot convert myString (variable of type string) to type rune
Важливо зазначити, що ми також не можемо перетворити рядок, який містить один символ, у руну:
index.go
1234567package main import "fmt" func main() { var text string = "a"; fmt.Printf(rune(text)) // Error here }
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат
Awesome!
Completion rate improved to 1.96
Базове Приведення Типів
Свайпніть щоб показати меню
Приведення типів — це процес перетворення даних з одного типу даних в інший. Однак важливо зазначити, що не завжди можливо перетворити дані з одного типу в інший. Наприклад, ми можемо перетворити float у int і навпаки. Проте, перетворення string у int не має сенсу, тому це неможливо.
Існує два типи перетворення типів або приведення типів. Один з них — це неявне приведення типів. Неявне приведення типів відбувається тоді, коли Go автоматично перетворює один тип в інший, якщо це безпечно та однозначно. Наприклад, коли ми присвоюємо цілочисельне значення змінній типу float, воно автоматично розглядається як float, оскільки під час перетворення дані не втрачаються (10 те саме, що й 10.0):
index.go
1var myFloat float32 = 10 // A valid statement
Інший тип приведення типів — це явне приведення типів (Explicit Type Casting), яке відбувається, коли програміст явно перетворює дані або вирази з одного типу в інший. Синтаксис для явного приведення типів: desiredType(expression), наприклад:
index.go
12345678package main import "fmt" func main() { var number1 float32 = 7.9 var number2 int = int(number1) fmt.Println(number2) // Outputs 7 }
У наведеній вище програмі ми перетворюємо значення типу float32 у int за допомогою явного приведення типів. У результаті десяткова частина початкового числа відкидається, і лише ціле значення 7 зберігається у number2. Важливо зазначити, що в цьому випадку частина даних втрачається, а саме десяткова частина числа (0.9). Однак це рішення було прийнято свідомо.
Аналогічно, ми можемо перетворити rune у string. У розділі Runes ми розглядали програму, яка виводила значення Rune у вигляді числа. Проте ми можемо відобразити символ, що відповідає Rune, перетворивши його у рядок:
index.go
123456789package main import "fmt" func main() { var char rune = 'a' fmt.Println(char) // Outputs 97 fmt.Println(string(char)) // Outputs 'a' }
Однак ми не можемо перетворити string на rune:
index.go
12var myString string = "A string value" fmt.Println(rune(myString)) // Error: cannot convert myString (variable of type string) to type rune
Важливо зазначити, що ми також не можемо перетворити рядок, який містить один символ, у руну:
index.go
1234567package main import "fmt" func main() { var text string = "a"; fmt.Printf(rune(text)) // Error here }
Дякуємо за ваш відгук!