方式一
- 普通方式创建结构体变量
- 结构体对象空间都是独立的,互不干扰
package main
type Person struct {
Name string
Age int
}
func main() {
var p1 Person
p1.Name = "张三"
var p2 Person
p2 = p1
p2.Name = "李四"
fmt.Println(p1, p2)
}
方式二
- 推导方式创建结构体变量
- 结构体对象空间都是独立的,互不干扰
package main
type Person struct {
Name string
Age int
}
func main() {
p1 := Person{}
p1.Name = "张三"
p2 := Person{}
p2 = p1
p2.Name = "李四"
fmt.Println(p1, p2)
}
方式三
- 指针方式创建指针结构体变量
- 变量存储的是结构体存储的地址
package main
type Person struct {
Name string
Age int
}
func main() {
p1 := &Person{}
p1.Name = "张三"
p2 := &Person{}
p2 = p1
p2.Name = "李四"
fmt.Println(p1, p2)
}
方式四
package main
type Person struct {
Name string
Age int
}
func main() {
p1 := new(Person)
p1.Name = "张三"
p2 := &Person{}
p2 = p1
p2.Name = "李四"
fmt.Println(p1, p2)
}