06_运算符与类型转换
使用算术、比较、逻辑和位运算,并正确处理类型转换。
Go 基础专题 06:运算符与类型转换
学习目标:使用算术、比较、逻辑和位运算,并正确处理类型转换。
核心知识
整数支持 + - * / %,整数除法向零截断,因此 -7 / 3 为 -2,-7 % 3 为 -1。比较有 == != < <= > >=;逻辑有 && || !,并会短路。Go 没有三元表达式 ?:,条件赋值用 if。++、-- 是语句,不能放进表达式。
package main
import "fmt"
func main() {
var small int32 = 7
var big int64 = 3
sum := int64(small) + big
fmt.Println(sum, -7/3, -7%3)
}
不同数值类型通常不能直接混算,需显式写 int64(small)。转换并不自动检查信息丢失;大整数转窄整数或浮点转整数要先确认范围。string(65) 表示 Unicode 码点 A,不是文本 "65";整数转十进制文本用 strconv.Itoa,解析文本用 strconv.Atoi 并检查错误。
位运算包括 &、|、^、&^、<<、>>。切片、映射、函数不能与同类型值直接比较相等,只能与 nil 比较;若需要比较内容,用显式遍历或合适的标准库函数。
逐步理解
计算前先确认两个操作数类型:7 / 2 的两个操作数是整数,结果为整数;float64(7) / 2 中常量 2 可适配浮点语境,结果为 3.5。Go 的 &&、|| 只接受布尔值,不能把非空字符串当真。类型转换不会完成业务校验,例如字符串转整数必须检查解析错误与范围。
动手练习
练习:预测 7/2 与 float64(7)/2。答案:分别是整数 3 与浮点数 3.5。