1. 程式人生 > >【Golang 基礎】Go 語言的程式結構

【Golang 基礎】Go 語言的程式結構

Go 語言的專案結構

   一般,一個 Go 專案在 GOPATH 下,會有如下三個目錄

.        
├── bin   // 存放編譯後的可執行檔案
├── pkg   // 存放編譯後的包檔案
└── src   // 存放專案原始檔

一般情況下,bin 和 pkg 目錄可以不建立,go 命令會自動構建(如 go install),只需要建立 src 目錄即可。

Go 程式的一般結構

// 當前程式的包名
package main

// 匯入其他包
import "fmt"

// 常量的宣告
const _PI float64 = 3.14

// 全域性變數宣告
var title string = "Go 語言學習筆記"
// 一般型別宣告 type newType int // 結構宣告 type Student struct{ } // 介面的宣告 type ILearn interface{ } // 由 main 作為程式入口的啟動點 func main(){ fmt.Println("Hello Golang") }
  • Go 程式是通過 package來組織的(與 python 類似),package是 最基本的分發單位 和 工程管理中依賴關係的體現;
  • 每個 Go 語言原始碼檔案開頭必須擁有一個 pakcage宣告,表示原始碼檔案所屬程式碼包。預設情況下,除 mainpackage包外,其他的包名對應資料夾名稱;
  • 要生成 Go 語言的可執行程式,必須有 mainpackage包,且必須在該包下面有 main()函式;
  • 同一個路徑下只能存在一個 package,一個 package可以拆分成多個原始檔
  • 通過 import關鍵字來匯入其他非 main包;
  • 通過 const關鍵字來定義常量;
  • 通過在函式體外部使用 var關鍵字定義全域性變數;
  • 通過 type關鍵字來進行結構(struct)或介面(interface)的宣告;
  • 通過 func關鍵字來宣告函式;

Go 語言中 import 詳解

  • import語句可以匯入原始碼檔案中所依賴的 package包,匯入包後可以使用 <PackageName>.<FuncName>

    對包中的函式進行呼叫;

  • 如果匯入包之後未呼叫其中的函式或型別將會報編譯錯誤;

  • import可以使用以下兩種方式:

    • 單行匯入
      package main
      
      import "fmt"
      import "os"
      import "time"
      import "io"
    
    • 多行匯入
    package main
    
    import (
      "fmt"
      "os"
      "time"
      "io"
    )
    
    
  • 如果一個 main包匯入其他包,包將被順序匯入;

  • 如果匯入的包依賴其他包(如:包B),會首先匯入包B,然後初始化包B中的常量和變數,最後如果包B中有init函式,將會自動執行 init函式;

  • 所有包匯入完成後才會對 main中變數和常量進行初始化,然後執行 maininit函式(如果存在),最後才會執行 main函式;

  • 如果一個包被匯入多次,則該包只會被匯入一次;

在使用 import匯入 package包時,可以為其設定別名:

  • 自定義別名:
package main

import io "fmt"

func main(){
	io.Println("Hello Golang")
}
package main

import (
	io "fmt"
)

func main(){
	io.Println("Hello Golang")
}
  • 點(.)標識的匯入包後,呼叫該包中的函式時,可以省略報名字首名稱(不建議使用)
package main

import . "fmt"

func main(){
	Println("Hello Golang")
}
  • 下劃線(_)識別符號匯入包時,並不是匯入整個包,而是執行該包中的 init函式,因此無法通過包名來呼叫包中的其他函或屬性。使用下劃線(_)操作通常是未來註冊包裡的引擎,外部可以方便的使用

以上三點不可以同時使用。