人妖在线一区,国产日韩欧美一区二区综合在线,国产啪精品视频网站免费,欧美内射深插日本少妇

新聞動(dòng)態(tài)
go語(yǔ)言中的面向?qū)ο?/h1>
發(fā)布日期:2022-07-15 19:42 | 文章來源:源碼中國(guó)

Go語(yǔ)言沒有繼承、構(gòu)造函數(shù)和析構(gòu)函數(shù)等概念,但是它是面向?qū)ο蟮摹?/p>

.net中類型系統(tǒng)分為值類型和引用類型,兩種轉(zhuǎn)換需要進(jìn)行裝箱和拆箱,都是繼承自O(shè)bject類型

Go語(yǔ)言大多數(shù)類型都是值類型,需要的話可以給任何類型增加功能

1.為類型添加方法

C++等語(yǔ)言的面向?qū)ο蠖枷喈?dāng)于C語(yǔ)言的一個(gè)語(yǔ)法糖

下面看看Go語(yǔ)言如何實(shí)現(xiàn)面向?qū)ο蟮?/p>

可以看出,面向?qū)ο笾皇菗Q了一種語(yǔ)法形式來表達(dá)。C++語(yǔ)言的面向?qū)ο笾宰層行┤嗣曰蟮?/p>

一大原因就在于其隱藏的this指針。而Java和C#其實(shí)都是遵循著C++語(yǔ)言的慣例而設(shè)計(jì)的,它們的成員方法中都帶有一個(gè)隱藏的this指針。如果讀者了解Python語(yǔ)法,就會(huì)知道Python的成員方法中會(huì)有一個(gè)self參數(shù),它和this指針的作用是完全一樣的。

“在Go語(yǔ)言中沒有隱藏的this指針”這句話的含義是:

  • 方法施加的目標(biāo)(也就是“對(duì)象”)顯式傳遞,沒有被隱藏起來;
  • 方法施加的目標(biāo)(也就是“對(duì)象”)不需要非得是指針,也不用非得叫this。

我的理解:像C#這樣的語(yǔ)言,在使用面向?qū)ο蟮姆绞綍r(shí)候,其中this是隱藏起來的,所以在內(nèi)部使用this就代表了對(duì)象自己,但是Go語(yǔ)言中不去隱藏這個(gè)this,是顯示寫出來的,如下面的(a Integer),既然顯示表示了,那么叫什么也就無所謂了。

type Integer int
func (a Integer) Less(b Integer) bool {
  return a < b
}

不必傳指針的原因在于,不是所有的方法都是需要修改對(duì)象,對(duì)于很小的對(duì)象(比如4字節(jié)),如果傳指針會(huì)有額外的成本。

2.值語(yǔ)義和引用語(yǔ)義

b = a

b.Modify()

如果b的修改不會(huì)影響a的值,那么此類型屬于值類型。如果會(huì)影響a的值,那么此類型是引用類型。

Go語(yǔ)言中的大多數(shù)類型都基于值語(yǔ)義,包括:

  • 基本類型,如byte、int、bool、float32、float64和string等;
  • 復(fù)合類型,如數(shù)組(array)、結(jié)構(gòu)體(struct)和指針(pointer)等。

這里書上特意強(qiáng)調(diào)了數(shù)組(array),他是值類型的,對(duì)比了C語(yǔ)言的數(shù)組,C語(yǔ)言的數(shù)組可能會(huì)表現(xiàn)為多個(gè)形態(tài),當(dāng)作為函數(shù)的參數(shù)傳遞的時(shí)候是引用類型,當(dāng)作為結(jié)構(gòu)體的變量又是值類型(表現(xiàn)為賦值時(shí)候是復(fù)制了一份)

以下是引用語(yǔ)義

  • 數(shù)組切片:指向數(shù)組(array)的一個(gè)區(qū)間。
  • map:極其常見的數(shù)據(jù)結(jié)構(gòu),提供鍵值查詢能力。
  • channel:執(zhí)行體(goroutine)間的通信設(shè)施。
  • 接口(interface):對(duì)一組滿足某個(gè)契約的類型的抽象。

到此這篇關(guān)于Go語(yǔ)言面向?qū)ο蟮奈恼戮徒榻B到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持本站。

海外服務(wù)器租用

版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請(qǐng)保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場(chǎng),如有內(nèi)容涉嫌侵權(quán),請(qǐng)聯(lián)系alex-e#qq.com處理。

相關(guān)文章

實(shí)時(shí)開通

自選配置、實(shí)時(shí)開通

免備案

全球線路精選!

全天候客戶服務(wù)

7x24全年不間斷在線

專屬顧問服務(wù)

1對(duì)1客戶咨詢顧問

在線
客服

在線客服:7*24小時(shí)在線

客服
熱線

400-630-3752
7*24小時(shí)客服服務(wù)熱線

關(guān)注
微信

關(guān)注官方微信
頂部