作為C語言家族的一員,go和c一樣也支持結構體。可以類比于java的一個POJO。
我們提供的服務有:做網站、成都網站設計、微信公眾號開發、網站優化、網站認證、通遼ssl等。為近千家企事業單位解決了網站和推廣的問題。提供周到的售前咨詢和貼心的售后服務,是有科學管理、有技術的通遼網站制作公司
在學習定義結構體之前,先學習下定義一個新類型。
新類型 T1 是基于 Go 原生類型 int 定義的新自定義類型,而新類型 T2 則是 基于剛剛定義的類型 T1,定義的新類型。
這里要引入一個底層類型的概念。
如果一個新類型是基于某個 Go 原生類型定義的, 那么我們就叫 Go 原生類型為新類型的底層類型
在上面的例子中,int就是T1的底層類型。
但是T1不是T2的底層類型,只有原生類型才可以作為底層類型,所以T2的底層類型還是int
底層類型是很重要的,因為對兩個變量進行顯式的類型轉換,只有底層類型相同的變量間才能相互轉換。底層類型是判斷兩個類型本質上是否相同的根本。
這種類型定義方式通常用在 項目的漸進式重構,還有對已有包的二次封裝方面
類型別名表示新類型和原類型完全等價,實際上就是同一種類型。只不過名字不同而已。
一般我們都是定義一個有名的結構體。
字段名的大小寫決定了字段是否包外可用。只有大寫的字段可以被包外引用。
還有一個點提一下
如果換行來寫
Age: 66,后面這個都好不能省略
還有一個點,觀察e3的賦值
new返回的是一個指針。然后指針可以直接點號賦值。這說明go默認進行了取值操作
e3.Age 等價于 (*e3).Age
如上定義了一個空的結構體Empty。打印了元素e的內存大小是0。
有什么用呢?
基于空結構體類型內存零開銷這樣的特性,我們在日常 Go 開發中會經常使用空 結構體類型元素,作為一種“事件”信息進行 Goroutine 之間的通信
這種以空結構體為元素類建立的 channel,是目前能實現的、內存占用最小的 Goroutine 間通信方式。
這種形式需要說的是幾個語法糖。
語法糖1:
對于結構體字段,可以省略字段名,只寫結構體名。默認字段名就是結構體名
這種方式稱為 嵌入字段
語法糖2:
如果是以嵌入字段形式寫的結構體
可以省略嵌入的Reader字段,而直接訪問ReaderName
此時book是一個各個屬性全是對應類型零值的一個實例。不是nil。這種情況在Go中稱為零值可用。不像java會導致npe
結構體定義時可以在字段后面追加標簽說明。
tag的格式為反單引號
tag的作用是可以使用[反射]來檢視字段的標簽信息。
具體的作用還要看使用的場景。
比如這里的tag是為了幫助 encoding/json 標準包在解析對象時可以利用的規則。比如omitempty表示該字段沒有值就不打印出來。
go是日語中“碁”字的吳音,吳音一般來自南北朝時期的漢語。
補充一下,“碁”字的吳音有go,gi兩個,漢音是ki。“期”字的吳音也是go,這說明現代漢語韻母是i的字在當時韻母類似o是系統的現象,不像誤傳。另外,越南語里“基”“機”的讀音是c?,類似現在漢語的“哥”,也說明歷史上有一個時期這些字的漢語韻母是類似o的。
圍棋日語叫“囲碁(igo)”,也可以單獨說“碁(go)”。英語就是取后者。
“碁”字在日語中的音讀有吳音(go、gi)和漢音(ki)兩種。漢音源自隋唐遣使帶回的長安雅音,而吳音一般認為是在那之前南北朝的金陵雅音。那么可以推測“碁”字在南北朝時期的發音接近go。(受@Maigo的啟發,刪去go可能是誤傳的說法)
BTW,不少例子可以佐證這個推測。比如“群”字,中文讀qun,日語讀gun。另外,潮州話中的“碁”字似乎是讀gi的。
c:面向過程,語法太麻煩c#:面向對象(跟java很像如果你對java了解估計你就會明白c&c#之間的區別了),是ms點虐 framework的主力之一,它的代碼運行是安全的,里面沒有指針,像java一樣有垃圾回收機制。語法基本沒有區別,個人感覺首先c#不必對指針進行太多的研究,然后可遺址性等,其它的區別相當大。可以說不是一個方向的。開發環境跟開發語言也是兩個不同的概念學習c#并不必須有c語言的基礎,不過,如果你學過c語言,那會事半功倍的,因為他們之間有很多語法是一樣的。作為初學者,并沒有必要先去學習c語言,你只需要有c#的完整的教程就行了。舉個簡單的例子,你想學開高檔的轎車并不需要先去學習開低檔的面包車。但如果你已經會開面包車的話,那么學開轎車就一定會容易一些了,因為他們有很多相同的地方。C語言:C語言是國際上廣泛流行的、很有發展前途的計算機高級語言。它適合作為系統描述語言,即可用來編寫系統軟件,也可用來編寫應用軟件。早期的操作系統等系統軟件主要是用匯編語言編寫的(包括UNIX操作系統在內)。由于匯編語言依賴于計算機硬件,程序的可讀性和可移植性都比較差。為了提高可讀性和可移植性,最好改用高級語言,但一般的高級語言難以實現匯編語言的某些功能(匯編語言可以直接對硬件進行操作),例如:對內存地址的操作、位操作等)。人們設想能否找到一種既具有一般高級語言特性,又具有低級語言特性的語言,集它們的優點于一身。于是,C語言就在這種情況下應運而生了。C語言是在B語言的基礎上發展起來的,它的根源可以追溯到ALGOL60。1960年出現的ALGOL60是一種面向問題的高級語言,它離硬件比較遠,不宜用來編寫系統程序。1963年英國的劍橋大學推出了CPL(CombinedProgram-mingLanguage)語言。CPL語言在ALGOL60的基礎上接近了硬件一些,但規模比較大,難以實現。1967年英國劍橋大學的MatinRichards對CPL語言作了簡化,推出了BCPL(BasicCombinedProgrammingLanguage)語言。1970年美國貝爾實驗室的KenThompson以BCPL語言為基礎,又作了進一步簡化,設計出了很簡單的而且很接近硬件的B語言(取BCPL的第一個字母),并用B語言寫第一個UNIX操作系統,在PDP-7上實現。1971年在PDP-11/20上實現了B語言,并寫了UNIX操作系統。但B語言過于簡單,功能有限。1972年至1973年間,貝爾實驗室的D.M.Ritchie在B語言的基礎上設計出了C語言(取BCPL的第二個字母)。C語言既保持了BCPL和B語言的優點(精練、接近硬件),又克服了它們的缺點(過于簡單、數據無類型等)。最初的C語言只是為描述和實現UNIX操作系統提供一種工作語言而設計的。1973年,K.Thom-pson和D.M.ritchie兩人合作把UNIX的90%以上用C改寫(UNIX第5版。原來的UNIX操作系統是1969年由美國的貝爾實驗室的K.Thompson和D.M.Ritchie開發成功的,是用匯編語言寫的)。后來,C語言多次作了改進,但主要還是在貝爾實驗室內部使用。直到1-975年UNIX第6版公布后,C語言的突出優點才引起人們普遍注意。1977年出現了不依賴于具體機器的C語言編譯文本《可移植C語言編譯程序》,使C移植到其它機器時所做的工作大大簡化了,這也推動了UNIX操作系統迅速地在各種機器上實現。例如,VAX,ATT等計算機系統都相繼開發了UNIX。隨著UNIX的日益廣泛使用,C語言也迅速得到推廣。C語言和UNIX可以說是一對孿生兄弟,在發展過程中相輔相成。1978年以后,C語言已先后移植到大、中、小、微型機上,已獨立于UNIX和PDP了。現在C語言已風靡全世界,成為世界上應用最廣泛的幾種計算機語言之一。以1978年發表的UNIX第7版中的C編譯程序為基礎,BrianW.Kernighan和DennisM.Ritchie(合稱KR)合著了影響深遠了名著《TheCProgrammingLan-guage》,這本書中介紹的C語言成為后來廣泛使用的C語言版本的基礎,它被稱為標準C。1983年,美國國家標準化協會(ANSI)根據C語言問世以來各種版本對C的發展和擴充,制定了新的標準,稱為ANSIC。ANSIC比原來的標準C有了很大的發展。KR在1988年修改了他們的經典著作《TheCProgra-mmingLanguage》,按照ANSIC的標準重新寫了該書。1987年,ANSIC又公布了新標準--87ANSIC。目前流行的C編譯系統都是以它為基礎的。C#:C#是Microsoft公司設計的一種編程語言。它松散地基于C/C++,并且有很多方面和Java類似。Microsoft是這樣描述C#的:“C#是從C和C++派生來的一種簡單、現代、面向對象和類型安全的編程語言。C#(讀做‘Csharp’)主要是從C/C++編程語言家族移植過來的,C和C++的程序員會馬上熟悉它。C#試圖結合VisualBasic的快速開發能力和C++的強大靈活的能力。”附:一個簡單的C#程序是怎樣的?可以是這樣:classCApplication{publicstaticvoidMain(){System.Console.Write(“Hello,new.NETworld!”);}}(你不能將Main()作為全局函數——C#沒有全局函數)C#是面向對象的嗎?是的,C#像Java和C++一樣,是一個面向對象的語言。C#有自己的類庫嗎?不,就像所有的.NET語言(VB.Net,JScript.Net)一樣,C#訪問.NET類庫,C#沒有自己的類庫。C#提供什么標準類型?C#支持的基本類型和C++很相似,包括int,long,float,double,char,string,arrays,structs和classes。然而,不要假設太多,名字可能很形似,但是一些細節不相同。例如C#中的long是64位的,而C++的long取決于平臺,32位的平臺上是32位的,64位的平臺上是64位的。class和struct在C++中幾乎完全一樣,但在C#中并不是這樣的。
本文標題:go語言名字由來 go語言是什么語言開發的
轉載注明:http://vcdvsql.cn/article22/ddijijc.html
成都網站建設公司_創新互聯,為您提供營銷型網站建設、電子商務、虛擬主機、網站收錄、全網營銷推廣、服務器托管
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