标签:图片 loading 正文 main 不可 mamicode 自我 简单 表示
无论是定义的普通结构体变量变量,还是结构体指针都是通过点号(.
)访问成员变量.
比如
type Blogger struct {
Name string
Age int32
URL string
}
func main() {
b1 := Blogger{"zhangsan", 18, "zhangsan.com"}
b2 := *&Blogger{"lisi", 19, "lisi.org"}
fmt.Println(b2.Name, b1.Name)
}
b1
和b2
都通过点号访问到成员变量Name,而b2.Name
是等价于(*b2).Name
的.这是一种语法糖的结果,编译器对齐进行了优化.
在定义结构体的时候,相同类型的成员可以写在同一行,但是一般只在这两个成员紧密相关的时候这样做.
如上面的Blogger
可以写成下面的样子:
type Blogger struct {
Name, URL string
Age int32
}
两个在数据内容上是完全一样的,但是这两个结构体的意义却不同,因此定义成不同名的结构体.
结构体的成员在包外的可见性取决于其名字的第一个字母是大写还是小写,如果是大写表示在包外可见,也就是可导出的(类似于其他语言中的public
),如果成员名第一个字母小写则表示在包外不可见,即不可导出的(类似于其他语言的private
)
一个结构体s可以包含数据类型为*s的成员变量,但是不可以包含数据类型为s的成员变量,即便通过嵌套的方式也不可以.
结构体可以当作参数和返回值传递
如果需要修改一个结构体一般通过传入结构体的指针,而不是直接返回一个结构体,或者只返回其需要的值.
ambiguous selector
.同名有两种情况:
标签:图片 loading 正文 main 不可 mamicode 自我 简单 表示
原文地址:https://www.cnblogs.com/ltozvxe/p/14883721.html