go语言学习(基本数据类型)

布尔类型

true false

布尔型数据只有 true(真)和 false(假)两个值

  1. 布尔类型变量的默认值为false
  2. Go 语言中不允许将整型强制转换为布尔型
  3. 布尔型无法参与数值运算,也无法与其他类型进行转换
go 复制代码
package main

import "fmt"

func main() {
    var b bool
    fmt.Println(b) //false 没有初始化,默认为false
    b1 := true
    fmt.Println(b1) //true

    b = 1 //编译报错,bool类型无法和其他类型互相转换

}

数值类型

整数类型
  1. 默认的数字定义类型是int类型
  2. 带个u就是无符号,只能存正整数
  3. 后面的数字就是2进制的位数
  4. uint8还有一个别名 byte, 一个字节=8个bit位
  5. int类型的大小取决于所使用的平台
类型 符号性 位数 取值范围(十进制) 说明
int8 有符号 8位 -128 ~ 127 最小的有符号整数,适合存储小范围整数(如状态码)
int16 有符号 16位 -32768 ~ 32767
int32 有符号 32位 -2³¹ ~ 2³¹-1 (约-21亿~21亿) 对应 rune(Unicode码点的别名)
int64 有符号 64位 -2⁶³ ~ 2⁶³-1 (约-922亿亿~922亿亿) 适合存储大范围整数(如时间戳、大计数)
uint8 无符号 8位 0 ~ 255 对应 byte(ASCII字符的别名)
uint16 无符号 16位 0 ~ 65535
uint32 无符号 32位 0 ~ 4294967295
uint64 无符号 64位 0 ~ 18446744073709551615
int 有符号 取决于系统(32位系统32位,64位系统64位) 同int32或int64 最常用的整数类型,适合多数场景(如循环索引、普通计数)
uint 无符号 int的位数 同uint32或uint64 用于存储非负整数,需注意与int的类型不兼容(不能直接运算)
uintptr 无符号 同指针位数(通常64位) 取决于系统 用于底层编程(如指针运算),存储指针的数值形式(非安全指针)
浮点型

Go语言支持两种浮点型数:float32 和 float64

  1. float32 的浮点数的最大范围约为3.4e38,可以使用常量定义:math.MaxFloat32
  2. float64 的浮点数的最大范围约为 1.8e308,可以使用一个常量定义:math.MaxFloat64

如果没有显式声明,则默认是float64

类型 位数 精度(有效数字) 范围(约) 说明
float32 32位 6-7位 ±1.4e-45 ~ ±3.4e38 单精度浮点数,适合内存敏感场景(精度要求低)
float64 64位 15-17位 ±4.9e-324 ~ ±1.8e308 双精度浮点数,默认浮点类型(精度更高,推荐优先使用)
特殊类型
go 复制代码
byte    // uint8 的别名
rune    // int32 的别名,表示 Unicode 码点

这两个后面的字符型会讲。

字符型

分为单字节字符(byte)和多字节字符(rune):

go 复制代码
package main

import "fmt"

func main() {

    var a byte = 'a'
    var b byte = 97
    fmt.Println(a) //97
    fmt.Println(b) //97
    //直接打印都是输出数字

    fmt.Printf("%c\n", a) //a
    fmt.Printf("%c\n", b) //b

    //汉字一般占2个字节以上,所以是多字节字符
    var y rune = '咬'
    fmt.Printf("%c\n", y) //咬
}
  1. 在 Go 中,字符的本质是一个整数,直接输出时,是该字符对应的 UTF-8 编码的码值
  2. 可以直接给某个变量赋一个数字,然后按格式化输出时 %c ,会输出该数字对应的 unicode 字符
  3. 字符类型是可以进行运算的,相当于一个整数,因为它都对应有 Unicode 码。

字符串

string

go 复制代码
package main

import "fmt"

func main() {
    var s string = "Y_Yao"
    fmt.Println(s) // Y_Yao
}
转义字符
go 复制代码
package main

import "fmt"

func main() {
    // 1. 常见转义字符示例
    fmt.Println("=== 常见转义字符 ===")
    fmt.Print("Hello,\tWorld!\n")            // Hello,   World!
    fmt.Println("Path: C:\\Users\\Admin")    // Path: C:\Users\Admin
    fmt.Println("He said, \"Go is great!\"") // He said, "Go is great!"

    // 2. 进制表示示例
    fmt.Println("\n=== 进制表示 ===")
    fmt.Println("\\x41:", "\x41")             // A
    fmt.Println("\\u0041:", "\u0041")         // A
    fmt.Println("\\U00000041:", "\U00000041") // A
    fmt.Println("\\101:", "\101")             // A (八进制)

    // d使用反引号(原始字符串),注意此时里面无法再使用转义字符
    multi2 := `Line 1
Line 2
Line 3`
    fmt.Println("\n使用反引号:")
    fmt.Println(multi2)
}
类别 转义字符 说明 示例输出
换行回车 \n 换行符 多行文本
\r 回车符 行首开始
制表对齐 \t 水平制表 列对齐
\v 垂直制表 垂直对齐
特殊符号 \\ 反斜杠 \
\" 双引号 "
\' 单引号 '
控制字符 \a 响铃/警告 终端响铃
\b 退格 回退字符
\f 换页 打印机换页
进制表示 \xHH 十六进制(2位) \x41 → 'A'
\uHHHH Unicode(4位) \u0041 → 'A'
\UHHHHHHHH Unicode(8位) \U00000041 → 'A'
\ooo 八进制(3位) \101 → 'A'
相关推荐
Chester_19994 小时前
CSP202203C.计算资源调度器
开发语言·数据结构·c++·蓝桥杯
EXI-小洲5 小时前
Java 操作 Word:字符串替换、图片插入、动态生成表格与API接口下载
java·开发语言·spring boot·word
会周易的程序员6 小时前
给 PLC 写一个字节码虚拟机:STVM 虚拟机架构设计
开发语言·c++·虚拟机·软plc·iec61131·stvm
机器视觉知识推荐、就业指导6 小时前
为什么老说“纯 Qt 没啥就业市场”?
开发语言·qt
telepan6 小时前
Qt 开发避坑与性能指南:如何优雅、安全地定义全局常量字符串?
开发语言·qt
m0_695251496 小时前
Qt MaintenanceTool 使用国内镜像加速下载(超详细教程)
开发语言·qt
是隼人6 小时前
buuctf-pwn xdctf2015_pwn200题解(学习过程持续更新)
c语言·学习·安全·pwn入门·ctf入门
大衛說7 小时前
《Python 从入门到精通》系列总览与学习路线
开发语言·python·学习
吃好睡好便好8 小时前
查找函数的使用
学习·算法·matlab·生活·查找函数
学运维的Kysan8 小时前
暑假运维学习打卡第二十九天8.29
学习