初識golang-數據類型_結構體

查看上一篇指針類型請點

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類型請點

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章