切片是对数组的一种抽象,它提供了一种更方便的方式来操作序列数据。
代码语言:javascript复制goCopy code// 创建切片
numbers := []int{1, 2, 3, 4, 5}
// 切片的基本操作
numbers = append(numbers, 6) // 添加元素
fmt.Println(numbers[1:3]) // 输出: [2 3],切片操作
15. 映射(Maps)
映射是一种用于存储键值对的数据结构,类似于字典或哈希表。
代码语言:javascript复制goCopy code// 创建映射
ages := map[string]int{
"Alice": 25,
"Bob": 30,
"Charlie": 35,
}
// 操作映射
ages["David"] = 40 // 添加新元素
delete(ages, "Bob") // 删除元素
fmt.Println(ages["Alice"]) // 输出: 25
16. 结构体标签(Struct Tags)
结构体字段可以附带标签,这些标签在运行时可以被反射读取。
代码语言:javascript复制goCopy codetype Person struct {
FirstName string `json:"first_name"`
LastName string `json:"last_name"`
Age int `json:"age"`
}
17. 并发控制(Mutex)
Golang通过sync
包提供了互斥锁(Mutex)来控制并发访问共享资源。
goCopy codevar mu sync.Mutex
var balance = 0
func deposit(amount int) {
mu.Lock()
defer mu.Unlock()
balance = amount
}
18. 排序(Sorting)
Golang的sort
包提供了对切片的排序功能。
goCopy codefruits := []string{"apple", "orange", "banana", "grape"}
sort.Strings(fruits)
fmt.Println(fruits) // 输出: [apple banana grape orange]
19. JSON编解码
Golang内置了对JSON的编解码支持,方便地将结构体与JSON数据相互转换。
代码语言:javascript复制goCopy code// 结构体到JSON
person := Person{"John", "Doe", 30}
jsonData, _ := json.Marshal(person)
fmt.Println(string(jsonData))
// JSON到结构体
var newPerson Person
json.Unmarshal(jsonData, &newPerson)
20. 文件操作
Golang的os
和io/ioutil
包提供了文件操作的功能。
goCopy code// 写文件
data := []byte("Hello, Golang!")
err := ioutil.WriteFile("example.txt", data, 0644)
// 读文件
content, err := ioutil.ReadFile("example.txt")
fmt.Println(string(content))
这些基础知识概念使得Golang在实际应用中更加强大和灵活。通过掌握这些知识点,你可以更好地构建高效、可维护的Golang应用程序。