這篇文章主要介紹GO語(yǔ)言中面向?qū)ο蟮氖纠治觯闹薪榻B的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!
創(chuàng)新互聯(lián)建站長(zhǎng)期為1000+客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開(kāi)放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為嵐縣企業(yè)提供專業(yè)的成都做網(wǎng)站、成都網(wǎng)站制作,嵐縣網(wǎng)站改版等技術(shù)服務(wù)。擁有10年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開(kāi)發(fā)。
GO語(yǔ)言中的面向?qū)ο?/strong>
其實(shí)GO并不是一個(gè)純面向?qū)ο缶幊陶Z(yǔ)言。它沒(méi)有提供類(class)這個(gè)關(guān)鍵字,只提供了結(jié)構(gòu)體(struct)類型。
java或者C# 里面,結(jié)構(gòu)體(struct)是不能有成員函數(shù)的。然而,Go語(yǔ)言中的結(jié)構(gòu)體(struct)可以有"成員函數(shù)"。方法可以被添加到結(jié)構(gòu)體中,類似于一個(gè)類的實(shí)現(xiàn)。
我個(gè)人覺(jué)得Go 語(yǔ)言在的面向?qū)ο?,其?shí)更簡(jiǎn)單,也更容易理解。
學(xué)過(guò)java或C# 的人應(yīng)該都知道,面向?qū)ο蟮娜齻€(gè)基本特征:封裝、繼承和多態(tài)。他們的定義我這里就不細(xì)說(shuō)了。下面,就直接看看 go 語(yǔ)言下的面向?qū)ο笫窃鯓訉?shí)現(xiàn)的吧。
Golang區(qū)分公有屬性和私有屬性的機(jī)制就是方法或?qū)傩允欠袷鬃帜复髮?xiě),如果首字母大寫(xiě)的方法就是公有的,如果首字母小寫(xiě)的話就是私有的。
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語(yǔ)言的繼承方式采用的是匿名組合的方式:Woman 結(jié)構(gòu)體中包含匿名字段Person,那么Person中的屬性也就屬于Woman對(duì)象。
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ǔ)言中面向?qū)ο蟮氖纠治觥边@篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!