go語(yǔ)言名字由來(lái) go語(yǔ)言是什么語(yǔ)言開(kāi)發(fā)的

講講go語(yǔ)言的結(jié)構(gòu)體

作為C語(yǔ)言家族的一員,go和c一樣也支持結(jié)構(gòu)體??梢灶?lèi)比于java的一個(gè)POJO。

我們提供的服務(wù)有:做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)、微信公眾號(hào)開(kāi)發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、通遼ssl等。為近千家企事業(yè)單位解決了網(wǎng)站和推廣的問(wèn)題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的通遼網(wǎng)站制作公司

在學(xué)習(xí)定義結(jié)構(gòu)體之前,先學(xué)習(xí)下定義一個(gè)新類(lèi)型。

新類(lèi)型 T1 是基于 Go 原生類(lèi)型 int 定義的新自定義類(lèi)型,而新類(lèi)型 T2 則是 基于剛剛定義的類(lèi)型 T1,定義的新類(lèi)型。

這里要引入一個(gè)底層類(lèi)型的概念。

如果一個(gè)新類(lèi)型是基于某個(gè) Go 原生類(lèi)型定義的, 那么我們就叫 Go 原生類(lèi)型為新類(lèi)型的底層類(lèi)型

在上面的例子中,int就是T1的底層類(lèi)型。

但是T1不是T2的底層類(lèi)型,只有原生類(lèi)型才可以作為底層類(lèi)型,所以T2的底層類(lèi)型還是int

底層類(lèi)型是很重要的,因?yàn)閷?duì)兩個(gè)變量進(jìn)行顯式的類(lèi)型轉(zhuǎn)換,只有底層類(lèi)型相同的變量間才能相互轉(zhuǎn)換。底層類(lèi)型是判斷兩個(gè)類(lèi)型本質(zhì)上是否相同的根本。

這種類(lèi)型定義方式通常用在 項(xiàng)目的漸進(jìn)式重構(gòu),還有對(duì)已有包的二次封裝方面

類(lèi)型別名表示新類(lèi)型和原類(lèi)型完全等價(jià),實(shí)際上就是同一種類(lèi)型。只不過(guò)名字不同而已。

一般我們都是定義一個(gè)有名的結(jié)構(gòu)體。

字段名的大小寫(xiě)決定了字段是否包外可用。只有大寫(xiě)的字段可以被包外引用。

還有一個(gè)點(diǎn)提一下

如果換行來(lái)寫(xiě)

Age: 66,后面這個(gè)都好不能省略

還有一個(gè)點(diǎn),觀察e3的賦值

new返回的是一個(gè)指針。然后指針可以直接點(diǎn)號(hào)賦值。這說(shuō)明go默認(rèn)進(jìn)行了取值操作

e3.Age 等價(jià)于 (*e3).Age

如上定義了一個(gè)空的結(jié)構(gòu)體Empty。打印了元素e的內(nèi)存大小是0。

有什么用呢?

基于空結(jié)構(gòu)體類(lèi)型內(nèi)存零開(kāi)銷(xiāo)這樣的特性,我們?cè)谌粘?Go 開(kāi)發(fā)中會(huì)經(jīng)常使用空 結(jié)構(gòu)體類(lèi)型元素,作為一種“事件”信息進(jìn)行 Goroutine 之間的通信

這種以空結(jié)構(gòu)體為元素類(lèi)建立的 channel,是目前能實(shí)現(xiàn)的、內(nèi)存占用最小的 Goroutine 間通信方式。

這種形式需要說(shuō)的是幾個(gè)語(yǔ)法糖。

語(yǔ)法糖1:

對(duì)于結(jié)構(gòu)體字段,可以省略字段名,只寫(xiě)結(jié)構(gòu)體名。默認(rèn)字段名就是結(jié)構(gòu)體名

這種方式稱(chēng)為 嵌入字段

語(yǔ)法糖2:

如果是以嵌入字段形式寫(xiě)的結(jié)構(gòu)體

可以省略嵌入的Reader字段,而直接訪問(wèn)ReaderName

此時(shí)book是一個(gè)各個(gè)屬性全是對(duì)應(yīng)類(lèi)型零值的一個(gè)實(shí)例。不是nil。這種情況在Go中稱(chēng)為零值可用。不像java會(huì)導(dǎo)致npe

