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 不能是接口或指针。
*、不支持重载方法,也就是说,不能定义名字相同但是不同参数的方法。