Go中的struct之方法method初體驗

來源:互聯網
上載者:User

標籤:receive   基類   體驗   pointer   byte   方法   person   結構   return   

// code_017_struct_method_usage project main.gopackage mainimport ( "fmt")type MyInt intfunc (a MyInt) Add(b MyInt) MyInt { return a + b}func Add(a, b MyInt) MyInt { return a + b}type Person struct { name string sex byte age int}func (p Person) PrintInfo() { fmt.Println(p.name, p.age)}func (p *Person) SetInfoPointer() { (*p).name = "god_girl" p.sex = 1 p.age = 22}func (p Person) SetInfoValue() { p.name = "god_like" p.sex = 1 p.age = 23}func main() { /* 帶有接收者的函數,我們稱之為方法(method).本質上,一個方法則是一個和特殊類型關聯的函數。 func (receiver ReceiverType) funcName(parameters){results} 1)參數 receiver 可任意命名。如方法中未曾使用,可省略參數名。 ?參數 receiver 類型可以是 T 或 *T。基底類型 T 不能是介面或指標。 ?不支援重載方法,也就是說,不能定義名字相同但是不同參數的方法。 2)在Go語言中,可以給任意自訂類型(包括內建類型,但不包括指標類型)添加相應的方法。 */ //1) 基本使用 var a MyInt = 1 var b MyInt = 1 fmt.Println("a.Add(b)=", a.Add(b)) fmt.Println("Add(a,b)=", Add(a, b)) //2)結構體作為接收者 p := Person{"ck_god", 0, 18} p.PrintInfo() //3)結構體的值語義和引用語義 p1 := Person{"wanglaoji", 0, 27} fmt.Println("函數調用前= ", p1) (&p1).SetInfoPointer() fmt.Println("函數調用後=", p1) fmt.Println("==========================") p2 := Person{"ck_god", 0, 18} fmt.Println("函數調用前 = ", p2) p2.SetInfoValue() fmt.Println("函數調用後 = ", p2) //函數調用後 = {mike 109 18}}

Go中的struct之方法method初體驗

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.