结构体
package main
import "fmt"
type Human struct {
name string
age int
nickname string
}
func main() {
var Tom Human
Tom.name = "Tom"
Tom.nickname = "Little Tom"
Tom.age = 18
fmt.Println(Tom)
}
结构体指针
package main
import "fmt"
type Human struct {
name string
}
func main() {
var tom = new(Human)
tom.name = "tom"
fmt.Println(tom)
}
// 输出结果:&{tom}
// &意味着这是个指针
匿名结构体
创建方式一
var tom = struct {
name string
}{}
tom.name = "tom"
fmt.Println(tom)
创建方式二
var tom = struct {
name string
}{
name: "tom", // 创建时直接赋值
}
fmt.Println(tom)
匿名字段
结构体的属性只写类型。由于只有类型,所以不能重复
type Human struct {
string
int
string // 这是错误的。已经有string
}
结构体文件
可以将结构体单独做成一个文件,方便复用。
注意!!只有首字母大写的结构体才是公有的,属性同理
这意味着小写的结构体无法被外部调用,小写的属性也无法被外部使用。
/* 这里在src目录下新建了structs作为包目录 */
// src/structs
package structs
type Human struct {
Name string
age int
}
/**
src下的文件里导入外部的结构体
*/
package main
import (
"02-learnGO/src/structs"
"fmt"
)
func main() {
var tom = structs.Human{}
tom.Name = "tom"
fmt.Println(tom)
}