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

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
+71
View File
@@ -0,0 +1,71 @@
package main
import (
"encoding/json"
"fmt"
)
// 嵌套结构体(地址信息)
type Address struct {
City string
Street string
}
// 主结构体(用户信息)
type User struct {
ID int
Name string
Age int
Address // 嵌套结构体(匿名字段,可直接访问其字段)
}
// 带标签的结构体
type Person struct {
Name string `json:"name"`
Age int `json:"age,omitempty"`
}
// 结构体方法
func (u *User) GetInfo() string {
return fmt.Sprintf("User: %s, Age: %d, City: %s", u.Name, u.Age, u.City)
}
func main() {
// 初始化带嵌套的结构体
u := User{
ID: 1,
Name: "Alice",
Age: 20,
Address: Address{
City: "Beijing",
Street: "Main St",
},
}
// 访问字段(嵌套字段可直接访问)
fmt.Printf("用户:%+v\n", u)
fmt.Println("城市:", u.City) // 等价于u.Address.City
fmt.Println("用户信息:", u.GetInfo())
// 结构体是值类型:赋值时复制所有字段(包括嵌套字段)
u2 := u
u2.Age = 21
u2.Street = "New St"
fmt.Println("u年龄:", u.Age, "u2年龄:", u2.Age) // 20 21
fmt.Println("u街道:", u.Street, "u2街道:", u2.Street) // Main St New St
// 结构体比较
p1 := Person{Name: "Alice", Age: 25}
p2 := Person{Name: "Alice", Age: 25}
if p1 == p2 {
fmt.Println("p1与p2相等")
}
// 结构体标签:JSON序列化
jsonP, _ := json.Marshal(p1)
fmt.Printf("Person JSON: %s\n", jsonP) // 输出{"name":"Alice","age":25}
p3 := Person{Name: "Bob"} // Age为零值0
jsonP3, _ := json.Marshal(p3)
fmt.Printf("p3 JSON: %s\n", jsonP3) // 输出{"name":"Bob"}Age为0被omitempty忽略)
}