Базове Приведення Типів
Приведення типів — це процес перетворення даних з одного типу даних в інший. Однак важливо зазначити, що не завжди можливо перетворити дані з одного типу в інший. Наприклад, ми можемо перетворити 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 }
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат
Can you explain why we can't convert a string to a rune in Go?
Are there any workarounds for converting a string to a rune?
What happens if I try to convert a string to a rune in my code?
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 }
Дякуємо за ваш відгук!