Go語言基礎

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

定義變數

格式:var 變數名 變數類型

Go變數聲明很奇怪,把類型放在變數名後面,這點與我們常用的C、JAVA等不一樣,沒辦法,得習慣。Go對於已聲明但未使用的變數會在編譯階段報錯,要求好嚴格,但的確應該支援。
單個變數的聲明和賦值

var a int //變數的聲明a = 123 //變數的賦值var b int = 123 //變數的聲明,同時賦值var c = 321 //變數的聲明,同時賦值,省略變數類型,由編譯器推斷,這裡認為是intvar s = "中國" //這裡編譯器推斷是字串string類型d := 456 //變數聲明與賦值的最簡方法,這種方法只能用在函數內部

上面是常用的變數聲明和賦值方法,一般常用的應該是var 變數名 = 賦值。
需要注意的是,全域變數一般都是通過var方式來定義,函數局部變數採用:=方式來定義。
多個變數的聲明和賦值

var a, b, c int //變數的聲明a = 1 //變數的賦值b = 2c = 3var a, b, c int = 1, 2, 3 //變數的聲明,同時賦值   是不是覺得很彆扭,搞不懂go為啥要這麼定義他var a, b, c = 1, 2, 3 //一般採用此方法來定義_, b := 2, 3 // _(底線)是個特殊的變數名,任何賦予它的值都會被丟棄。唉,既然會被丟棄,還用它幹啥呢。

常量

在變數前加const關鍵字,這個變數就變成了一個常量
定義變數組

Go語言中,同時聲明多個變數、常量或匯入多個包時,可採用分組的方式聲明。這點很不錯,比其它語言要好。比如匯入多個包時:

import "fmt"import "os"//可以用分組寫成如下形式:import(     "fmt"     "os"                                                                                                                          )

聲明多個變數:

var a int
var b = “123”

var(
a int
b = “123”
)

聲明多個常量:

const pi = 3.1415const prefix = "Go"const(      pi = 3.1415      prefix = "Go")

常用的基礎類型

Boolean

Go語言中,布爾(bool)類型的值只能是true或false

數實值型別

Go裡面的int跟uint的資料範圍是根據具體的平台是32位還是64位來決定的。Go裡面也有直接定義好的位元類型rune , int8 , int16 , int32 , int64 和 byte , uint8 , uint16 , uint32 , uint64 。其中 rune 是 int32 的別稱, byte 是 uint8 的別稱。
需要注意:這些類型之間不允許相互賦值或操作,不然編譯器會報錯。比如:

var a int8 = 4var c int32  = a

編譯的時候會報錯:(type int8) as type int32 in assignment。另外,儘管int的長度是32bit,但是int與int32也是不可以互用的。
複數

Go語言支援複數,它的預設類型是 complex128 (64 位元實數+64 位元虛數)。如果需要小一些的,也有 complex64 (32 位實數+32 位虛數)。複數的形式為 RE + IMi ,其中 RE 是實數部分, IM 是虛數部分,而最後的 i 是虛數單位。

var c complex64 = 5+5ifmt.Printf(c)

輸出:(5+5i)
搞不明白這個複數能幹什麼用啊抓狂抓狂抓狂

字串

Go中的字串都是採用UTF-8字元集編碼。字串是用一對” “或反引號來定義的,類型為string。Go語言中,字串是不可變的。如果真要修改怎麼辦呢?

s := "hello"c := []byte(s) // 將字串 s 轉換為 []byte 類型c[0] = 'c's2 := string(c) // 再轉換回 string 類型fmt.Printf("%s\n", s2)

Go中可以使用+串連兩個字串,這一點跟java很像。
聲明多行的字串怎麼辦?通過反引號來聲明,比如:

var s = `hello world`

輸出:
hello
world

iota枚舉

關鍵詞iota用來聲明枚舉時會用到,預設開始值為0,每調用一次加1;只能在常量運算式中使用;每遇到const,iota重設為0。看幾個例子:

const a = iota // a=0const (  b = iota     //b=0  c            //c=1)//特別注意這種情況,雖然,兩個iota中間隔著j=3.14,但是iota依然會加1下去,所以k的值為2const (    i = iota    j = 3.14    k = iota    l) 

當遇到 _(底線) 時,可以跳過不用它,但是值依然會加1,比如:

type AudioOutput intconst (    OutMute AudioOutput = iota // 0    OutMono                    // 1    OutStereo                  // 2    _    _    OutSurround                // 5)

Go程式設計的一些規則

  • 大寫字母開頭的變數是可匯出的,也就是其它包可以讀取的,是公用變數;小寫字母開頭的就是不可匯出的,是私人變數。
  • 大寫字母開頭的函數也是一樣,相當於 class 中的帶 public 關鍵詞的公有函數;小寫字母開頭的就是有 private 關鍵詞的私人函數。

這些規則好不習慣啊,但也只能接受。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.