《日子》golang-结构struct

结构struct

-Go中的struct与C中的struct非常相似,并且Go没有class
-使用type<Name> struct{}定义结构,名称遵循可见性规则 
-支持指向自身的指针类型成员
-支持匿名结构,可用作成员或定义成员变量
-匿名结构也可以用于map的值
-可以使用字面值对结构进行初始化
-允许直接通过指针来读写结构成员
-相同类型的成员可进行直接拷贝赋值
-支持 == 与 != 比较运算符,但不支持 > 或 <
-支持匿名字段,本质上是定义了以某个类型名为名称的字段
-嵌入结构作为匿名字段看起来像继承,但不是继承
-可以使用匿名字段指针

struct定义

<code>
package main
import (
"fmt"
)
type person struct {
Name string
Age int
}
func main() {
a := person{}
a.Name = "tom"
a.Age = 18
fmt.Println(a)
}
</code>

struct 字面赋值

<code>
a := person{
Name: "luo",
Age: 18,
}
</code>

struct指针

<code>
package main
import (
"fmt"
)
type person struct {
Name string
Age int
}
func main() {
a := &person{
Name: "luo",
Age: 18,
}
a.Name = "tom"
fmt.Println(a)
A(a)
fmt.Println(a)
}
func A(per *person) {
per.Age = 13
fmt.Println("A", per)
}
</code>

struct匿名

<code>
package main
import (
"fmt"
)
func main() {
a := &struct {
Name string
Age int
}{
Name: "tom",
Age: 19,
}
fmt.Println(a)
}
</code>

struct嵌套

<code>
package main
import (
"fmt"
)
type person struct {
Name string
Age int
Contact struct {
Phone, City string
}
}
func main() {
a := person{Name: "joe", Age: 19}
a.Contact.Phone = "13888888888"
a.Contact.City = "gz"
fmt.Println(a)
}
</code>

struct字段匿名

<code>
package main
import (
"fmt"
)
type person struct {
string
int
}
func main() {
a := person{"joe", 19}
fmt.Println(a)
}
</code>

struct 嵌入struct

<code>
package main
import (
"fmt"
)
type human struct {
Sex int
}
type person struct {
human
Name string
Age int
}
func main() {
a := person{Name: "tom", Age: 19, human: human{Sex: 1}}
a.Sex = 0
fmt.Println(a)
}
</code>

推荐阅读更多精彩内容

  • SwiftDay011.MySwiftimport UIKitprintln("Hello Swift!")var...
    smile丽语阅读 2,073评论 0 4
  • fmt格式化字符串 格式:%[旗标][宽度][.精度][arg索引]动词旗标有以下几种:+: 对于数值类型总是输出...
    皮皮v阅读 305评论 0 3
  • 2014年的苹果全球开发者大会(WWDC),当Craig Federighi向全世界宣布“We have new ...
    yeshenlong520阅读 732评论 0 7
  • Go 中的struct与C中的struct非常相似,并且Go没有class使用 type <Name> struc...
    haokeed阅读 17评论 0 0
  • 大学那会,学会了抽烟,曾今不断的告诫自己,要戒掉,女友以分手的方式威胁我,但是结果呢,大学毕业8年了,还在吞云吐...
    内心深处那一点点安静阅读 134评论 6 2