本文介绍以下GO语言的用法: map range func point struct error string
1. map
map
是一种键值对的数据结构,类似于其他语言的哈希表或字典。
-
定义和初始化:
var m map[string]int // 声明一个 map m = make(map[string]int) // 使用 make 初始化
-
直接初始化:
m := map[string]int{"a": 1, "b": 2}
-
增删改查:
m["c"] = 3 // 添加或修改键值 delete(m, "b") // 删除键 value, exists := m["a"] // 检查键是否存在
2. range
range
用于遍历数组、切片、map 和字符串。
-
遍历切片:
s := []int{1, 2, 3} for i, v := range s { fmt.Println(i, v) // i 为索引,v 为值 }
-
遍历 map:
m := map[string]int{"a": 1, "b": 2} for k, v := range m { fmt.Println(k, v) // k 为键,v 为值 }
-
遍历字符串:
str := "hello" for i, c := range str { fmt.Printf("Index: %d, Char: %c\n", i, c) }
3. func
Go 语言中的函数使用关键字 func
定义。
-
基本定义:
func add(a int, b int) int { return a + b }
-
多返回值:
func swap(x, y string) (string, string) { return y, x }
-
匿名函数和闭包:
func main() { add := func(a, b int) int { return a + b } fmt.Println(add(2, 3)) }
4. 指针 pointer
Go 支持指针,但不支持指针运算。指针用于传递内存地址,从而避免传值。
-
定义指针:
var p *int i := 42 p = &i // `&` 获取变量地址 fmt.Println(*p) // `*` 获取指针指向的值
-
修改值:
func modify(p *int) { *p = 10 }
5. struct
struct
是自定义数据类型,用于组织不同类型的字段。
-
定义结构体:
type Person struct { Name string Age int }
-
创建和使用结构体:
p := Person{Name: "Alice", Age: 30} fmt.Println(p.Name)
-
匿名字段和嵌套结构体:
type Employee struct { Person ID int } e := Employee{Person: Person{Name: "Bob", Age: 25}, ID: 101} fmt.Println(e.Name)
6. error
Go 通过返回 error
值来进行错误处理,error
是一个接口。
-
定义错误:
import "errors" func divide(a, b int) (int, error) { if b == 0 { return 0, errors.New("division by zero") } return a / b, nil }
-
检查错误:
result, err := divide(4, 0) if err != nil { fmt.Println("Error:", err) }
7. string
Go 语言中的字符串是不可变的 Unicode 字符序列。
-
定义字符串:
var s1 string = "hello" s2 := "world"
-
字符串拼接:
s := s1 + " " + s2
-
获取字符串长度和字符:
len := len(s1) // 字节长度 char := s1[1] // 访问第 2 个字符的字节(字符以字节存储)
-
遍历字符串:
for i, c := range s1 { fmt.Printf("Index: %d, Char: %c\n", i, c) }