news 2026/5/11 18:45:00

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
go语言学习(基本数据类型)

布尔类型

true false

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

  1. 布尔类型变量的默认值为false
  2. Go 语言中不允许将整型强制转换为布尔型
  3. 布尔型无法参与数值运算,也无法与其他类型进行转换
packagemainimport"fmt"funcmain(){varbboolfmt.Println(b)//false 没有初始化,默认为falseb1:=truefmt.Println(b1)//trueb=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

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

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

字符型

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

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

字符串

string

packagemainimport"fmt"funcmain(){varsstring="Y_Yao"fmt.Println(s)// Y_Yao}
转义字符
packagemainimport"fmt"funcmain(){// 1. 常见转义字符示例fmt.Println("=== 常见转义字符 ===")fmt.Print("Hello,\tWorld!\n")// Hello, World!fmt.Println("Path: C:\\Users\\Admin")// Path: C:\Users\Adminfmt.Println("He said, \"Go is great!\"")// He said, "Go is great!"// 2. 进制表示示例fmt.Println("\n=== 进制表示 ===")fmt.Println("\\x41:","\x41")// Afmt.Println("\\u0041:","\u0041")// Afmt.Println("\\U00000041:","\U00000041")// Afmt.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’
\uHHHHUnicode(4位)\u0041→ ‘A’
\UHHHHHHHHUnicode(8位)\U00000041→ ‘A’
\ooo八进制(3位)\101→ ‘A’
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/9 17:35:34

通义千问3-Reranker-0.6B实操手册:日志结构化输出+ELK日志分析集成

通义千问3-Reranker-0.6B实操手册:日志结构化输出ELK日志分析集成 1. 引言:当重排序模型遇上日志分析 如果你正在用大模型做搜索、问答或者文档分析,肯定遇到过这样的问题:模型返回的结果虽然多,但真正有用的信息总是…

作者头像 李华
网站建设 2026/4/9 17:35:09

别再数据线了!用FastAPI 分钟搭个局域网文件+剪贴板神器啥

为 HagiCode 添加 GitHub Pages 自动部署支持 本项目早期代号为 PCode,现已正式更名为 HagiCode。本文记录了如何为项目引入自动化静态站点部署能力,让内容发布像喝水一样简单。 背景/引言 在 HagiCode 的开发过程中,我们遇到了一个很现实的问…

作者头像 李华
网站建设 2026/4/9 17:35:08

利用开源监控与作业管理工具构建轻量级LS-DYNA资源使用看板

让你的LS-DYNA许可不再“睡大觉”记得去年冬天,俺们团队在做一款汽车仿真模型的时候,干到半夜突然来了个“又抢不到软件许可了!”的惊呼。项目急着出图,偏偏授权全被占用。可话又说回来奇怪的是IT部门查账时可发现,俺们…

作者头像 李华
网站建设 2026/4/9 17:32:03

RK3588S Android12内核启动卡死问题:__list_add_valid错误分析与修复

1. 问题现象与日志分析 最近在调试RK3588S平台时遇到一个典型的内核启动问题:系统在Android12启动过程中卡死,内核日志中出现了__list_add_valid错误。从日志来看,问题发生在mpp_vepu2驱动加载阶段,具体表现为链表操作异常&#x…

作者头像 李华