天天看點

緒論

一、緒論

1 Go語言介紹

Go 即Golang,是Google公司2009年11月正式對外公開的一門程式設計語言。

Go是靜态強類型語言,是差別于解析型語言的編譯型語言(靜态:類型固定 強類型:不同類型不允許直接運算)。

解析型語言——源代碼是先翻譯為中間代碼,然後由解析器對代碼進行解釋執行。

編譯型語言——源代碼編譯生成機器語言,然後由機器直接執行機器碼即可執行。

2 Go語言特性

  • 跨平台的編譯型語言
  • 交叉編譯(在win平台可編譯出mac平台的可執行檔案)
  • 文法接近C語言
  • 管道(channel),切片(slice),并發(routine)
  • 有垃圾回收的機制
  • 支援面向對象和面向過程的程式設計模式

3 go适合做什麼

  • 服務端開發
  • 分布式系統,微服務
  • 網絡程式設計
  • 區塊鍊開發
  • 記憶體KV資料庫,例如boltDB、levelDB
  • 雲平台

4 下載下傳和安裝

開發環境:

  • 官網下載下傳位址為:https://golang.org/dl/。
  • 如果打不開可以使用這個位址:https://golang.google.cn/dl/。

IDE:

  • GoLand
  • vscode

5 配置GOPATH和GOROOT

  • GOPATH:代碼存放路徑,該目錄下有三個檔案夾(如果沒有,要手動建立),

    windows和mac預設在使用者名下的go檔案夾(GOPATH="/Users/使用者名/go"),所有代碼必須寫在這個路徑下的src檔案夾下,否則無法編譯,可以手動修改。

-src——源碼(包含第三方的和自己項目的)
-bin——編譯生成的可執行程式
-pkg——編譯時生成的對象檔案
      
  • GOROOT:go開發工具包的安裝路徑,預設:C:\go

    将GOROOT下的bin路徑加入環境變量(預設已處理),這樣任意位置敲 go 都能找到該指令

6 指令介紹

直接在終端中輸入 ​

​go help​

​ 即可顯示所有的 go 指令以及相應指令功能簡介,主要有下面這些:

  • build: 編譯包和依賴
  • clean: 移除對象檔案(go clean :删除編譯的可執行檔案)
  • doc: 顯示包或者符号的文檔
  • env: 列印go的環境資訊
  • bug: 啟動錯誤報告
  • fix: 運作go tool fix
  • fmt: 運作gofmt進行格式化(go fmt :自動将代碼格式)
  • generate: 從processing source生成go檔案
  • get: 下載下傳并安裝包和依賴(go get github.com/astaxie/beego:下載下傳beego架構)
  • install: 編譯并安裝包和依賴(go install 項目名:會将go編譯,并放到bin路徑下)
  • list: 列出包
  • run: 編譯并運作go程式
  • test: 運作測試
  • tool: 運作go提供的工具
  • version: 顯示go的版本
  • vet: 運作go tool vet

6.1 build 和 run 指令

就像其他靜态類型語言一樣,要執行 go 程式,需要先編譯,然後在執行産生的可執行檔案。​

​go build​

​ 指令就是用來編譯 go程式生成可執行檔案的。但并不是是以的 go 程式都可以編譯生成可執行檔案的, 要生成可執行檔案,go程式需要滿足兩個條件:

  • 該go程式需要屬于main包
  • 在main包中必須還得包含main函數

也就是說go程式的入口就是 ​

​main.main​

​, 即main包下的main函數, 例子(test.go):

編譯hello.go,然後運作可執行程式:

$ go run test.go   # 将會生成可執行檔案 test
$ ./test           # 運作可執行檔案
Hello, World!
      

上面就是 go build 的基本用法,另外如果使用 go build 編譯的不是一個可執行程式,而是一個包,那麼将不會生成可執行檔案。

而 ​

​go run​

​ 指令可以将上面兩步并為一步執行(不會産生中間檔案)。

$ go run test.go
Hello, World!
      

上面兩個指令都是在開發中非常常用的。

此外 go clean 指令,可以用于将清除産生的可執行程式:

$ go clean    # 不加參數,可以删除目前目錄下的所有可執行檔案
$ go clean hello.go  # 會删除對應的可執行檔案
      

6.2 get 指令

這個指令同樣也是很常用的,我們可以使用它來下載下傳并安裝第三方包, 使用方式:

go get src
      

從指定源上面下載下傳或者更新指定的代碼和依賴,并對他們進行編譯和安裝,例如我們想使用 beego 來開發web應用,我們首先就需要擷取 beego:

go get github.com/astaxie/beego
      

這條指令将會自動下載下傳安裝 beego 以及它的依賴,然後我們就可以使用下面的方式使用:

package main

import "github.com/astaxie/beego"   # 這裡需要使用 src 下的完整路徑

func main() {
beego.Run()
}
      

7 第一個go程式

// go語言的注釋

/*多行

注釋*/

package main // 聲明包名是main,每一個go檔案都必須屬于某一個包

import "fmt" // 導入内置包

func main() {  // func函數關鍵字,定義main函數 類似c語言,編譯型語言需要有入口函數: main包下的main函數
fmt.Println("hello,world!")  // 列印函數
}
      

bulid指令編譯,再執行exe:

緒論

或者使用run指令,編譯并執行:

go run 1.go