1. 程式人生 > >Golang 學習筆記(不定期更新)

Golang 學習筆記(不定期更新)

本文主要記錄作者使用 Go 開發過程中的問題及總結。

1)不同檔案屬於同一個 package,每個 go 檔案如果有 init(), 則全部 init() 會預設執行,根據包的匯入先後及遞進關係來先後執行;同一個檔案可以有多個同名 init 函式,即不會出現重複定義的錯誤
呼叫過程如下圖所示,
init 呼叫過程

示例程式碼:
(1) main.go

package main

import (
    "fmt"
    "test/subpac"
)

func init(){

    fmt.Println("Init(): main.")
}

func main() {
    fmt
.Println("vim-go") var tmp subpac.Subpac fmt.Println(tmp) }

(2) subpac.go

package subpac
import(
    "fmt"
)

func init(){
    fmt.Println("Init(): subpac.")
}

type Subpac struct{

    Name string
}

將會輸出如下資訊:

Init(): subpac.
Init(): main.
vim-go
{}

2) 每個包必須位於單獨的目錄。
比如 1)中的 main.go 屬於 package main,因此位於 main 目錄,而 subpac.go 屬於 package subpac,因此位於 subpac 目錄。