查看上一篇指针类型请点我
golang的结构体其实就相当于自定义类,这个类只有属性,没有方法,但是类的属性在定义时就固定了,不能动态添加属性,废话少说,看例子。
package main
import "fmt"
type Info struct {
name string
age int
sex string
}
func main() {
var jack Info
jack.name = "Jack"
jack.age = 10
jack.sex = "man"
fmt.Println(jack)
fmt.Println(jack.age)
change_info(&jack)
fmt.Println(jack)
}
//如果需要在其他函数中修改属性值,需要传递指针参数
func change_info(info *Info) {
info.age = 20
}
输出结果:
{Jack 10 man}
10
{Jack 20 man}
匿名结构体(注:匿名结构体不能取地址操作)
package main
import "fmt"
//如果需要在其他函数中修改属性值,需要传递指参数
func change_info(info *Info) {
info.age = 20
}
func main() {
jack := struct {
name string
age int
sex string
}{"Jack", 10, "man"}
fmt.Println(jack)
fmt.Println(jack.age)
//change_info(&jack) /*错误*/
}
结构体的嵌套:
package main
import "fmt"
type Info struct {
name string
age int
sex string
}
type Like struct {
like string
Info
}
func main() {
var jack Info
jack.name = "Jack"
jack.age = 10
jack.sex = "man"
fmt.Println(jack)
tom_like := Like{Info:Info{"Tom", 20, "man"}}
tom_like.like = "basketball"
fmt.Println(tom_like)
}
输出结果:
{Jack 10 man}
{basketball {Tom 20 man}}
查看下一篇channel类型请点我