一、结构体
实例化结构体
第一种实例化结构体:var 变量 结构体
package main
import (
"fmt"
)
type Person struct {
name string
age int
sex string
}
func main() {
var p1 Person // 实例化 Person 结构体
p1.name = "张三"
p1.sex = "男"
p1.age = 20
fmt.Printf("值:%v 类型:%T\n", p1, p1)
fmt.Printf("值:%#v 类型:%T", p1, p1)
}
输出:
值:{张三 20 男} 类型:main.Person
值:main.Person{name:"张三", age:20, sex:"男"} 类型:main.Person
结构体首字母可以大写也可以小写,大写表示这个结构体是公有的,在其他包里面可以使用,小写表示这个结构体是私有的,只有在这个包里面才能使用。
第二种实例化结构体:new 关键词
在 Golang 中支持对结构体指针直接使用.
来访问结构体的成员。p2.name = "张三"
其实在底层是 (*p2).name = "张三"
。
package main
import (
"fmt"
)
type Person struct {
name string
age int
sex string
}
func main() {
var p2 = new(Person)
p2.name = "李四"
p2.sex = "男"
p2.age = 20
fmt.Printf("值:%v 类型:%T\n", p2, p2)
(*p2).name = "王五"
fmt.Printf("值:%v 类型:%T\n", p2, p2)
}
输出:
值:&{李四 20 男} 类型:*main.Person
值:&{王五 20 男} 类型:*main.Person
第三种实例化结构体:取结构体地址
package main
import (
"fmt"
)
type Person struct {
name string
age int
sex string
}
func main() {
var p3 = &Person{
}
p3.name = "赵四"
p3.sex = "男"
p3.age = 20
fmt.Printf("值:%v 类型:%T\n", p3, p3)
}
输出:
值:&{赵四 20 男} 类型:*main.Person
第四种实例化结构体:键值对
package main
import (
"fmt"
)
type Person struct {
name