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'
相关推荐
Y001112361 小时前
MySQL-进阶
开发语言·数据库·sql·mysql
Crazy________1 小时前
docker4.8
java·开发语言·eureka
山甫aa2 小时前
List 容器 -----C++的stl学习
开发语言·c++·学习
cch89182 小时前
Laravel 2.x:早期框架的奠基之路
java·开发语言
t198751282 小时前
光伏发电MPPT(最大功率点跟踪)MATLAB仿真程序
开发语言·matlab
无聊大侠hello world2 小时前
Yu-AI-Agent 项目(AI 恋爱大师智能体) · 学习笔记
人工智能·笔记·学习
AI_零食2 小时前
Flutter 框架跨平台鸿蒙开发 - 孤独指数应用
学习·flutter·开源·harmonyos
阿Y加油吧2 小时前
回溯法经典难题:N 皇后问题 深度解析 + 二分查找入门(搜索插入位置)
开发语言·python
李小枫2 小时前
webflux接收application/x-www-form-urlencoded参数
android·java·开发语言