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)

}


 
 

你可能感兴趣的:(golang)