Day4 : Hello World 程序再解析

探讨 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]PHP的资料型态03

>>:  3. 解释 Hoisting

Day 25-制作购物车之设计购物车画面

设计的部分就不多做分析,主要呈现实作成果。 因为太长了,所以分一点过来。 以下内容有参考教学影片,底...

为什麽 CQRS - Why CQRS

为什麽 CQRS - Why CQRS CQRS (Command Query Responsibi...

Day7 Sideproject(作品集) from 0 to 1 - 业务流程

昨天我们决定完功能了 今天来讲讲在正式开写code前 可以做的事情 相信可以让你之後写起来更流畅 虽...

[Day22]Week3总结

在week3里,我们花了两天在学习merkle tree(传送门),看懂了图上的运作流程,也尝试自...

DAY10 - DFS

今天写广度优先搜寻(DFS),与BFS相同,DFS是一种图形搜寻演算法,在解题的时候会用来爆搜的其中...