go語言學習-基礎知識

來源:互聯網
上載者:User

標籤:忽略   uil   標準   基本資料   string   位元組   傳回值   全域變數   ons   

go程式的基本結構

一個可以最簡單的可啟動並執行go程式需要滿足下面兩個條件:

  • 有一個main()函數
  • main()函數在main包中

例如: 在go語言中的 hello world 程式如下:

// main.gopackage mainfunc main() {    println("hello world");}

程式中的 package 關鍵字,用來聲明檔案所屬的包(檔案所屬的包跟檔案名稱是沒有關係的),每一個go檔案都需要有一個包聲明; 而 func 關鍵字用來定義函數, 這裡我們定義了一個main函數(main函數的形式是固定的)。println 函數是用來向標準輸出列印資料的,不過我們一般情況下是不使用它的。

go在編譯器時,會自動在語句的結尾加上分號,所有這裡函數的第一的大括弧,必須與()在同一行,否則返回就會加在()之後,就會出現錯誤,後面的一些流程式控制制語句也是如此

運行程式:

go build main.go  // 編譯器./main         // 運行程式

我們可以將兩步合成一步:

go run main.go    // 不會產生中間檔案

在運行go程式時的入口就是 main 包下的 main 函數。

變數

go語言使用 var 聲明或者定義變數,它可以用在函數之外定義,此時就是全域變數;而在函數內聲明時,就是局部變數。

還有一種簡略的定義方式,使用 := 來定義,這種方式只能用在函數中,即定義局部變數

且局部變數聲明之後必須使用

package mainimport "fmt"var age int = 10   // 顯式的聲明變數的類型 intvar name = "Tom"    // go也可以自動推斷處變數類型,這裡是 stringfunc main() {    var sex = "man"    hello := "hello"   // 簡略聲明方式    fmt.Println(sex)    fmt.Println(hello + "world")}

這裡我們定義了兩個全域變數 name 和 age, 還定義了兩個局部變數 sex 和 hello, 在 go 語言中,全域變數可以聲明之後不是有,但是局部變數一旦聲明必須使用,否則編譯器會報錯;

注意: 這裡我們使用 import 關鍵字引入了一個 fmt 的包,在go程式中我們一般都應該使用 fmt 包中的函數來列印資料,而不是前面的println

基礎資料型別 (Elementary Data Type):

類型 含義 預設值
bool 布爾值 false
byte 位元組,uint8 0
rune Unicode碼點,int32 0
int,uint 與系統相關的有/不帶正負號的整數 0
int8,uint8 8位有/不帶正負號的整數 0
int16,uint16 16位有/不帶正負號的整數 0
int32,uint32 32位有/不帶正負號的整數 0
int64,uint64 64位有/不帶正負號的整數 0
float32 32位浮點數 0.0
float64 64位浮點數 0.0
complex64 64位複數 0+0i
complex128 128位複數 0+0i
string 字串 “”

這些是比較基本的類型,還有一些類型,後面用到了再說

常量

常量的定義方式與變數類型,不過使用的是 const 關鍵字:

const PI float32 = 3.14159   const USERNAME = "root"    // 自動類型推斷

常量必須在定義時,就初始化,並且一經定義便不可更改。

流程式控制制語句if語句
package mainimport "fmt"func main() {    a := 10    if a > 5 {        fmt.Println("a 大於 5")    } else {        fmt.Println("a 小於 5")    }}

同樣的這裡的 左大括弧“{”必須與 if 或者 else 在同一行, 且這裡 else 必須與 if 的右大括弧“}”在同一行。

go語言中沒有三元運算子

switch語句
switch (n){    case 1:        fmt.Println("n == 1")    case 2:        fmt.Println("n == 2")    default:        fmt.Println("n is default")}

go中的 switch 是不需要 break 語句的,預設自動終止一個case; 如果需要繼續執行下一個,使用fallthrough,此時不會判斷條件

這裡switch語句還可以包含初始化語句,使用分號”;”分隔,且case的條件,不僅僅可以是常量值,還可以是比較運算式;

for迴圈

go語言支援三種迴圈方式:

// 1. 常見的for迴圈,類似於C語言的迴圈,不過條件可以不用括弧for i := 0; i < 10; i++ {    fmt.Println(i);}// 2. 類while文法i := 10for i > 0 {    fmt.Println(i)    i--}// 同樣的,無限迴圈是這樣,省略條件for {    //...}// 3. for .. range,可以用來迴圈字串,數組,map,channel等等// range返回 (索引值, 值)或者(鍵, 值); 如果只有一個接收參數,則會忽略第二個傳回值s := "hello"for i := range s {   // 這裡迴圈的是string的索引    fmt.Println(s[i])  }
標籤,goto, break, continue

go還支援標籤(區分大小寫),可以使用goto跳轉到標籤,break 可?於 for、 switch、 select,? continue 僅能?於 for 迴圈。

go語言學習-基礎知識

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.