golang语言是一门2012年才发布1.0版本的一门年轻的语言,但是年轻不并影响他的影响力,使用golang的公司越来越多。据说go语言的发明是为了解决21世纪多核和网络环境下越来越复杂的编程问题。go的创始人有:Robert Griesemer,Rob Pike,Ken Thompson,有没有看到那个很熟悉的名字,没错,就是大名鼎鼎的Ken Thompson,他是C语言和Unix的发明人,当时他和Dennis Ritchie一起设计了C语言,注定go语言里面会看到C和C++的影子。在使用的过程中,我们可以找其相似的地方。
C++里面有类的概念,每个类里面有其隐藏的this指针,那么在go里面怎么可以看到类似类功能的影子呢?
C++里面类包括成员变量和成员函数,是在类里面声明和初始化,还有构造函数,析构函数功能。
go里面的类:
go里面的结构体类似C++里面的类,看如下代码:
package main
import (
"fmt"
)
type Student struct {
Name string
Age int
Score int
}
func (this *Student) gouzao(name string, age int, score int) {
this.Name = name
this.Age = age
this.Score = score
}
func(this *Student) getName () string{
return this.Name
}
func(this *Student) print(){
fmt.Printf("Name:%s, Age:%d, Score:%d\n", this.Name, this.Age, this.Score)
}
func main() {
stu := Student{Name:"lsp", Age:12, Score:88}
stu.print();
fmt.Println("get:", stu.getName())
}
go里面的继承,继承的功能就是让子类可以使用父类的成员方法和成员变量,即子类可以将父类的功能继承过来。
看下面代码,Car类似父类,Bike和Train为子类,子类可以使用父类的函数Run
同理,多重继承,就多放几个需要继承的struct。
package main
import (
"fmt"
)
type Car struct {
wheel string
jiashiyuan string
}
func(this *Car) Run() {
fmt.Println("Running:", this.wheel)
}
type Bike struct {
c Car
handlebar string
}
type Train struct {
c Car
streewheel string
}
func main() {
c := Car{wheel:"yuande", jiashiyuan:"person"}
b := Bike{c:c, handlebar:"cheba"}
t := Train{c:c, streewheel:"fangxiangpan"}
b.c.Run();
t.c.Run();
}