go-struct、方法

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

package mainimport "fmt"func main() {    //建立對象,通過.方式進行初始化    a := person{}    a.name = "wyf"    a.age = 30    fmt.Println(a)    //建立對象,通過類似構造的方式進行初始化    b := person{        name: "wyff",        age:  300,    }    fmt.Println(b)    //值傳遞    A(b)    fmt.Println(b)    //person引用傳遞    fmt.Println("-------引用地址傳遞--------")    B(&b)    fmt.Println(b)    fmt.Println("-------初始化一個引用地址類型--------")    r := &person{        name: "xxx",        age:  100,    }    fmt.Println(r)    B(r)    fmt.Println(r)    fmt.Println("-------匿名結構--------")    ll := struct {        name string        age  int    }{        name: "yyy",        age:  19,    }    fmt.Println(ll)    fmt.Println("-------嵌套匿名--------")    oo := stu{name: "bbbb", age: 300}    oo.stu1.city = "bj"    oo.stu1.phone = "1356"    fmt.Println(oo)    fmt.Println("-------匿名欄位--------")    mm := gra{"hhh", 90}    fmt.Println(mm)    fmt.Println("-------相互賦值--------")    pp1 := person{name: "bbbb", age: 300}    pp2 := person{name: "bbbb", age: 300}    fmt.Println(pp1 == pp2)    pp3 := pp2    fmt.Println(pp3)}type person struct {    name string    age  int}type gra struct {    string    int}type stu struct {    name string    age  int    stu1 struct {        phone, city string    }}func B(per *person) {    per.age = 13    fmt.Println("per", per)}func A(per person) {    per.age = 13    fmt.Println("per", per)}
{wyf 30}{wyff 300}per {wyff 13}{wyff 300}-------引用地址傳遞--------per &{wyff 13}{wyff 13}-------初始化一個引用地址類型--------&{xxx 100}per &{xxx 13}&{xxx 13}-------匿名結構--------{yyy 19}-------嵌套匿名--------{bbbb 300 {1356 bj}}-------匿名欄位--------{hhh 90}-------相互賦值--------true{bbbb 300}


組合類別型

package mainimport "fmt"func main() {    a := teacher{name: "teacher"}    a.human.sex = 1    b := student{name: "student"}    b.human.sex = 2    fmt.Println(a, b)    //將human當做一個普通的欄位    c := teacher{name: "teacher", human: human{sex: 1}}    d := student{name: "student", human: human{sex: 2}}    fmt.Println(c, d)    c.name = "tea"    d.name = "stu"    fmt.Println(c, d)}type teacher struct {    human    name string}type student struct {    human    name string}//組合類別型,類似於java裡面的繼承type human struct {    sex int}
{{1} teacher} {{2} student}{{1} teacher} {{2} student}{{1} tea} {{2} stu}


對象的方法

package mainimport "fmt"func main() {    a := teacher{}    a.Print()    b := stu{}    b.Print()}//對象的方法定義一個接收者func (a teacher) Print() {    fmt.Println("teacher的方法")}func (b stu) Print() {    fmt.Println("student的方法")}type teacher struct {    name string}type stu struct {    name string}
teacher的方法student的方法


對象的方法的地址值傳遞

package mainimport "fmt"func main() {    a := teacher{}    a.Print()    fmt.Println(a.name)    b := stu{}    b.Print()    fmt.Println(b.name)}//對象的方法引用傳遞func (a *teacher) Print() {    a.name = "aaa"    fmt.Println("teacher的方法")}func (b stu) Print() {    b.name = "bbb"    fmt.Println("student的方法")    fmt.Println(b.name)}type teacher struct {    name string}type stu struct {    name string}


小例子

teacher的方法aaastudent的方法bbb這裡輸出Null 字元串
package mainimport "fmt"func main() {    var a TZ    a.print()    (*TZ).print(&a)}//int類型的TZtype TZ intfunc (tz *TZ) print() {    fmt.Println("TZ")}
TZTZ
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.