valueOfTypeB = typeB(valueOfTypeA)
B型值=B型(A型值)
例子:
a := 5.0
b := int(a)
只有定义良好,类型转换才会成功,例如从取值范围较小的类型转换为取值范围较大的类型(int16 到 int32)。从取值范围较大的类型转换为取值范围较小的类型(int32 转换为 int16,或 float32 转换为 int)时,会存在精度损失(截断)。
只有相同基类型的变量才能相互转换(例如,将 int16 类型转换为 int32 类型)。如果将不同基类型的变量相互转换(例如,将 bool 转换为 int),则会出现编译错误。类型):
package main
import (
"fmt"
"math"
)
func main() {
//各値の範囲を出力します
fmt.Println("int8 range:", math.MinInt8、math.MaxInt8)
fmt.Println("int16 range:", math.MinInt16、math.MaxInt16)
fmt.Println("int32 range:", math.MinInt32、math.MaxInt32)
fmt.Println("int64 range:", math.MinInt64、math.MaxInt64)
//32ビット整数値を初期化します
var a int32 = 1047483647
//変数の16進形式と10進値を出力します
fmt.Printf("int32: 0x%x %d\n", a、a)
// a変数の値を16進数に変換して、値が切り捨てられる
b:= int16(a)
//変数の16進形式と10進値を出力します
fmt.Printf("int16: 0x%x %d\n", b、b)
//定数をfloat32型として保存します
var c float32 = math.Pi
// int型に変換し、浮動小数点が失われます
fmt.Println(int(c))
} 代码说明如下:
- 第 11-14 行打印一些常见整数类型的值范围。
- 第 17 行声明并初始化了一个 int32 类型的变量 a。
- 第 19 行使用 fmt.Printf 的
%x动词以十六进制格式打印值,打印转换前 a 的 32 位值。 - 第 22 行将 a 的值从 int16 类型(即 32 位有符号整数)转换为 16 位有符号整数。但是,由于 int16 类型的值范围比 int32 类型更窄,因此值变为Masu。截断(精度损失)。
- 第 24 行打印变量的转换值,即 b 的值。这也以十六进制和十进制输出。
- 在第 27 行中,math.Pi 是 math 包中的常量。默认情况下它没有类型,并且根据引用的实际类型自动推断。这里,math.Pi被赋值给变量c,所以它的类型是float32。
- 第29行将float32转换为int类型并输出。
这是代码输出:
int8 range: -128 127
int16 range: -32768 32767
int32 range: -2147483648 2147483647
int64 range: -9223372036854775808 9223372036854775807
int32: 0x3e6f54ff 1047483647
int16: 0x54ff 21759
3
根据输出结果,16位有符号整数的范围是-32768到32767,但是变量a的值1047483647不在这个范围内。 1047483647对应的十六进制值为0x3e6f54ff,但转换为int16后长度减半,即十六进制值减半为0x54ff,十进制值为21759。
将浮点数转换为整数会删除小数部分,仅保留整数部分。




![2021 年如何设置 Raspberry Pi Web 服务器 [指南]](https://i0.wp.com/pcmanabu.com/wp-content/uploads/2019/10/web-server-02-309x198.png?w=1200&resize=1200,0&ssl=1)