結(jié)構(gòu)體定義時(shí)可以在字段后面追加標(biāo)簽說(shuō)明。

tag的格式為反單引號(hào)

tag的作用是可以使用[反射]來(lái)檢視字段的標(biāo)簽信息。

具體的作用還要看使用的場(chǎng)景。

比如這里的tag是為了幫助 encoding/json 標(biāo)準(zhǔn)包在解析對(duì)象時(shí)可以利用的規(guī)則。比如omitempty表示該字段沒(méi)有值就不打印出來(lái)。

圍棋的英語(yǔ)go到底來(lái)源于漢語(yǔ)的哪個(gè)字的發(fā)音?

go是日語(yǔ)中“碁”字的吳音,吳音一般來(lái)自南北朝時(shí)期的漢語(yǔ)。

補(bǔ)充一下,“碁”字的吳音有g(shù)o,gi兩個(gè),漢音是ki?!捌凇弊值膮且粢彩莋o,這說(shuō)明現(xiàn)代漢語(yǔ)韻母是i的字在當(dāng)時(shí)韻母類(lèi)似o是系統(tǒng)的現(xiàn)象,不像誤傳。另外,越南語(yǔ)里“基”“機(jī)”的讀音是c?,類(lèi)似現(xiàn)在漢語(yǔ)的“哥”,也說(shuō)明歷史上有一個(gè)時(shí)期這些字的漢語(yǔ)韻母是類(lèi)似o的。

圍棋日語(yǔ)叫“囲碁(igo)”,也可以單獨(dú)說(shuō)“碁(go)”。英語(yǔ)就是取后者。

“碁”字在日語(yǔ)中的音讀有吳音(go、gi)和漢音(ki)兩種。漢音源自隋唐遣使帶回的長(zhǎng)安雅音,而吳音一般認(rèn)為是在那之前南北朝的金陵雅音。那么可以推測(cè)“碁”字在南北朝時(shí)期的發(fā)音接近go。(受@Maigo的啟發(fā),刪去go可能是誤傳的說(shuō)法)

BTW,不少例子可以佐證這個(gè)推測(cè)。比如“群”字,中文讀qun,日語(yǔ)讀gun。另外,潮州話中的“碁”字似乎是讀gi的。

c#和go語(yǔ)言的區(qū)別

