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