/**
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)
}
golang struct
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.