结构体是值类型
package main
import "fmt"
// 定义Address结构体
type Address struct {
Region string
Street string
No string
}
// 定义User结构体
type User struct {
ID int
Name string
Addr Address //命名结构体嵌入
}
func main() {
//简短声明并使用零值初始化
u := User{}
//u1拷贝u并修改元素,结构体是值类型
u1 := u
u1.Name = "test"
u1.Addr.Street = "昌平"
fmt.Printf("%#v\n", u)
fmt.Printf("%#v\n", u1)
}
值更改
package main
import "fmt"
// 定义Address结构体
type Address struct {
Region string
Street string
No string
}
// 定义User结构体
type User struct {
ID int
Name string
Addr Address
}
// change函数更改user的Name元素
func change(u User) {
u.Name = "xxx"
}
// changePoint函数更改User指针类型的Name元素
func changePoint(u *User) {
u.Name = "xxxx"
}
func main() {
//简短声明结构体并使用零值初始化
u := User{}
//u1拷贝u
u1 := u
//更改u1的元素
u1.Name = "test"
u1.Addr.Street = "昌平"
fmt.Printf("%#v\n", u)
fmt.Printf("%#v\n", u1)
//调用change函数更改u1的元素
change(u1)
fmt.Printf("%#v\n", u1)
//调用changePoint函数更改u1的元素
changePoint(&u1)
fmt.Printf("%#v\n", u1)
}