iT邦幫忙

2021 iThome 鐵人賽

DAY 4
0

探討 hello_world.go 背後的一些機制

我們可以透過以下三個問題 hello_world.go 來探討 Go 的背後機制。

  1. package main 是什麼意思?
  2. import fmt 是什麼意思?
  3. func main是什麼?

package main 是什麼意思?

package 主要分成兩種,一種是 executable (可執行的);另外一種則是 reusable(可重複使用的),而 package main 就是指可執行的檔案。

因此包含 package main 的 Go 檔案,透過 go build 操作時(像是 hello_world.go),就會產出一個 hello_world.exe,最終電腦是根據這個 exe 檔案去執行相關操作。

此時假設我們創造一個相加的 package,叫做 calculator,我們就會這樣撰寫成這樣

// calculator.go
package calculator

func addTwoNums(num1 int , num2 int )int {
    return num1+num2
}

這樣的 package name 的話,就不會被 Go 認定為可執行檔,因此即便操作 go build calculator.go,也不換產生執行檔,換言之,電腦不會實際跑內部所寫的程式。

此時如果我們要印出 calculator.go 裡面的結果,可以寫一個可執行檔案,寫上package main,並將相關套件 import 進來,像是以下

package main

import (
    'calculator',
    'fmt'
)
func main(){
    fmt.Println(calculator.addTwoNums(3,4))
}

則可以將相關的 package 拿來使用。

import fmt 是什麼意思?

延續上一題,這邊就相對好懂了,這個 fmt 就是一個 go 的內建標準 package(像是 python module),當我們下載 Go 的時候,就ㄧ併被下載下來了,因此我們可以直接 import 進來使用。當未來內建標準 package 不夠我們用時,我們開始需要下載其他人的 package 來使用時,就要接著講到 GOPATH 跟 go installgo get 了,我們未來會開一篇來討論的~

func main是什麼?

這邊筆者也還沒摸透,但簡單來說,就是包含 package main 的檔案中,最終會被執行的相關程式都需要被放在 func main 裡面才會被執行,如果寫在 func main 外頭,就會有以下報錯內容
syntax error: non-declaration statement outside function body
簡單來說,就是 Go 限制你不能這樣操作。所以 Go 的寫法是這樣,你在 func main 外面,寫下其他的 function,再一併在 main 內執行。如下示範:

package main

import (
	"fmt"
)

func addTwoNums(num1 int , num2 int )int {
    return num1+num2
}

func main() {
    fmt.Println(addTwoNums(3,4))
}

以上,大致上講解到 Go 程式檔是如何運作,以及內部相關專有名詞的用法與限制~
還請各位大大看有沒有理解錯誤,可以給我一些反饋,感謝!


上一篇
Day3 : 從 Hello World 看 Golang
下一篇
Day5 : Golang 的變數
系列文
從零開始學 Golang,開發屬於自己的網頁5
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言