Go 语言中数组和 map 可以存储同一类型的数据,但在结构体中我们可以为不同项定义不同的数据类型。 结构体是由一系列具有相同类型或不同类型的数据构成的数据集合。
type 结构体名称 struct {
member definition
member definition
...
member definition
}
结构体名称首字母大写代表共有,内部属性大小写也是如此;
package main
import "fmt"
type Person struct {
Name string
Age int
}
func main() {
var p1 Person
// 也可以使用 new 关键字实例化结构体
// var p1 = new(Person)
p1.Name = "lesscode"
p1.Age = 10
fmt.Printf("%#v\n", p1)
}
使用 new 关键字实例化结构体后获取得到的是一个结构体指针,在 go 语言中可以通过结构体.属性的放获取或者设置指针 :
func main() {
var p1 = new(Person)
p1.Name = "lesscode"
// 指针方式设置
(*p1).Age = 100
fmt.Printf("%#v\n 类型%T", p1, p1)
}
func main() {
var p1 = Person{
Name: "John",
Age: 30,
}
fmt.Printf("%#v 类型 %T", p1, p1)
}
// 结构体指针
func main() {
var p1 = &Person{
Name: "John",
Age: 30,
}
fmt.Printf("%#v 类型 %T", p1, p1)
}
func main() {
var p1 = &Person{
"John",
30,
}
fmt.Printf("%#v 类型 %T", p1, p1)
}