好的,我来帮你整理一份 Golang(Go语言)基础知识全览,涵盖语法、数据类型、控制结构、函数、包等核心内容。


1. 基本概念

  • Go语言是 Google 开发的一种静态类型、编译型、并发友好的编程语言。
  • 特点:
    1. 简单高效,语法简洁。
    2. 内置并发(goroutine、channel)。
    3. 自动垃圾回收。
    4. 丰富的标准库。

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/httpHTTP请求http.Get("http://example.com")
os操作系统接口os.Exit(1)