GO语言基础教程(15)Go语言基本数据类型与运算符:Go语言数据类型与运算符魔幻指南:看完别再说你只会Hello World!

一、开篇:别让数据类型成了你代码里的“前任”

听说你学Go语言卡在数据类型了?每次见intfloat就像遇到分手多年的前任——熟悉又陌生?别慌!今天咱们用“吃瓜”心态扒一扒Go的基本数据类型和运算符,保证你笑着学会,顺便把代码写得像朋友圈吐槽一样自然。

(举个栗子🌰:假如你写var age = 18,Go会心一笑:“这小可爱是个int型”。但你要是写var price = 9.9,它立刻变脸:“哼,这可是float64!”)


二、数字家族:整数和浮点的“职场生存记”

1. 整数类型:从int8int64的内卷现场

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. 浮点数:float32float64的精度之争

这俩好比手机拍照:

  • 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的布尔值绝不暧昧,只有truefalse

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个车

  1. 整数除法坑10/4结果是2,要得小数请用10.0/4
  2. 字符串不可变str[0] = 'a'会报错,要转成[]byte
  3. 类型混用禁止int8 + int16必须手动转型
  4. 浮点数比较:别用==直接比,要用math.Abs(a-b) < 0.0001
  5. 运算符优先级:当心a + b * c,乖乖写a + (b * c)

七、结尾:数据类型是你的代码基因

Go语言的数据类型就像乐高积木——看似简单,组合起来却能造出整个宇宙。记住:int是砖块,string是彩窗,运算符就是拼接技巧。下次写代码时,不妨对着屏幕说:“嘿Go哥,给我来个float64的π,顺便用位运算算个权限!”

(彩蛋🎉:用fmt.Printf("%T", 变量)可以查看任何变量的类型,堪比类型界的“照妖镜”)


总结:学Go基础不必苦大仇深,把int当年龄、string当昵称、运算符当加减工资,瞬间接地气!现在就去写个计算器,体验一把用代码“算命”的快乐吧~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

值引力

持续创作,多谢支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值