欧美亚洲中文,在线国自产视频,欧洲一区在线观看视频,亚洲综合中文字幕在线观看

      1. <dfn id="rfwes"></dfn>
          <object id="rfwes"></object>
        1. 站長資訊網(wǎng)
          最全最豐富的資訊網(wǎng)站

          go語言是什么時(shí)候出現(xiàn)的

          go語言是谷歌2009發(fā)布的開源編程語言。Go語言最初由Google公司的Robert Griesemer、Ken Thompson和Rob Pike三個(gè)大牛于2007年開始設(shè)計(jì)發(fā)明,并于2009年正式對(duì)外發(fā)布;三名初始人最終的目標(biāo)是設(shè)計(jì)一種適應(yīng)網(wǎng)絡(luò)和多核時(shí)代的C語言,所以Go語言很多時(shí)候被描述為“類C語言”,或者是“21世紀(jì)的C語言”,Go從C繼承了相似的語法、編程思想等。

          go語言是什么時(shí)候出現(xiàn)的

          本教程操作環(huán)境:windows7系統(tǒng)、GO 1.18版本、Dell G3電腦。

          1. Go語言的出現(xiàn)

          在具體學(xué)習(xí)go語言的基礎(chǔ)語法之前,我們來了解一下go語言出現(xiàn)的時(shí)機(jī)及其特點(diǎn)。

          Go語言最初由Google公司的Robert Griesemer、Ken Thompson和Rob Pike三個(gè)大牛于2007年開始設(shè)計(jì)發(fā)明,于2009年11月開源,一開始在google內(nèi)部作為一個(gè)20%的項(xiàng)目運(yùn)行。

          Go 語言起源 2007 年,并于 2009 年正式對(duì)外發(fā)布。它從 2009 年 9 月 21 日開始作為谷歌公司 20% 兼職項(xiàng)目,即相關(guān)員工利用 20% 的空余時(shí)間來參與 Go 語言的研發(fā)工作。

          三名初始人最終的目標(biāo)是設(shè)計(jì)一種適應(yīng)網(wǎng)絡(luò)和多核時(shí)代的C語言,所以Go語言很多時(shí)候被描述為“類C語言”,或者是“21世紀(jì)的C語言”,當(dāng)然從各種角度看,Go語言確實(shí)是從C語言繼承了相似的表達(dá)式語法、控制流結(jié)構(gòu)、基礎(chǔ)數(shù)據(jù)類型、調(diào)用參數(shù)傳值、指針等諸多編程思想。但是Go語言更是對(duì)C語言最徹底的一次揚(yáng)棄,它舍棄了C語言中靈活但是危險(xiǎn)的指針運(yùn)算,還重新設(shè)計(jì)了C語言中部分不太合理運(yùn)算符的優(yōu)先級(jí),并在很多細(xì)微的地方都做了必要的打磨和改變。

          2. go版本的hello world

          在這一部分我們只是使用“hello world”的程序來向大家介紹一下go語言的所編寫的程序的基本組成。

          package main import "fmt" func main() { 	// 終端輸出hello world 	fmt.Println("Hello world!") }
          登錄后復(fù)制

          和C語言相似,go語言的基本組成有:

          • 包聲明,編寫源文件時(shí),必須在非注釋的第一行指明這個(gè)文件屬于哪個(gè)包,如package main。
          • 引入包,其實(shí)就是告訴Go 編譯器這個(gè)程序需要使用的包,如import "fmt"其實(shí)就是引入了fmt包。
          • 函數(shù),和c語言相同,即是一個(gè)可以實(shí)現(xiàn)某一個(gè)功能的函數(shù)體,每一個(gè)可執(zhí)行程序中必須擁有一個(gè)main函數(shù)。
          • 變量,Go 語言變量名由字母、數(shù)字、下劃線組成,其中首個(gè)字符不能為數(shù)字。
          • 語句/表達(dá)式,在 Go 程序中,一行代表一個(gè)語句結(jié)束。每個(gè)語句不需要像 C 家族中的其它語言一樣以分號(hào) ; 結(jié)尾,因?yàn)檫@些工作都將由 Go 編譯器自動(dòng)完成。
          • 注釋,和c語言中的注釋方式相同,可以在任何地方使用以 // 開頭的單行注釋。以 /* 開頭,并以 */ 結(jié)尾來進(jìn)行多行注釋,且不可以嵌套使用,多行注釋一般用于包的文檔描述或注釋成塊的代碼片段。

          需要注意的是:標(biāo)識(shí)符是用來命名變量、類型等程序?qū)嶓w。一個(gè)標(biāo)識(shí)符實(shí)際上就是一個(gè)或是多個(gè)字母和數(shù)字、下劃線_組成的序列,但是第一個(gè)字符必須是字母或下劃線而不能是數(shù)字。

          • 當(dāng)標(biāo)識(shí)符(包括常量、變量、類型、函數(shù)名、結(jié)構(gòu)字段等等)以一個(gè)大寫字母開頭,如:Group1,那么使用這種形式的標(biāo)識(shí)符的對(duì)象就可以被外部包的代碼所使用(客戶端程序需要先導(dǎo)入這個(gè)包),這被稱為導(dǎo)出(像面向?qū)ο笳Z言中的 public);

          • 標(biāo)識(shí)符如果以小寫字母開頭,則對(duì)包外是不可見的,但是他們?cè)谡麄€(gè)包的內(nèi)部是可見并且可用的(像面向?qū)ο笳Z言中的 protected)。

          3. 數(shù)據(jù)類型

          在 Go 編程語言中,數(shù)據(jù)類型用于聲明函數(shù)和變量。

          數(shù)據(jù)類型的出現(xiàn)是為了把數(shù)據(jù)分成所需內(nèi)存大小不同的數(shù)據(jù),編程的時(shí)候需要用大數(shù)據(jù)的時(shí)候才需要申請(qǐng)大內(nèi)存,就可以充分利用內(nèi)存。具體分類如下:

          類型 詳解
          布爾型 布爾型的值只可以是常量 true 或者 false。
          數(shù)字類型 整型 int 和浮點(diǎn)型 float。Go 語言支持整型和浮點(diǎn)型數(shù)字,并且支持復(fù)數(shù),其中位的運(yùn)算采用補(bǔ)碼。
          字符串類型 字符串就是一串固定長度的字符連接起來的字符序列。Go 的字符串是由單個(gè)字節(jié)連接起來的。Go 語言的字符串的字節(jié)使用 UTF-8 編碼標(biāo)識(shí) Unicode 文本。
          派生類型 (a) 指針類型(Pointer)(b) 數(shù)組類型? 結(jié)構(gòu)化類型(struct)(d) Channel 類型(e) 函數(shù)類型(f) 切片類型(g) 接口類型(interface)(h) Map 類型

          3.0 定義變量

          聲明變量的一般形式是使用 var 關(guān)鍵字,具體格式為:var identifier typename。如下的代碼中我們定義了一個(gè)類型為int的變量。

          package main import "fmt" func main() { 	var a int = 27 	fmt.Println(a); }
          登錄后復(fù)制

          3.0.1 如果變量沒有初始化

          在go語言中定義了一個(gè)變量,指定變量類型,如果沒有初始化,則變量默認(rèn)為零值。零值就是變量沒有做初始化時(shí)系統(tǒng)默認(rèn)設(shè)置的值

          類型 零值
          數(shù)值類型 0
          布爾類型 false
          字符串 “”(空字符串)

          3.0.2 如果變量沒有指定類型

          在go語言中如果沒有指定變量類型,可以通過變量的初始值來判斷變量類型。如下代碼

          package main import "fmt" func main() {     var d = true     fmt.Println(d) }
          登錄后復(fù)制

          3.0.3 :=符號(hào)

          當(dāng)我們定義一個(gè)變量后又使用該符號(hào)初始化變量,就會(huì)產(chǎn)生編譯錯(cuò)誤,因?yàn)樵摲?hào)其實(shí)是一個(gè)聲明語句。

          使用格式:typename := value

          也就是說intVal := 1相等于:

          var intVal int  intVal =1
          登錄后復(fù)制

          3.0.4 多變量聲明

          可以同時(shí)聲明多個(gè)類型相同的變量(非全局變量),如下圖所示:

          var x, y int var c, d int = 1, 2 g, h := 123, "hello"
          登錄后復(fù)制

          關(guān)于全局變量的聲明如下:
          var ( vname1 v_type1 vname2 v_type2 )
          具體舉例如下:

          var (      a int     b bool )
          登錄后復(fù)制

          3.0.5 匿名變量

          匿名變量的特點(diǎn)是一個(gè)下畫線_,這本身就是一個(gè)特殊的標(biāo)識(shí)符,被稱為空白標(biāo)識(shí)符。它可以像其他標(biāo)識(shí)符那樣用于變量的聲明或賦值(任何類型都可以賦值給它),但任何賦給這個(gè)標(biāo)識(shí)符的值都將被拋棄,因此這些值不能在后續(xù)的代碼中使用,也不可以使用這個(gè)標(biāo)識(shí)符作為變量對(duì)其它變量進(jìn)行賦值或運(yùn)算。

          使用匿名變量時(shí),只需要在變量聲明的地方使用下畫線替換即可。

          示例代碼如下:

              func GetData() (int, int) {         return 10, 20     }     func main(){         a, _ := GetData()         _, b := GetData()         fmt.Println(a, b)     }
          登錄后復(fù)制

          需要注意的是匿名變量不占用內(nèi)存空間,不會(huì)分配內(nèi)存。匿名變量與匿名變量之間也不會(huì)因?yàn)槎啻温暶鞫鵁o法使用。

          3.0.6 變量作用域

          作用域指的是已聲明的標(biāo)識(shí)符所表示的常量、類型、函數(shù)或者包在源代碼中的作用范圍,在此我們主要看一下go中變量的作用域,根據(jù)變量定義位置的不同,可以分為一下三個(gè)類型:

          • 函數(shù)內(nèi)定義的變量為局部變量,這種局部變量的作用域只在函數(shù)體內(nèi),函數(shù)的參數(shù)和返回值變量都屬于局部變量。這種變量在存在于函數(shù)被調(diào)用時(shí),銷毀于函數(shù)調(diào)用結(jié)束后。

          • 函數(shù)外定義的變量為全局變量,全局變量只需要在一個(gè)源文件中定義,就可以在所有源文件中使用,甚至可以使用import引入外部包來使用。全局變量聲明必須以 var 關(guān)鍵字開頭,如果想要在外部包中使用全局變量的首字母必須大寫

          • 函數(shù)定義中的變量成為形式參數(shù),定義函數(shù)時(shí)函數(shù)名后面括號(hào)中的變量叫做形式參數(shù)(簡(jiǎn)稱形參)。形式參數(shù)只在函數(shù)調(diào)用時(shí)才會(huì)生效,函數(shù)調(diào)用結(jié)束后就會(huì)被銷毀,在函數(shù)未被調(diào)用時(shí),函數(shù)的形參并不占用實(shí)際的存儲(chǔ)單元,也沒有實(shí)際值。形式參數(shù)會(huì)作為函數(shù)的局部變量來使用

          3.1 基本類型

          類型 描述
          uint8 / uint16 / uint32 / uint64 無符號(hào) 8 / 16 / 32 / 64位整型
          int8 / int16 / int32 / int64 有符號(hào)8 / 16 / 32 / 64位整型
          float32 / float64 IEEE-754 32 / 64 位浮點(diǎn)型數(shù)
          complex64 / complex128 32 / 64 位實(shí)數(shù)和虛數(shù)
          byte 類似 uint8
          rune 類似 int32
          uintptr 無符號(hào)整型,用于存放一個(gè)指針

          贊(0)
          分享到: 更多 (0)
          網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)