溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Go語(yǔ)言基礎(chǔ)知識(shí)有哪些

發(fā)布時(shí)間:2021-12-15 09:31:30 來(lái)源:億速云 閱讀:144 作者:小新 欄目:大數(shù)據(jù)

這篇文章將為大家詳細(xì)講解有關(guān)Go語(yǔ)言基礎(chǔ)知識(shí)有哪些,小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

1. Go 程序的基本結(jié)構(gòu)

下面是一個(gè)Go 程序的基本結(jié)構(gòu),包含(包聲明,引入包,函數(shù)等)

package main 

import "fmt"

func main() {   
   fmt.Println("Hello, World!") }

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

go內(nèi)建基本數(shù)據(jù)類型包括基本數(shù)據(jù)類型和高級(jí)數(shù)據(jù)類型

1. 基本數(shù)據(jù)類型
  布爾類型(bool)

  數(shù)值類型

    整數(shù)類型(byte,rune,int/uint,int8/uint8,int16/uint16,int32/uint32,int64/uint64)
    浮點(diǎn)類型(float32,float64)
    復(fù)數(shù)類型(complex64,complex128)

  字符串類型
    string Go的字符串是由單個(gè)字節(jié)連接起來(lái)的。使用UTF-8編碼標(biāo)識(shí)Unicode文本。

2. 高級(jí)數(shù)據(jù)類型

  數(shù)組(array)
  切片(slice)
  字典(map)
  通道(channel)
  函數(shù)(function)
  結(jié)構(gòu)體(function)
  接口(interface)
  指針(*Xxx,Pointer,uintptr)

如果按照底層結(jié)構(gòu)劃分,值類型包括(所有基本數(shù)據(jù)類型,數(shù)組,結(jié)構(gòu)體),引用類型包括(slice,map,channel,function,interface,指針)


3. 變量&常量

  1. 變量名由字母、數(shù)字、下劃線組成,其中首個(gè)字母不能為數(shù)字,例:var name string
  2. 聲明
    a.指定變量類型,聲明后若不賦值,使用默認(rèn)值。
      var name string
      name = "李四"

    b.根據(jù)值自行判定變量類型。
      var name = "李四"

    c.簡(jiǎn)短形式,省略var, 注意 
      age := 10

  注意
    (:=)是使用變量的首選形式
   ?。?=)只能被用在函數(shù)體內(nèi),而不可以用于全局變量的聲明與賦值。
   ?。?=)左側(cè)的變量不應(yīng)該是已經(jīng)聲明過(guò)的,否則會(huì)導(dǎo)致編譯錯(cuò)誤。


  3. 常量的數(shù)據(jù)類型只可以是布爾型、數(shù)字型(整數(shù)型、浮點(diǎn)型和復(fù)數(shù))和字符串型。
    1. 常量聲明:const b string = "abc"
    2. iota,特殊常量
      const (
        a = iota
        b
        c
      )

    1. 代表連續(xù)的,無(wú)類型的整數(shù)常量,
    2. 以const開(kāi)始的常量聲明語(yǔ)句為單位,
    3. 從0開(kāi)始,沒(méi)賦給一個(gè)常量就遞增一次
    4. 一旦跨越以const開(kāi)始的常量聲明語(yǔ)句就歸0

4. 運(yùn)算符
  1. 算術(shù)運(yùn)算符,a + b ,包括(+,-,*,/,%,++,--)
  2. 關(guān)系運(yùn)算符,返回True或False ,a == b ,包括(==,!=,>,<,>=,<=)
  3. 邏輯運(yùn)算符,返回True或False ,包括(&&,||,!)
  4. 地址運(yùn)算符 

    & : 返回變量存儲(chǔ)地址 (&originalValue)

    * :指針變量 (*pointerValue)

  5. 接收運(yùn)算符,用于接收通道的數(shù)據(jù)或者給將數(shù)據(jù)加入通道(intChan<-1, <-intChan)


5. 錯(cuò)誤處理

  1. error 接口,(errors.New(value),fmt.Error(),自定義錯(cuò)誤類型)

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 函數(shù),panic(value) 與error 接口聯(lián)用,

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

  3. recover 函數(shù),與defer語(yǔ)句聯(lián)用,

func TestB() (err error) {
    defer func() { //在發(fā)生異常時(shí),設(shè)置恢復(fù)if x := recover(); x != nil {
            err = fmt.Errorf("internal error: %v", x)
        }
    }()

    panic("func TestB(): panic")
}

6. Go 基本命令

  go build 命令主要是用于測(cè)試編譯。在包的編譯過(guò)程中,若有必要,會(huì)同時(shí)編譯與之相關(guān)聯(lián)的包。

    go run hello.go

  go get 命令主要是用來(lái)動(dòng)態(tài)獲取遠(yuǎn)程代碼包的。

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

  go run 命令主要用于編譯并運(yùn)行Go程序。

    go run hello.go

  go test 命令,會(huì)自動(dòng)讀取源碼目錄下面名為*_test.go的文件,生成并運(yùn)行測(cè)試用的可執(zhí)行文件。

關(guān)于“Go語(yǔ)言基礎(chǔ)知識(shí)有哪些”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI