golang struct

/**
  golang struct 和  指針
*/
package main

import (
	"fmt"
	_ "strconv"
	_ "time"
)

var p = fmt.Println

//這兒就叫結構體了  呵呵注意首字母大寫的意思 和變量函數的意思一樣的!
type Test struct {
	//這裏面的首字母大小寫的意思也是一樣的
	A int
	b int
}

//結構體的方法
func (t Test) T1() {
	t.A = 12
	p("------Test1() T1()----")
}

//注意這裏面的這個  “*”
func (this *Test) T2() {
	this.A = 13
	p("------T2()----")
}

//Test2 嵌套了 Test 並不是所謂意思上的繼承
type Test2 struct {
	Test
}

func (t2 Test2) T1() {
	p("--------Test2  T1()----------")
}

func main() {
	p(Test{1, 2}) //
	p(Test{b: 12, A: 13})
	p(Test{b: 12})
	p(&Test{b: 12})
	p(new(Test)) //new 出來的是個指針
	p()
	t := Test{2, 3}
	t.T1()
	p(t) //{2 3}
	t.T2()
	p(t) //{13 3}
	//看結果大概懂啥意思了吧!
	//猜的 帶*號傳清楚的是個指針,修改會改變原來的值,不帶*號的,傳進去的就是個對象拷貝
	p(&t)
	p(t.A) //13
	pt1 := t
	pt1.A = 12
	p(t.A) //13
	pt2 := &t
	pt2.A = 23
	p(t.A) //23
	//上面這個大概明白golang指針怎麼回事了吧!

	t2 := Test2{}
	t2.T1()
	t2.T2()

	t3 := Test2{Test{A: 12}}
	p(t3.Test.A)
	p(t3.A)
	t3.A = 14
	p(t3.A)
	p(t3.A)

}



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