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'
相关推荐
名字还没想好☜3 小时前
Python f-string 进阶:数字格式化、对齐填充、调试 = 号与嵌套表达式
开发语言·数据库·python·字符串格式化·f-string
一壶浊酒..6 小时前
Scrape Webpack练习
开发语言·javascript·webpack
命运之光7 小时前
【C语言完整代码】就诊信息管理系统
java·c语言·开发语言
命运之光7 小时前
【C语言完整代码】图书管理系统:图书馆场景下的增删改查实战
c语言·开发语言
猿长大人8 小时前
C# | Serilog 新手入门
开发语言·c#·.net·log
圆奋奋9 小时前
FreeRTOS学习(三)- 任务调度模块
学习·开源·freertos
在世修行9 小时前
从零打造 C# 工业视觉检测系统(七):串口通信 SerialPort 封装与开发
开发语言·c#·modbus rtu·rs232/rs485
吃着火锅x唱着歌9 小时前
Effective C++ 学习笔记 条款40 明智而审慎地使用多重继承
c++·笔记·学习
Hammer_Hans9 小时前
DFT笔记98
java·开发语言·数据库
xian_wwq10 小时前
【学习笔记】Prompt Engineering 没死,只是它不再够用了-2/16
笔记·学习·prompt