查看上一篇指針類型請點我
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類型請點我