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

Go 語言的項目結構

   通常,一個 Go 項目在 GOPATH 下,會有以下三個目錄python

.        
├── 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 可使用如下兩種方式:學習

    • 單行導入code

      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 函數,所以沒法經過包名來調用包中的其餘函或屬性。使用下劃線(_)操做一般是將來註冊包裏的引擎,外部能夠方便的使用

以上三點不能夠同時使用。string

相關文章
相關標籤/搜索