go-學習筆記

來源:互聯網
上載者:User

2018年6月30日

基礎命令

  1. go build 用於編譯源碼檔案、程式碼封裝、依賴包

可執行檔路徑為 $GOPATH/bin

  1. go run 編譯並運行go源碼檔案
  2. go get 動態擷取遠程程式碼封裝

系統關鍵字或保留字

1,保留關鍵字

break default func interface select
case defer go map struct
chan else goto package switch
const fallthrough if range type
continue for import return var

2, 預定的標識符,包括基礎資料類型和系統內嵌函數。

append bool byte cap close complex
complex64 complex128 uint16 copy false float32
float64 imag int int8 int16 uint32
int32 int64 iota len make new
nil panic uint64 print println real
recover string true uint uint8 uintprt

3,內嵌資料類型

  • Boolean類型:

    • 系統為此類型定義了兩個常量:true 和 false.

    • 初始預設值為:false。

    • 格式化輸出時的格式字串為:%t。

    • 執行個體代碼:

      • image
    • 輸出結果為:

      • flag1 = true
      • !flag1 = false
      • GlobalFlag = true
      • (flag1 && flag2) = false
      • (flag1 || flag2) = true
  • Byte類型:

    • 為uint8的別外,即只有8個bit。
  • 數字類型:

    • 整數類型:
      • 有符號整數:int8, int16, int32, int64和int(此類型會根據特定的平台可能會有所不同)

      • 不帶正負號的整數:uint8, uint16, uint32, uint64和uint (此類型會根據特定的平台可能會有所不同)

      • 初始預設值為:0。

      • 格式化輸出時的格式字串為:%d,輸出16進位:%x或%X;8進位:%o。

      • 執行個體代碼:

        • image
      • 輸出結果為:

        • i8=9, i=27, ui32=30, ui64=40, defInt=0

        • i8=11, i=1b, ui32=1E, ui64=101000

        • The value=27, The Address=0x117d0238

    • 浮點類型:float32 和 float64
      • 初始預設值為:0.0。

      • 注意:這裡沒有float的類型,且兩個浮點數比較時不能使用== 和 !=

      • 格式化輸出時的格式字串為:%g,%f則對應浮點類型的指標;%e則對應科學計數法辦輸出;%n.mg用於指定小數位輸出。

      • 執行個體代碼:

        • image
      • 輸出結果:

        • f32 = 2.054545, f64=4.054544925689697, default=0
        • f32 = 2.05
    • 複數類型:
      • complex64:實數與虛數都是32位

      • complex128: 實數與虛數都是64位

      • real(c):擷取實數部分

      • imag(c):擷取虛數部分

      • 格式化輸出時的格式字串為:%v, 另外也可以使用%f輸出實部和虛部。

      • 執行個體代碼:

        • image
      • 輸出結果:

        • The com1=(2+3i), The com2=(3+4i)
        • The com2=(5+7i)
        • The real of com2=5, The imag of com2=7
  • 字元類型:

    • 嚴格的說,在Go中沒有此類型類型,它是特殊的整數類型。
    • 它對應uint8類型,對傳統的ASCII碼對應,佔1byte。
    • 同時也支援Unicode(UTF-8)的編碼,所以它可能點多個byte,被稱為Unicode code points或runes。此時它對應的int32的數字類型。
    • 包含在單引號中。
    • Unicode的字元通常以16進位的形式表示(\u+4或\U+8)
    • 格式化輸出時的格式字串為:%c;%v或%d則顯示對應的整數值;%U則輸出:U+hhhh
  • 字串類型:

    • 一串UTF-8編碼格式的字元(可能佔1~4byte)---- Java中的字元都是佔2bytes。
    • 包含在雙引號中,只能在獨立的一行內。(Interpreted string)
    • 包含在反引號中,可以跨越多行。(raw string)
    • 註:Go所有的代碼都是UTF-8格式,所以不存在對字元進行編碼和解碼。
    • 它是不可變的實值型別,所以不能直接修改字串。
  • 指標類型:

    • 佔4byte大小。
    • 各種資料類型都有對應的指標類型。
    • 聲明方法類似於C中對指標的聲明: *type。

4 操作符

  • 邏輯運算子:
    • 與:&&,或:||,非:!。
    • ==,!=,<,>,<=,>=
  • 位元運算符:
    • 只能工作在int類型的變數上。
    • 按位與:&,按位或:|,按位異或:^
    • 左移:<<,右移:>>。(空位補0)
  • 算術運算子:
    • +,-,*,/。
    • 模數:%
    • 簡化操作:-=,*=, +=, %=
    • ++, --。(只能在數字變數的後面,不能放在開頭,這是與C,Java不一樣的地方)。
  • 優先順序:(7 -> 1:由高到低)

全域變數
在func 之外
局部變數
在func之內

源碼檔案模板

package main// 程式所屬包import "fmt"//匯入依賴包const NAME string = "SoulMO"//定義常量var a string = "Golang學習"//聲明全域變數及賦值type GoLearntInt int//一般型別宣告type Learn struct{}//結構體聲明type ILearn interface {    }//聲明介面func GoLearn()  {    fmt.Println(a,"learn Golang")}//定義函數func main() {    GoLearn();    fmt.Println(a,"Hello ~")}// main函數

基礎文法

1, package

  • package 是最基本的分發單位和工程管理中依賴關係的體現
  • 每個GoLang原始碼檔案開頭都擁有一個package 聲明,表示原始碼檔案所屬程式碼封裝
  • 產生GoLang可執行程式,必須要有main的package包,且改包下必須有main()
  • 同一路徑下只能存在一個package,一個package可以由多個原始碼檔案組成

package 包名為當前檔案夾名,避免混淆

2,import

  • import根據順序匯入
    函數名必須大寫開頭

3類型零值
實值型別 預設為 0
布爾類型 預設為 false
string 預設為 Null 字元串

3,參數聲明初始化及賦值
變數聲明格式
var <變數名稱> [變數類型]
變數賦值格式
<變數名稱> = <值,運算式,函數等>
變數聲明並賦值格式
var <變數名稱> [變數類型] = <值,運算式,函數等>
分組聲明格式

var(  i int  j float32  name string)

單行 聲明多個變數和賦值
var a, b, c int = 1, 2, 3或者a, b := 1, 2
全域變數聲明必須用var,局部變數可省略
特殊變數 底線“_”;
若將值賦給 “_” 則代表 值被銷毀,接下來的操作將無法調用該值

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.