溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

GO語言中面向對象的示例分析

發(fā)布時間:2021-12-15 09:29:38 來源:億速云 閱讀:151 作者:小新 欄目:大數據

這篇文章主要介紹GO語言中面向對象的示例分析,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

GO語言中的面向對象

其實GO并不是一個純面向對象編程語言。它沒有提供類(class)這個關鍵字,只提供了結構體(struct)類型。

java或者C# 里面,結構體(struct)是不能有成員函數的。然而,Go語言中的結構體(struct)可以有"成員函數"。方法可以被添加到結構體中,類似于一個類的實現。

我個人覺得Go 語言在的面向對象,其實更簡單,也更容易理解。

學過java或C# 的人應該都知道,面向對象的三個基本特征:封裝、繼承和多態(tài)。他們的定義我這里就不細說了。下面,就直接看看 go 語言下的面向對象是怎樣實現的吧。

1. 封裝特性

  Golang區(qū)分公有屬性和私有屬性的機制就是方法或屬性是否首字母大寫,如果首字母大寫的方法就是公有的,如果首字母小寫的話就是私有的。

package main
import "fmt"
type Person struct {    name string}
func (person *Person) setName(name string) {    person.name = name}
func (person *Person) GetInfo() {    fmt.Println(person.name)}
func main() {    p := Person{"zhangsan"}    p.setName("lisi")    p.GetInfo()}

2. 繼承特性

  GO語言的繼承方式采用的是匿名組合的方式:Woman 結構體中包含匿名字段Person,那么Person中的屬性也就屬于Woman對象。

package main
import "fmt"
type Person struct {    name string}
type Woman struct {    Person    sex string}
func main() {    woman := Woman{Person{"wangwu"}, "女"}    fmt.Println(woman.name)    fmt.Println(woman.sex)}

3. 多態(tài)特性

package main
import "fmt"
type Eater interface {    Eat()}
type Man struct {}
type Woman struct {}
func (man *Man) Eat() {    fmt.Println("Man Eat")}
func (woman *Woman) Eat() {    fmt.Println("Woman Eat")}
func main() {    var e Eater    woman := Woman{}    man := Man{}
   e = &woman    e.Eat()
   e = &man    e.Eat()}

以上是“GO語言中面向對象的示例分析”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業(yè)資訊頻道!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI