好的,我来帮你整理一份 Golang(Go语言)基础知识全览,涵盖语法、数据类型、控制结构、函数、包等核心内容。
1. 基本概念
- Go语言是 Google 开发的一种静态类型、编译型、并发友好的编程语言。
- 特点:
- 简单高效,语法简洁。
- 内置并发(goroutine、channel)。
- 自动垃圾回收。
- 丰富的标准库。
2. 基本语法
2.1 Hello World
package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}
package main
:表示可执行程序的入口包import "fmt"
:引入标准库fmt
func main()
:程序入口函数
3. 变量与常量
3.1 变量
var a int = 10
var b = 20 // 类型自动推导
c := 30 // 简短声明,仅在函数内部使用
3.2 常量
const Pi = 3.14159
const (
StatusOK = 200
StatusNotFound = 404
)
4. 数据类型
类型 | 描述 | 示例 |
---|---|---|
int/uint | 整数 | var a int = 10 |
float32/64 | 浮点数 | var b float64 = 3.14 |
string | 字符串 | s := "Hello" |
bool | 布尔 | flag := true |
array | 固定长度数组 | [3]int{1,2,3} |
slice | 可变长度数组 | []int{1,2,3} |
map | 键值对 | map[string]int{"a":1} |
struct | 结构体 | type Person struct { Name string; Age int } |
5. 控制结构
5.1 条件语句
if a > b {
fmt.Println("a > b")
} else if a == b {
fmt.Println("a == b")
} else {
fmt.Println("a < b")
}
5.2 switch
switch day := 2; day {
case 1:
fmt.Println("Monday")
case 2:
fmt.Println("Tuesday")
default:
fmt.Println("Other day")
}
5.3 循环
Go 只有 for
循环:
for i := 0; i < 5; i++ {
fmt.Println(i)
}
// 类似 while
j := 0
for j < 5 {
fmt.Println(j)
j++
}
// 无限循环
for {
fmt.Println("loop")
}
6. 函数
func add(a int, b int) int {
return a + b
}
// 多返回值
func swap(x, y string) (string, string) {
return y, x
}
7. 指针
var a int = 10
var p *int = &a // p 存储 a 的地址
fmt.Println(*p) // 通过 *p 访问 a 的值
8. 结构体与方法
type Person struct {
Name string
Age int
}
func (p Person) Greet() {
fmt.Println("Hello,", p.Name)
}
p := Person{"Alice", 30}
p.Greet()
9. 切片(Slice)与 Map
9.1 Slice
s := []int{1,2,3}
s = append(s, 4) // 添加元素
fmt.Println(len(s)) // 长度
fmt.Println(cap(s)) // 容量
9.2 Map
m := make(map[string]int)
m["a"] = 1
fmt.Println(m["a"])
delete(m, "a")
10. 并发
10.1 Goroutine
go func() {
fmt.Println("Hello from goroutine")
}()
10.2 Channel
ch := make(chan int)
go func() { ch <- 42 }()
val := <-ch
fmt.Println(val)
11. 包与导入
import "包名"
导入标准库或自定义包go mod init 项目名
初始化模块- 常用标准库:
fmt
打印输出math
数学函数strings
字符串处理time
时间操作net/http
网络请求
明白了,我帮你整理一份 Golang 快速入门速查表,以 Markdown 格式展示,内容覆盖基础语法、数据类型、控制结构、函数、并发及常用标准库,方便复习和查阅。
Golang 快速入门速查表
1. 基本语法
package main // 包
import "fmt" // 导入标准库
func main() {
fmt.Println("Hello, Go!")
}
2. 变量与常量
// 变量声明
var a int = 10
var b = 20 // 类型推导
c := 30 // 简短声明(函数内)
// 常量
const Pi = 3.14159
const (
StatusOK = 200
StatusNotFound = 404
)
3. 数据类型
类型 | 描述 | 示例 |
---|---|---|
int/uint | 整数 | var a int = 10 |
float32/64 | 浮点数 | var b float64 = 3.14 |
string | 字符串 | s := "Hello" |
bool | 布尔 | flag := true |
array | 固定长度数组 | [3]int{1,2,3} |
slice | 可变长度数组 | []int{1,2,3} |
map | 键值对 | map[string]int{"a":1} |
struct | 结构体 | type Person struct { Name string; Age int } |
nil/null | 空值 | var p *int = nil |
4. 控制结构
4.1 条件语句
if a > b {
fmt.Println("a > b")
} else if a == b {
fmt.Println("a == b")
} else {
fmt.Println("a < b")
}
4.2 switch
switch day := 2; day {
case 1:
fmt.Println("Monday")
case 2:
fmt.Println("Tuesday")
default:
fmt.Println("Other day")
}
4.3 循环
// for循环
for i := 0; i < 5; i++ {
fmt.Println(i)
}
// 类似 while
j := 0
for j < 5 {
fmt.Println(j)
j++
}
// 无限循环
for {
fmt.Println("loop")
}
5. 函数
func add(a int, b int) int {
return a + b
}
// 多返回值
func swap(x, y string) (string, string) {
return y, x
}
6. 指针
var a int = 10
var p *int = &a // p 存储 a 地址
fmt.Println(*p) // 输出 a 的值
7. 结构体与方法
type Person struct {
Name string
Age int
}
func (p Person) Greet() {
fmt.Println("Hello,", p.Name)
}
p := Person{"Alice", 30}
p.Greet()
8. Slice 与 Map
Slice
s := []int{1,2,3}
s = append(s, 4) // 添加元素
fmt.Println(len(s)) // 长度
fmt.Println(cap(s)) // 容量
Map
m := make(map[string]int)
m["a"] = 1
fmt.Println(m["a"])
delete(m, "a")
9. 并发
Goroutine
go func() {
fmt.Println("Hello from goroutine")
}()
Channel
ch := make(chan int)
go func() { ch <- 42 }()
val := <-ch
fmt.Println(val)
10. 常用标准库
包名 | 功能 | 示例 |
---|---|---|
fmt | 打印输出 | fmt.Println("Hi") |
math | 数学函数 | math.Sqrt(16) |
strings | 字符串处理 | strings.Contains("abc","a") |
strconv | 字符串与数值转换 | strconv.Atoi("123") |
time | 时间操作 | time.Now() |
net/http | HTTP请求 | http.Get("http://example.com") |
os | 操作系统接口 | os.Exit(1) |
发表回复