Вот вариант с числами
1 2 3 4 5 |
var a int var b int64 a = 5 b = int64(a) |
Golang типизированый язык и переменная не может быть разного типа! Всегда нужно приводить к другому типу и конвертировать если нужно
Вот тоже неплохой пример
1 2 3 4 5 6 7 8 9 10 11 12 13 |
package main import ( "fmt" "math" ) func main() { var x, y int = 3, 4 var f float64 = math.Sqrt(float64(x*x + y*y)) var z uint = uint(f) fmt.Println(x, y, z) } |
Вообще в отличие от C, в Golang’е явные приведения типов требуют присвоения между различными элементами. В данном примере это можно подробно пронаблюдать:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
package main import ( "fmt" "math" ) func main() { var x, y int = 3, 4 var f float64 = math.Sqrt(float64(x*x + y*y)) var z uint = uint(f) fmt.Println(x, y, z) } |
Ну вот допустим:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
var i int j := i // j это int Но когда же правая часть содержит нетипизированную числовую константу, то новая переменная может быть float64, int или complex128 в зависимости от того, какая точность константы: i := 42 // int f := 3.142 // float64 g := 0.867 + 0.5i // complex128 И вот тебе пример использования всего этого: package main import "fmt" func main() { v := 42 fmt.Printf("v is of type %T\n", v) } |