c:面向過(guò)程,語(yǔ)法太麻煩c#:面向?qū)ο螅ǜ鷍ava很像如果你對(duì)java了解估計(jì)你就會(huì)明白c&c#之間的區(qū)別了),是ms點(diǎn)虐 framework的主力之一,它的代碼運(yùn)行是安全的,里面沒(méi)有指針,像java一樣有垃圾回收機(jī)制。語(yǔ)法基本沒(méi)有區(qū)別,個(gè)人感覺(jué)首先c#不必對(duì)指針進(jìn)行太多的研究,然后可遺址性等,其它的區(qū)別相當(dāng)大。可以說(shuō)不是一個(gè)方向的。開(kāi)發(fā)環(huán)境跟開(kāi)發(fā)語(yǔ)言也是兩個(gè)不同的概念學(xué)習(xí)c#并不必須有c語(yǔ)言的基礎(chǔ),不過(guò),如果你學(xué)過(guò)c語(yǔ)言,那會(huì)事半功倍的,因?yàn)樗麄冎g有很多語(yǔ)法是一樣的。作為初學(xué)者,并沒(méi)有必要先去學(xué)習(xí)c語(yǔ)言,你只需要有c#的完整的教程就行了。舉個(gè)簡(jiǎn)單的例子,你想學(xué)開(kāi)高檔的轎車(chē)并不需要先去學(xué)習(xí)開(kāi)低檔的面包車(chē)。但如果你已經(jīng)會(huì)開(kāi)面包車(chē)的話,那么學(xué)開(kāi)轎車(chē)就一定會(huì)容易一些了,因?yàn)樗麄冇泻芏嘞嗤牡胤?。C語(yǔ)言:C語(yǔ)言是國(guó)際上廣泛流行的、很有發(fā)展前途的計(jì)算機(jī)高級(jí)語(yǔ)言。它適合作為系統(tǒng)描述語(yǔ)言,即可用來(lái)編寫(xiě)系統(tǒng)軟件,也可用來(lái)編寫(xiě)應(yīng)用軟件。早期的操作系統(tǒng)等系統(tǒng)軟件主要是用匯編語(yǔ)言編寫(xiě)的(包括UNIX操作系統(tǒng)在內(nèi))。由于匯編語(yǔ)言依賴于計(jì)算機(jī)硬件,程序的可讀性和可移植性都比較差。為了提高可讀性和可移植性,最好改用高級(jí)語(yǔ)言,但一般的高級(jí)語(yǔ)言難以實(shí)現(xiàn)匯編語(yǔ)言的某些功能(匯編語(yǔ)言可以直接對(duì)硬件進(jìn)行操作),例如:對(duì)內(nèi)存地址的操作、位操作等)。人們?cè)O(shè)想能否找到一種既具有一般高級(jí)語(yǔ)言特性,又具有低級(jí)語(yǔ)言特性的語(yǔ)言,集它們的優(yōu)點(diǎn)于一身。于是,C語(yǔ)言就在這種情況下應(yīng)運(yùn)而生了。C語(yǔ)言是在B語(yǔ)言的基礎(chǔ)上發(fā)展起來(lái)的,它的根源可以追溯到ALGOL60。1960年出現(xiàn)的ALGOL60是一種面向問(wèn)題的高級(jí)語(yǔ)言,它離硬件比較遠(yuǎn),不宜用來(lái)編寫(xiě)系統(tǒng)程序。1963年英國(guó)的劍橋大學(xué)推出了CPL(CombinedProgram-mingLanguage)語(yǔ)言。CPL語(yǔ)言在ALGOL60的基礎(chǔ)上接近了硬件一些,但規(guī)模比較大,難以實(shí)現(xiàn)。1967年英國(guó)劍橋大學(xué)的MatinRichards對(duì)CPL語(yǔ)言作了簡(jiǎn)化,推出了BCPL(BasicCombinedProgrammingLanguage)語(yǔ)言。1970年美國(guó)貝爾實(shí)驗(yàn)室的KenThompson以BCPL語(yǔ)言為基礎(chǔ),又作了進(jìn)一步簡(jiǎn)化,設(shè)計(jì)出了很簡(jiǎn)單的而且很接近硬件的B語(yǔ)言(取BCPL的第一個(gè)字母),并用B語(yǔ)言寫(xiě)第一個(gè)UNIX操作系統(tǒng),在PDP-7上實(shí)現(xiàn)。1971年在PDP-11/20上實(shí)現(xiàn)了B語(yǔ)言,并寫(xiě)了UNIX操作系統(tǒng)。但B語(yǔ)言過(guò)于簡(jiǎn)單,功能有限。1972年至1973年間,貝爾實(shí)驗(yàn)室的D.M.Ritchie在B語(yǔ)言的基礎(chǔ)上設(shè)計(jì)出了C語(yǔ)言(取BCPL的第二個(gè)字母)。C語(yǔ)言既保持了BCPL和B語(yǔ)言的優(yōu)點(diǎn)(精練、接近硬件),又克服了它們的缺點(diǎn)(過(guò)于簡(jiǎn)單、數(shù)據(jù)無(wú)類(lèi)型等)。最初的C語(yǔ)言只是為描述和實(shí)現(xiàn)UNIX操作系統(tǒng)提供一種工作語(yǔ)言而設(shè)計(jì)的。1973年,K.Thom-pson和D.M.ritchie兩人合作把UNIX的90%以上用C改寫(xiě)(UNIX第5版。原來(lái)的UNIX操作系統(tǒng)是1969年由美國(guó)的貝爾實(shí)驗(yàn)室的K.Thompson和D.M.Ritchie開(kāi)發(fā)成功的,是用匯編語(yǔ)言寫(xiě)的)。后來(lái),C語(yǔ)言多次作了改進(jìn),但主要還是在貝爾實(shí)驗(yàn)室內(nèi)部使用。直到1-975年UNIX第6版公布后,C語(yǔ)言的突出優(yōu)點(diǎn)才引起人們普遍注意。1977年出現(xiàn)了不依賴于具體機(jī)器的C語(yǔ)言編譯文本《可移植C語(yǔ)言編譯程序》,使C移植到其它機(jī)器時(shí)所做的工作大大簡(jiǎn)化了,這也推動(dòng)了UNIX操作系統(tǒng)迅速地在各種機(jī)器上實(shí)現(xiàn)。例如,VAX,ATT等計(jì)算機(jī)系統(tǒng)都相繼開(kāi)發(fā)了UNIX。隨著UNIX的日益廣泛使用,C語(yǔ)言也迅速得到推廣。C語(yǔ)言和UNIX可以說(shuō)是一對(duì)孿生兄弟,在發(fā)展過(guò)程中相輔相成。1978年以后,C語(yǔ)言已先后移植到大、中、小、微型機(jī)上,已獨(dú)立于UNIX和PDP了。現(xiàn)在C語(yǔ)言已風(fēng)靡全世界,成為世界上應(yīng)用最廣泛的幾種計(jì)算機(jī)語(yǔ)言之一。以1978年發(fā)表的UNIX第7版中的C編譯程序?yàn)榛A(chǔ),BrianW.Kernighan和DennisM.Ritchie(合稱(chēng)KR)合著了影響深遠(yuǎn)了名著《TheCProgrammingLan-guage》,這本書(shū)中介紹的C語(yǔ)言成為后來(lái)廣泛使用的C語(yǔ)言版本的基礎(chǔ),它被稱(chēng)為標(biāo)準(zhǔn)C。1983年,美國(guó)國(guó)家標(biāo)準(zhǔn)化協(xié)會(huì)(ANSI)根據(jù)C語(yǔ)言問(wèn)世以來(lái)各種版本對(duì)C的發(fā)展和擴(kuò)充,制定了新的標(biāo)準(zhǔn),稱(chēng)為ANSIC。ANSIC比原來(lái)的標(biāo)準(zhǔn)C有了很大的發(fā)展。KR在1988年修改了他們的經(jīng)典著作《TheCProgra-mmingLanguage》,按照ANSIC的標(biāo)準(zhǔn)重新寫(xiě)了該書(shū)。1987年,ANSIC又公布了新標(biāo)準(zhǔn)--87ANSIC。目前流行的C編譯系統(tǒng)都是以它為基礎(chǔ)的。C#:C#是Microsoft公司設(shè)計(jì)的一種編程語(yǔ)言。它松散地基于C/C++,并且有很多方面和Java類(lèi)似。Microsoft是這樣描述C#的:“C#是從C和C++派生來(lái)的一種簡(jiǎn)單、現(xiàn)代、面向?qū)ο蠛皖?lèi)型安全的編程語(yǔ)言。C#(讀做‘Csharp’)主要是從C/C++編程語(yǔ)言家族移植過(guò)來(lái)的,C和C++的程序員會(huì)馬上熟悉它。C#試圖結(jié)合VisualBasic的快速開(kāi)發(fā)能力和C++的強(qiáng)大靈活的能力?!备剑阂粋€(gè)簡(jiǎn)單的C#程序是怎樣的?可以是這樣:classCApplication{publicstaticvoidMain(){System.Console.Write(“Hello,new.NETworld!”);}}(你不能將Main()作為全局函數(shù)——C#沒(méi)有全局函數(shù))C#是面向?qū)ο蟮膯?是的,C#像Java和C++一樣,是一個(gè)面向?qū)ο蟮恼Z(yǔ)言。C#有自己的類(lèi)庫(kù)嗎?不,就像所有的.NET語(yǔ)言(VB.Net,JScript.Net)一樣,C#訪問(wèn).NET類(lèi)庫(kù),C#沒(méi)有自己的類(lèi)庫(kù)。C#提供什么標(biāo)準(zhǔn)類(lèi)型?C#支持的基本類(lèi)型和C++很相似,包括int,long,float,double,char,string,arrays,structs和classes。然而,不要假設(shè)太多,名字可能很形似,但是一些細(xì)節(jié)不相同。例如C#中的long是64位的,而C++的long取決于平臺(tái),32位的平臺(tái)上是32位的,64位的平臺(tái)上是64位的。class和struct在C++中幾乎完全一樣,但在C#中并不是這樣的。

本文標(biāo)題:go語(yǔ)言名字由來(lái) go語(yǔ)言是什么語(yǔ)言開(kāi)發(fā)的
轉(zhuǎn)載注明:http://muchs.cn/article22/ddijijc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營(yíng)銷(xiāo)型網(wǎng)站建設(shè)、電子商務(wù)、虛擬主機(jī)、網(wǎng)站收錄、全網(wǎng)營(yíng)銷(xiāo)推廣服務(wù)器托管

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)