C#/JAVA 程序員轉GO/GOLANG程序員筆記大全(DAY 03)

go語言當中,沒有 class 的概念,那麼面向對象的編程思想如何展示呢,go語言中對結構體的使用 struct。編程

package main

import "fmt"

type Person struct {
    name string  
    sex byte
    age int 
}

// 帶有接收者的函數叫方法
func (tmp Person) PrintInfo() {
    fmt.Println("tmp = ", tmp)
}

// 經過一個函數,給成員賦值
func (p *Person) SetInfo(n string, s byte, a int) {
    p.name = n
    p.sex = s
    p.age = a
}

func main() {
    // 定義同時初始化
    p := Person {"loong", 'm', 18}
    p.PrintInfo()
    
    // 定義一個結構體變量
    var p2 Person
    (&p2).SetInfo("loong", 'm', 18)
    p2.PrintIn()    
    
    // 另外一種寫法
    p3 := &Person {"loong", 'm', 18}
    p3.PrintInfo()
}

 

方法老是綁定對象實例,並隱式將實例做爲第一參數(receiver),方法的語法以下:
func (receiver ReceiverType) funcName(parameters) (result) {
  // .....
}函數

*、參數 receiver 可任意命名。如方法中不曾使用,能夠忽略參數名。
*、參數 receiver 類型能夠是 T 或 *T。基類型 T 不能是接口或指針。
*、不支持重載方法,也就是說,不能定義名字相同可是不一樣參數的方法。spa

相關文章
相關標籤/搜索