我们可以透过以下三个问题 hello_world.go
来探讨 Go 的背後机制。
package main
是什麽意思?import fmt
是什麽意思?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 install
和 go 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 程序档是如何运作,以及内部相关专有名词的用法与限制~
还请各位大大看有没有理解错误,可以给我一些反馈,感谢!
设计的部分就不多做分析,主要呈现实作成果。 因为太长了,所以分一点过来。 以下内容有参考教学影片,底...
为什麽 CQRS - Why CQRS CQRS (Command Query Responsibi...
昨天我们决定完功能了 今天来讲讲在正式开写code前 可以做的事情 相信可以让你之後写起来更流畅 虽...
在week3里,我们花了两天在学习merkle tree(传送门),看懂了图上的运作流程,也尝试自...
今天写广度优先搜寻(DFS),与BFS相同,DFS是一种图形搜寻演算法,在解题的时候会用来爆搜的其中...