首次提交:初始化项目代码

This commit is contained in:
sunct
2026-07-31 15:18:32 +08:00
commit d6393266b0
193 changed files with 14287 additions and 0 deletions
+78
View File
@@ -0,0 +1,78 @@
package main
import (
"fmt"
"math"
"sync"
)
func main() {
// 映射创建
m1 := make(map[string]int) // make创建
m2 := map[string]int{ // 字面量初始化
"apple": 5,
"banana": 3,
}
// 添加和修改元素
m1["orange"] = 2
m2["apple"] = 6 // 修改已有键的值
// 访问元素
fmt.Println("m1[orange]:", m1["orange"]) // 2
fmt.Println("m2[banana]:", m2["banana"]) // 3
// 判断键是否存在
v, ok := m2["orange"]
if ok {
fmt.Printf("orange count: %d\n", v)
} else {
fmt.Println("orange not found") // 输出该结果
}
// 删除元素
delete(m2, "banana")
fmt.Println("删除后m2[banana]:", m2["banana"]) // 0(零值)
// 映射长度
fmt.Println("m2长度:", len(m2)) // 1
// 映射遍历(无序)
fmt.Println("map遍历:")
for fruit, count := range m2 {
fmt.Printf("%s: %d\n", fruit, count) // 顺序不固定
}
// 映射的键类型限制
var m3 map[int]string // 整数
var m4 map[string]bool // 字符串
var m5 map[bool]int // 布尔值
var m6 map[[3]int]string // 数组(元素类型也必须可比较)
// 结构体作为键(所有字段都必须可比较)
type Point struct {
X, Y int
}
var m7 map[Point]string
fmt.Printf("m3:%T, m4:%T, m5:%T\n", m3, m4, m5)
fmt.Printf("m6:%T, m7:%T\n", m6, m7)
// 特殊情况:NaN作为键(每个NaN都是唯一的)
m := map[float64]string{}
nan1 := math.NaN()
nan2 := math.NaN()
m[nan1] = "first"
m[nan2] = "second"
fmt.Println("NaN映射长度:", len(m)) // 2
// 并发安全映射(sync.Map
var m8 sync.Map
m8.Store("cat", 2) // 存储键值对
m8.Store("dog", 1)
// 读取与删除
if v, ok := m8.Load("cat"); ok {
fmt.Printf("cat count: %d\n", v) // 输出2
}
m8.Delete("dog")
}