一、开篇:别让数据类型成了你代码里的“前任”
听说你学Go语言卡在数据类型了?每次见int和float就像遇到分手多年的前任——熟悉又陌生?别慌!今天咱们用“吃瓜”心态扒一扒Go的基本数据类型和运算符,保证你笑着学会,顺便把代码写得像朋友圈吐槽一样自然。
(举个栗子🌰:假如你写var age = 18,Go会心一笑:“这小可爱是个int型”。但你要是写var price = 9.9,它立刻变脸:“哼,这可是float64!”)
二、数字家族:整数和浮点的“职场生存记”
1. 整数类型:从int8到int64的内卷现场
Go的整数类型活像一家子兄弟姐妹:
int8(-128到127):像职场新人,能力小但灵活int64(±9千万亿):堪比公司CEO,管天管地- 特别嘉宾
uint:坚决不碰负数的乐观主义者
代码小剧场:
func main() {
var a int8 = 100
var b int64 = 1e15 // 1后面跟15个零,土豪气息扑面而来
// 重点!不同类型不能直接加减,要像媒人牵线般转型:
sum := int64(a) + b
fmt.Printf("穷小子+土豪=%d\n", sum) // 输出:穷小子+土豪=1000000000000100
}
2. 浮点数:float32和float64的精度之争
这俩好比手机拍照:
float32:像老旧前置摄像头,稍微放大就糊float64:高清后置镜头,连毛孔都拍得清
实测代码:
func main() {
var pi32 float32 = 3.1415926535
var pi64 float64 = 3.1415926535
fmt.Println("float32的π:", pi32) // 输出3.1415927(第七位开始四舍五入)
fmt.Println("float64的π:", pi64) // 输出3.1415926535(原样保留)
// 特殊值预警!
var zero float64
fmt.Println("0除以0=", zero/zero) // 输出NaN(Not a Number)
}
三、非数字天团:布尔和字符串的“C位出道”
1. bool类型:非黑即白的直男思维
Go的布尔值绝不暧昧,只有true或false:
func main() {
isGoCool := true
isJavaAncient := false
fmt.Println("Go是否YYDS?", isGoCool && !isJavaAncient) // 输出true
// &&表示“且”,||表示“或”,!表示“取反”
}
2. 字符串:比相亲对象还能“装”
字符串看似文静,其实暗藏玄机:
- 用
+拼接:像搭乐高 - 用反引号
` ` `包裹:原样输出(连换行都不改) - 用
==比较:内容相同就true,不像Java那么矫情
代码大秀场:
func main() {
// 日常拼接
hello := "你好"
world := "世界"
message := hello + ", " + world + "!"
fmt.Println(message) // 输出:你好, 世界!
// 多行字符串(写诗专用)
poem := `床前明月光,
疑是地上霜。
举头望明月,
低头写代码。`
fmt.Println(poem)
// 比较字符串
fmt.Println("Go" == "go") // 输出false(大小写敏感!)
}
四、运算符:程序员的“数学算命大全”
1. 算术运算符:加减乘除的江湖规矩
特别注意/除法——整数相除会抹零!
func main() {
// 整数除法惨案
fmt.Println("10/3=", 10/3) // 输出3(小数部分被截肢)
fmt.Println("10.0/3=", 10.0/3) // 输出3.333...(用浮点数才能保留小数)
// 取模运算的妙用:判断闰年
year := 2024
if year%4 == 0 && year%100 != 0 || year%400 == 0 {
fmt.Println(year, "是闰年!")
}
}
2. 比较运算符:>< == 的塑料友情
比较结果永远是bool值:
func main() {
score := 60
fmt.Println("及格吗?", score >= 60) // 输出true
fmt.Println("满分吗?", score == 100) // 输出false
}
3. 位运算符:二进制的“密室逃脱”
适合玩权限控制开关:
func main() {
// 用位运算管理权限
const (
Read = 1 << iota // 1(二进制001)
Write // 2(010)
Execute // 4(100)
)
userPermission := Read | Write // 有读和写权限(二进制011)
fmt.Println("可读?", (userPermission&Read) != 0) // 输出true
fmt.Println("可执行?", (userPermission&Execute) != 0) // 输出false
}
4. 优先级:运算符的“论资排辈”
记住口诀:* / % > + - > == != > && > ||
不确定时就用括号,就像过年发红包——简单直接最受欢迎!
五、综合实战:写个“工资计算器”
结合所有知识点来个综合案例:
package main
import "fmt"
func main() {
// 基础工资和奖金
baseSalary := 8000.0
bonus := 2000.0
// 计算税前总额(用浮点数避免精度丢失)
total := baseSalary + bonus
taxRate := 0.1
tax := total * taxRate
// 判断是否高收入(比较运算符)
isHighIncome := total > 10000
// 输出结果(字符串拼接)
fmt.Printf("工资总额:%.2f元\n", total)
fmt.Printf("缴税:%.2f元\n", tax)
fmt.Printf("是否高收入:%t\n", isHighIncome)
// 彩蛋:用位运算判断奇偶
months := 12
fmt.Printf("月份是奇数吗?%t\n", months&1 == 1)
}
六、避坑指南:新手常翻的5个车
- 整数除法坑:
10/4结果是2,要得小数请用10.0/4 - 字符串不可变:
str[0] = 'a'会报错,要转成[]byte - 类型混用禁止:
int8 + int16必须手动转型 - 浮点数比较:别用
==直接比,要用math.Abs(a-b) < 0.0001 - 运算符优先级:当心
a + b * c,乖乖写a + (b * c)
七、结尾:数据类型是你的代码基因
Go语言的数据类型就像乐高积木——看似简单,组合起来却能造出整个宇宙。记住:int是砖块,string是彩窗,运算符就是拼接技巧。下次写代码时,不妨对着屏幕说:“嘿Go哥,给我来个float64的π,顺便用位运算算个权限!”
(彩蛋🎉:用fmt.Printf("%T", 变量)可以查看任何变量的类型,堪比类型界的“照妖镜”)
总结:学Go基础不必苦大仇深,把int当年龄、string当昵称、运算符当加减工资,瞬间接地气!现在就去写个计算器,体验一把用代码“算命”的快乐吧~

被折叠的 条评论
为什么被折叠?



