Go 零基础入门万字笔记整理|语法规范、数据类型、指针、运算符、流程控制、函数全梳理

📅 2026/7/21 22:19:55 👁️ 阅读次数 📝 编程学习
Go 零基础入门万字笔记整理|语法规范、数据类型、指针、运算符、流程控制、函数全梳理

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参数。
    八、学习总结与踩坑感悟
  1. Go语法规则严谨强制,未使用变量、冗余导包直接报错,能快速培养规范的编码习惯;
  2. 类型转换、指针传参是新手最大难点,仅看理论无法吃透,必须手写代码调试、观察内存变化;
  3. 字符串不可修改是Go核心特性,新手极易出现修改字符串字符的报错问题;
  4. Go所有传参均为值拷贝,修改外部变量必须熟练运用指针内存原理;
  5. 手写笔记+电子化整理的学习方式,能深度梳理模糊知识点,记忆效果远优于纯刷视频。
    九、后续学习规划
    后续将持续深耕Go进阶知识点,逐一学习:包管理、init函数、匿名函数、闭包、defer延迟函数、错误处理、数组、切片、map、结构体、面向对象等核心内容,后续会持续更新进阶版万字笔记,持续复盘迭代。