Go零基础入门万字笔记整理|语法规范、数据类型、指针、运算符、流程控制、函数全梳理
标签:GolangGo语言入门后端开发编程笔记零基础学Go
一、前言
最近从零系统学习 Go 语言,全程手写纸质笔记,完整记录了Go语法规范、基础数据类型、指针原理、运算符、分支循环、跳转关键字、函数基础等核心知识点。
本文将手写笔记全面电子化,梳理新手高频踩坑细节、核心语法规则与易错知识点,内容通俗易懂、结构清晰,非常适合Go零基础入门同学收藏复习、查漏补缺。
二、Go 代码语法规范
1、代码编写硬性规则
- 源代码文件后缀必须为 .go;
- 程序唯一执行入口是 main() 函数;
- Go 严格区分大小写;
- 语句末尾无需手动加分号,编译器会自动补全,是Go代码简洁性的核心体现;
- 编译器逐行解析代码,一行仅支持一条语句,同行多条语句直接报错;
- 定义后未使用的变量、导入后未使用的包,编译直接报错,强制规范编码;
- 大括号必须紧跟代码行末尾,禁止单独换行书写。
2、注释写法 - 块注释:/* 注释内容 */,VSCode 快捷键 Shift+Alt+A,不支持嵌套块注释;
- 行注释:// 注释内容,VSCode 快捷键 Ctrl+/。
3、代码风格标准 - 统一使用 Tab 缩进,不使用空格;
- 单行代码长度建议不超过 80 字符,超长语句手动换行;
- 可参考Go官方标准库代码规范编写代码;
- 官方文档:https://golang.org,中文学习文档:studygolang.com。
4、标识符命名规则 - 命名组成:仅支持字母、数字、下划线,禁止数字开头;
- 统一使用驼峰命名法;首字母大写为包外可访问,小写仅当前包私有;
- Go内置36个保留关键字,禁止用作变量、函数名;
- 包名简洁统一,与文件夹名称保持一致;main 为可执行程序主包,不可被其他包导入。
三、Go 全部基础数据类型详解
1、整型(整数类型)
整型分为有符号整型和无符号整型,不同类型占用内存、取值范围差异较大,适配不同业务场景:
类型名
占用字节
取值范围
int8 / uint8(byte)
1 字节
-2⁷~2⁷-1 / 0~2⁸-1
int16 / uint16
2 字节
-2¹⁵~2¹⁵-1 / 0~2¹⁶-1
int32 / uint32
4 字节
-2³¹~2³¹-1 / 0~2³²-1
int64 / uint64
8 字节
-2⁶³~2⁶³-1 / 0~2⁶⁴-1
int / uint
系统自适应
32位系统4字节,64位系统8字节,适配对应平台范围
编码规范:满足业务取值需求的前提下,优先选择占用内存更小的类型,节省系统资源。
2、浮点类型 - float32:4 字节,精度约小数点后 6~7 位;
- float64:8 字节,精度更高,日常开发优先使用;
- 浮点数底层存储存在微小精度偏差,禁止直接使用 == 判断相等。
3、字符类型(byte、rune) - byte:本质是 uint8,对应ASCII码字符,用于存储英文字符、符号;
- rune:对应UTF-8 Unicode字符,专门用于存储中文、特殊符号;
- 字符使用单引号包裹,底层存储为ASCII数值,可直接参与数学运算。
4、布尔类型 bool - 仅包含两个值:true、false;
- 占用1个字节,默认零值为 false;
- 不支持用数字0、1替代布尔值,语法严格区分。
5、字符串 string - 双引号包裹,字符串为不可变常量,无法直接修改内部字符;
- 支持转义字符:\n换行、\t制表符、\斜杠、"双引号;
- 多行字符串使用反引号 ` 包裹,原样保留格式,不解析转义符。
6、所有基础类型默认零值
变量声明未手动赋值时,Go会自动赋予默认零值,无需手动初始化: - 整型、浮点型:默认值 0
- 布尔类型:默认值 false
- 字符串:默认空字符串 “”
7、类型转换规则 - Go 不支持隐式类型转换,不同类型之间必须手动强制转换;
- 转换格式:目标类型(变量值),示例:float64(num);
- 大范围类型转小范围类型,会出现数值截断、精度丢失、数据溢出问题;
- 布尔类型与数字、字符串之间禁止互相转换。
8、字符串与基础类型互转(strconv标准库)
(1)基础类型 转 string - 通用方式:fmt.Sprintf(格式化样式, 变量),支持所有数据类型;
- 高性能方式:使用 strconv 包 Format系列函数(FormatInt、FormatFloat),适合高频转换场景。
(2)string 转为数字类型 - 使用 strconv 包 Parse系列函数(ParseInt、ParseFloat、ParseBool);
- 转换存在失败风险,函数会返回error错误信息,业务代码必须接收并判断转换结果。
四、指针详解(新手核心重点)
1、两个核心符号 - &变量名:取变量内存地址,获取变量内存唯一编号;
- *指针变量:解引用,通过内存地址获取对应存储的实际数据。
2、指针使用特点 - 可通过指针变量,直接修改原始内存地址中存储的数据;
- 仅变量可获取地址,常量、表达式无法取地址;
- int、float、bool等基础类型为值传递,函数内仅修改副本,不影响原始变量;
- 若需在函数内修改外部原始变量,必须传递变量指针地址。
3、指针细节限制 - Go不支持指针偏移运算,无法像C语言对指针做加减操作;
- 不同类型指针禁止互相赋值,*int 和 *float32 属于完全不同类型;
- 指针变量本身也拥有独立的内存地址。
4、值传递 & 地址传递 - Go语言所有参数传递均为值拷贝,无引用传递;
- 普通变量传参:拷贝变量值,函数修改仅作用于副本,原始数据不变;
- 指针变量传参:拷贝内存地址,通过地址可直接修改原始变量数据。
五、运算符大全
1、算术运算符
±*/%(取余)、++(自增)、–(自减) - 整数相除仅保留整数部分,舍弃小数;如需小数结果,需先强制转为浮点类型;
- 自增、自减运算符仅支持后置写法,不能参与表达式运算。
2、赋值运算符
=+=-=*=/=%=
3、关系运算符
<>=<===!=
所有关系运算结果均为布尔值:true / false。
4、逻辑运算符
- && 逻辑与:全真才真,存在短路判断;
- || 逻辑或:一真即真,存在短路判断;
- ! 逻辑非:取反操作。
5、位运算符(二进制运算)
&按位与、|按位或、^异或、<<左移、>>右移
6、特殊运算符
&取地址、*解引用
7、运算符优先级
单目运算符 > 算术运算 > 位移运算 > 关系运算 > 逻辑运算 > 赋值运算
优先级不确定时,建议用 () 包裹表达式,避免运算逻辑出错。
8、控制台用户输入
通过 fmt.Scan(&变量) 实现终端输入,必须传入变量地址,才能将输入值存入变量。
六、流程控制语句(分支 + 循环)
1、if 条件分支 - 语法格式:if 条件表达式 {},条件无需小括号包裹;
- 支持 if / else if / else 多分支嵌套判断;
- 可在if表达式内定义临时变量,变量作用域仅当前分支有效。
2、switch 多分支语句 - case默认自带break,匹配成功后自动终止,不会穿透后续case;
- 单个case可写入多个匹配值,逗号分隔,满足其一即匹配成功;
- 支持 fallthrough 关键字,强制穿透执行下一个case;
- default 分支:所有case匹配失败时执行,位置不受限制。
3、for 循环(Go唯一循环语句)
Go无while循环,所有循环场景均使用for实现: - 标准循环:for 初始化; 条件; 自增 {};
- 无限循环:for {};
- for range 遍历:专属遍历字符串、数组、切片、map,自动返回下标与对应值。
4、四大跳转关键字 - break:终止当前循环,跳出循环体,可配合标签跳出多层循环;
- continue:终止本次循环,直接进入下一次循环判断;
- goto:无条件跳转至指定标签,可读性差,禁止业务开发使用;
- return:终止当前整个函数,直接退出函数执行。
七、函数基础知识点
1、函数定义格式
func 函数名(形参列表) (返回值列表) {
// 函数体逻辑
return 返回数据
} - func 为函数定义关键字;
- 支持单返回值、多返回值,适配复杂业务场景;
- 同类型形参可简写:func sum(a, b int) int。
2、函数调用特点 - 函数调用时,实参按顺序完成值拷贝传递;
- 函数名首字母大写:包外可调用;小写:仅当前包私有;
- Go不支持函数重载,同一个包内禁止定义同名函数;
- 函数必须先定义后调用,禁止前置调用。
3、return 使用细节 - 带返回值的函数,必须保证所有代码分支都有return语句,避免编译报错;
- 支持命名返回值,可提前定义返回变量,函数内直接赋值,最终可省略return参数。
八、学习总结与踩坑感悟
- Go语法规则严谨强制,未使用变量、冗余导包直接报错,能快速培养规范的编码习惯;
- 类型转换、指针传参是新手最大难点,仅看理论无法吃透,必须手写代码调试、观察内存变化;
- 字符串不可修改是Go核心特性,新手极易出现修改字符串字符的报错问题;
- Go所有传参均为值拷贝,修改外部变量必须熟练运用指针内存原理;
- 手写笔记+电子化整理的学习方式,能深度梳理模糊知识点,记忆效果远优于纯刷视频。
九、后续学习规划
后续将持续深耕Go进阶知识点,逐一学习:包管理、init函数、匿名函数、闭包、defer延迟函数、错误处理、数组、切片、map、结构体、面向对象等核心内容,后续会持续更新进阶版万字笔记,持续复盘迭代。