a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 編程 > Golang > 正文

深入理解GO語言的面向?qū)ο?/h1>
2020-04-01 19:08:16
字體:
供稿:網(wǎng)友

前言

有過C++語言學(xué)習(xí)經(jīng)歷的朋友都知道,面向?qū)ο笾饕巳齻€(gè)基本特征:封裝、繼承和多態(tài)。封裝,就是指運(yùn)行的數(shù)據(jù)和函數(shù)綁定在一起,C++中主要是通過this指針來完成的;繼承,就是指class之間可以相互繼承屬性和函數(shù);多態(tài),主要就是用統(tǒng)一的接口來處理通用的邏輯,每個(gè)class只需要按照接口實(shí)現(xiàn)自己的回調(diào)函數(shù)就可以了。

作為集大成者的Go語言,自然不會(huì)在面向?qū)ο笊厦鏌o所作為。相比較C++、Java、C#等面向?qū)ο笳Z言而言,它的面向?qū)ο蟾?jiǎn)單,也更容易理解。

go語言中并沒有像C++,Java語言中這類的Class,它只含有像C語言中的結(jié)構(gòu)體,用結(jié)構(gòu)體和指針等特性,完成一個(gè)類的作用,很巧妙的使用了指針和結(jié)構(gòu)體,不僅是go的面向?qū)ο螅╣o語言中的map等操作都是借助了結(jié)構(gòu)體。其實(shí),說白了,C++、Java等面向?qū)ο蟮恼Z言中,類的底層實(shí)現(xiàn)就是結(jié)構(gòu)體,對(duì)象的引用就是指針,只是語言把他們封裝起來了而已。然而這使得很多人剛接觸面向?qū)ο蟮臅r(shí)候很不理解這些東西。

下面,說所面向?qū)ο笤趃o中的寫法:

如果我們要再Java中定義一個(gè)Rect,可以求其面積,我們應(yīng)該這么寫

public class Rect { public int x; public int y; public int Area() { return x*y; }}

很簡(jiǎn)單,那么Go語言中怎么做呢?Go中并不存在所謂的類,所有的類都是用結(jié)構(gòu)體表示的,所以要寫一個(gè)類,我們先得定義一個(gè)結(jié)構(gòu)體:

type Rect struct { x, y int}

這是一個(gè)Rect的結(jié)構(gòu)體,那么一個(gè)類中,不僅要存在變量,還要有成員函數(shù),那么go的成員函數(shù)是這么寫的:

func (r *Rect) Area() int { return r.x*r.y}

這個(gè)成員函數(shù)的功能是求面積的,顯然,這個(gè)成員函數(shù)值對(duì)Rect的結(jié)構(gòu)體適用,這樣就實(shí)現(xiàn)了所謂的封裝,那么,我們?nèi)绾稳?chuàng)建并初始化類的實(shí)例呢

go語言提供了很多方式:

rect :=new(Rect)rect :=&Rect{}rect :=&Rect{1,2}rect :=&Rect{x:3,y:4}

那么,一遍情況下,如果沒有指定成員變量的大小,go語言會(huì)默認(rèn)初始化成員變量為0,bool類型的為false

那么,構(gòu)造函數(shù)呢?

我們可以這么來寫:

func NewRect(x,y int) *Rect { return &Rect{x,y}}

其實(shí),這也是我們平時(shí)new一個(gè)對(duì)象時(shí)候的真正操作,只是go把他真正展現(xiàn)給我們了。

看到這里,我們似乎還有一個(gè)疑問,那就是,像java、C++中對(duì)于可見性的描述呢,go語言中不存在public等關(guān)鍵字,go語言中直接選擇用字母大小寫控制。

一個(gè)變量以大寫字母開頭則表示對(duì)其他包可見,如果想要不可見,那么使用小寫字母即可,但是go語言中的可見性控制只是針對(duì)包的,并不針對(duì)類,也就是,同一個(gè)包下的類都是可見的。這個(gè)時(shí)候我們就可以知道了為什么輸出語句是這樣寫的了吧:

fmt.Println("hello world")

因?yàn)榇撕瘮?shù)對(duì)其他包是可見的。

總結(jié)

以上就是GO語言面向?qū)ο蟮娜績(jī)?nèi)容,希望這篇文章的內(nèi)容對(duì)大家學(xué)習(xí)或者使用GO語言能有所幫助,如果有疑問大家可以留言交流。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

主站蜘蛛池模板: 国产精品一区二区三区在线播放 | 亚洲一区二区日韩 | 久久一| 犬夜叉在线观看 | 国产亚洲精品久久 | 国产福利片在线 | а天堂中文最新一区二区三区 | 久久精品高清视频 | 国产噜噜噜噜久久久久久久久 | 五月婷婷色 | 日本不卡一二三 | 日韩视频中文字幕 | www.亚洲一区二区 | 欧美精品一区在线 | 亚洲精品一区中文字幕乱码 | 综合伊人 | 欧美一区二区三区电影 | 欧美a∨一区二区三区久久黄 | 福利午夜| 国产福利一区视频 | 日本妇人成熟免费视频 | 亚洲一区 中文字幕 | 青青久久久 | 品久久久久久久久久96高清 | www久久久久久久 | 精品国产一级毛片 | 狠狠操夜夜操天天操 | 免费看的av | 九热精品 | 视频一区 中文字幕 | 日本一区中文字幕 | 一区二区三区国产 | 一区二区三区视频免费在线观看 | 麻豆freexxxx性91精品 | 日日撸夜夜操 | 91伦理片| 欧美色综合一区二区三区 | 久草在线观看福利视频 | 久草福利在线视频 | gogo熟少妇大胆尺寸 | 国产专区在线播放 |