大家好我是小西,从今天开始,我将开始更新Go基础篇的笔记
预计有5篇,基础篇写完了,再写应用篇,大致是这个计划
老手可以回顾回顾 ,温故知新~ 新手可以收藏一下 做个参考
本文写作时,最新的Go 版本是 1.25.6
GO 版本号使用的是 semver ,语义化版本号
主版本号.次版本号.修订号 MAJOR.MINOR.PATCH
中间的 Minor 会在每年的 2月和8月发布
后面的 Patch 会在修复bug 后更新
本教程收集整理自 go 官方的 A tour of Go

Go的主要特点
- 自带runtime 和垃圾回收器
- 丰富的内置类型
- 更少的关键字 25个
- 显示的依赖显示的类型转换
- 函数多返回值
- Gofmt 统一代码格式
- 内置并发 goroutine + channel
- 编译快,交叉编译简单,轻松部署
- 强大的标准库 + 工具链
- 首字母决定可见性
package 用于定义一个包 package main
import 用于导入一个包 import "fmt"
首字母大写表示是公开的属性或方法
math.Pi 表示π的值
函数
使用 func 定义函数func add(x, y int) int { }
同类型可以只写一次 x int, y int-> x, y int
可以有多返回值,比如交换a,b 的值
具名返回值,用得少
变量
var 声明,类型在后面var a, b, c bool
声明并初始化 var i, j int = 1, 2
c := 4 短声明函数内使用,有类型推导
函数外的语句要以关键词开始
var,func,import 等
基本类型
bool
string
intint8int16int32int64uint uint8 uint16 uint32 uint64 uintptr
byte // alias for uint8
rune // alias for int32// represents a Unicode code point
float32 float64
complex64 complex128
每个类型都有零值,初始化时的值
0 是全部数值类型的零值
false 是布尔类型的零值
"" 空字符串是string 类型的零值
类型转换 T(v)var i float64 = float64(i)
没有隐式转换
常量
Const Pi = 3.141592653589793
常量只能是字符,字符串,bool, 数值
for 循环,if 判断与switch
for 循环小括号不必需大括号必需for i:=0;i < 100; i++ {}
for 等同于 C 中 while for i < 100 {}
for直接加 {}, 无限循环 for { }
if 不要小括号,大括号必需有 if x <0 { }
If + 短声明if v: = math.Pow(x, n); v < lim {}
switch 不需要 break 语句了,匹配到 case 就停止执行
Switch 后可以不加语句,表示匹配 true
defer 延迟执行
Defer 的函数会形成一个栈,后 defer 的函数先执行