c++

go 语言中的结构体

c++
type Body struct {
 name string
 age  int
}

像这样就可以使用

var body Body
body.name = "coding3min"
body.age = 12
fmt.Println(body)

输出

{coding3min 12}

go 中的类

go
go
go

一个成熟的类,具备成员变量和成员函数,结构体本身就有成员变量,再给他绑定上成员函数,是不是就可以了!

type people struct {
 name string
}

func (p people) toString() {
 fmt.Println(p.name)
 fmt.Printf("p的地址 %p \n", &p)
}
people
p1 := people{"coding3min"}
p1.toString()
toString()namep的地址
coding3min
p的地址 0xc0001021f0  #这里的地址一会有用
60%
func (p *people) sayHello() {
 fmt.Printf("Hello! %v \n", p.name)
 fmt.Printf("*p的地址 %p \n", p)
}
toString()sayHello()

输出,可以注意到这里的地址和上面的不同。

Hello! coding3min
*p的地址 0xc00008e1e0
*
p1 := people{"coding3min"}
p1.sayHello()
p2 := &people{"tom"}
p2.sayHello()

输出,可以看到地址一致。

*p的地址 0xc00008e220
p2的地址 0xc00008e220

一些拓展的结构体知识

声明时赋值

body2 := Body{
 "tom", 13,
}

结构体数组

bodys := []Body{
 Body{"jack", 12}, Body{"lynn", 18},
}

匿名结构体,一般用来存测试用例

class1 := struct {
 bodys []Body
}{
 []Body{Body{"jerry", 24}},
}

小结

go对象
*
javainterfacego