因為有其他語言的經驗,不用從變數、型別、for loop 這樣慢慢學下去,跟 AI 討論了一下,我應該從 Go 的思維模式與生態學起,這時候官方的 A Tour of Go 就派上用場了,不免俗的得先哈囉世界一下。
hello.go
package main
import "fmt"
func main() {
fmt.Println("Hello, world!")
}
[Running] go run "d:\Program FIles\GoNote\hello.go"
Hello, world!
然而一開始就卡住了,這個 package main 是什麼? 為什麼底下的程式完全沒有用到 package main 這行敘述?
一開始以為是 PHP 的 namespace,但看了一下 .go 的簡化執行流程,這個 package 管的東西看起來又比 namespace 多得多...
package main → func main() → 你的程式開始跑
查了好久,似懂非懂的,只能先以自己的語言統整:
以下是 GPT 給出的補充:
import "module_name/subfolder_name"
「其中同個資料夾內的檔案最好屬於同一個 package」,有一種以前開發時必須用資料夾區分套件的做法直接被官方採用的感覺,看來我跟 Go 會很合得來。
最後一句話收斂:
Go 的 package 是「編譯單位 + 命名空間」,main package + main() 是程式入口,其他 package 必須 import 才能使用,init() 會自動執行,其它函式則需手動呼叫。
還以為第二天就會把語法學的差不多了,沒想到開頭一個 package 直接把我搥回地上...