golang裏面的類和繼承

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();

}

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章