Golang 入門系列(三)Go語言基礎知識匯總

來源:互聯網
上載者:User

前面已經了 Go 環境的配置和初學Go時,容易遇到的坑,大家可以請查看前面的文章 www.cnblogs.com/zhangweizhong/category/1275863.html,

在這篇文章中,下面為初學者匯總下Go語言基礎知識:

 

1. Go 程式的基本結構

下面是一個Go 程式的基本結構,包含(包聲明,引入包,函數等)

package main // 定義包名,package main表示一個可獨立執行的程式,每個 Go 應用程式都包含一個名為 main 的包。import "fmt" // 匯入需要使用的包(的函數,或其他元素)func main() { // 程式的入口函數。main 函數是每一個可執行程式所必須包含的,一般來說都是在啟動後第一個執行的函數。  fmt.Println("Hello, World!")}

 

2. 資料類型

go內建基礎資料型別 (Elementary Data Type)包括基礎資料型別 (Elementary Data Type)和進階資料類型

1. 基礎資料型別 (Elementary Data Type)
  布爾類型(bool)

  數實值型別

    整數類型(byte,rune,int/uint,int8/uint8,int16/uint16,int32/uint32,int64/uint64)
    浮點類型(float32,float64)
    複數類型(complex64,complex128)

  字串類型
    string Go的字串是由單個位元組串連起來的。使用UTF-8編碼標識Unicode文本。

2. 進階資料類型

  數組(array)
  切片(slice)
  字典(map)
  通道(channel)
  函數(function)
  結構體(function)
  介面(interface)
  指標(*Xxx,Pointer,uintptr)

如果按照底層結構劃分,實值型別包括(所有基礎資料型別 (Elementary Data Type),數組,結構體),參考型別包括(slice,map,channel,function,interface,指標)


3. 變數&常量

  1. 變數名由字母、數字、底線組成,其中首個字母不能為數字,例:var name string
  2. 聲明
    a.指定變數類型,聲明後若不賦值,使用預設值。
      var name string
      name = "李四"

    b.根據值自行判定變數類型。
      var name = "李四"

    c.簡短形式,省略var, 注意
      age := 10

  注意
    (:=)是使用變數的首選形式
    (:=)只能被用在函數體內,而不可以用於全域變數的聲明與賦值。
    (:=)左側的變數不應該是已經聲明過的,否則會導致編譯錯誤。


  3. 常量的資料類型只可以是布爾型、數字型(整數型、浮點型和複數)和字串型。
    1. 常量聲明:const b string = "abc"
    2. iota,特殊常量
      const (
        a = iota
        b
        c
      )

    1. 代表連續的,無類型的整數常量,
    2. 以const開始的常量聲明語句為單位,
    3. 從0開始,沒賦給一個常量就遞增一次
    4. 一旦跨越以const開始的常量聲明語句就歸0

4. 運算子
  1. 算術運算子,a + b ,包括(+,-,*,/,%,++,--)
  2. 關係運算子,返回True或False ,a == b ,包括(==,!=,>,<,>=,<=)
  3. 邏輯運算子,返回True或False ,包括(&&,||,!)
  4. 地址運算子 

    & : 返回變數儲存地址 (&originalValue)

    * :指標變數 (*pointerValue)

  5. 接收運算子,用於接收通道的資料或者給將資料加入通道(intChan<-1, <-intChan)


5. 錯誤處理

  1. error 介面,(errors.New(value),fmt.Error(),自訂錯誤類型)

func Divide(a, b float64) (result float64, err error) {    if b == 0 {        result = 0.0        err = errors.New("runtime error: divide by zero")        return    } else {        result = a / b        err = nil    }    return}


  2. panic 函數,panic(value) 與error 介面聯用,

    var user = os.Getenv("USER")    if user == "" {        panic("The USER environment variable is not set.")    }

 

  3. recover 函數,與defer語句聯用,

func TestB() (err error) {    defer func() { //在發生異常時,設定恢複        if x := recover(); x != nil {            err = fmt.Errorf("internal error: %v", x)        }    }()    panic("func TestB(): panic")}

 

6. Go 基本命令

  go build 命令主要是用於測試編譯。在包的編譯過程中,若有必要,會同時編譯與之相關聯的包。

    go run hello.go

  go get 命令主要是用來動態擷取遠程程式碼封裝的。

    go get github.com/go-sql-driver/mysql

  go run 命令主要用於編譯並運行Go程式。

    go run hello.go

  go test 命令,會自動讀取源碼目錄下面名為*_test.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.