初面网初面网

变量

布尔型

布尔型数据只有true和false

  • 默认值为false
  • 不允许将整型强制转换为布尔型
  • 布尔型无法参与数值运算,也无法与其他类型进行转换
var ifTrue = true
fmt.Printf("%v--%T", ifTrue, ifTrue)

整型

var num1 int = 10

fmt.Printf("num=%v 类型:%T", num1, num1)

var num2 int8 = 100

// 用unsafe.Sizeof()查看不同长度的整型在内存里面的存储空间
fmt.Println(unsafe.Sizeof(num2))    

不同的整型位数

数字字面量语法

%d, 表示10进制输出 %b, 表示2进制输出 %o, 表示8进制输出 %x, 表示16进制输出

num := 10
fmt.Printf("num=%v 类型:%T", num, num)

浮点型

var a float32 = 3.14    // 这里创建32位浮点数。64位系统中默认会创建64位浮点数
fmt.Printf("值: %v--%f--%.2f, 类型%T", a,a,a,a)

// %.2f表示保留两位小数

f1 := 3.13
fmt.Println(unsafe.Sizeof(f1)) // 64

// 科学计数法表示
var f2 float32 = 3.14e2 // 3.14*10^2
var f3 float32 = 3.14e-2    // 3.14*10^-2,也就是3.14除10^2

// 低阶转高阶
var a1 float32 = 23.4
a2 := float64(a1)
fmt.Printf("a1的类型是%T, a2的类型是%T", a1, a2)

精度丢失

d := 1129.6
fmt.Println((d*100))    // 输出: 112959.9999999999

定长条件下,二进制小数和十进制小数互转可能有精度丢失。可使用第三方包(decimal)解决。

var num1 float64 = 3.1
var num2 float64 = 4.2
d1 := decimal.NewFromFloat(num1).Add(decimal.NewFromFloat(float64(num2)))
fmt.Println(d1)

int转float

a := 10
b := float64(a)
fmt.Printf("a的类型是%T, b的类型是%T", a,b)

float转int

var a float32 = 23.3
b := int(a)
fmt.Printf("b的值为%v, b的类型%T", b,b)

更新于 2026/8/13