您好,登錄后才能下訂單哦!
這篇文章主要介紹GO語言中面向對象的示例分析,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
GO語言中的面向對象
其實GO并不是一個純面向對象編程語言。它沒有提供類(class)這個關鍵字,只提供了結構體(struct)類型。
java或者C# 里面,結構體(struct)是不能有成員函數的。然而,Go語言中的結構體(struct)可以有"成員函數"。方法可以被添加到結構體中,類似于一個類的實現。
我個人覺得Go 語言在的面向對象,其實更簡單,也更容易理解。
學過java或C# 的人應該都知道,面向對象的三個基本特征:封裝、繼承和多態(tài)。他們的定義我這里就不細說了。下面,就直接看看 go 語言下的面向對象是怎樣實現的吧。
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()
}
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)
}
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è)資訊頻道!
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。