• Facebook - White Circle
  • Twitter - White Circle
  • Instagram - White Circle

© 2019 J-all All Rights Reserved.

J-all

JOIN,

JOYFUL,

JAPAN

J-all Evessa
  • J-all

Go Lang (3) - Package & Module



今日想講下Package 同Module。


現實世界中,你嘅program 總唔能夠一個file 過,所以要開始拆細佢。


如果你只係分唔同file,咁你只需要將啲code 放喺同folder 唔同file。

* 點解要放同一個folder? 因為放唔同folder 就會變咗做另一個package。

我地睇下以下例子:


////////// [project root]/main.go

package main


import "fmt"


func main() {

total := sum(1, 2)

fmt.Print(total)

}


func sum(a int, b int) {

return a + b

}

//////////


我地可以拆做兩個file:


////////// [project root]/main.go

package main


import "fmt"


func main() {

total := sum(1, 2)

fmt.Print(total)

}

//////////


////////// [project root]/calculate.go

package main


func sum(a int, b int) {

return a + b

}

//////////


你可以想像成Go 會將同一個package 嘅唔同file concat 埋一齊。


如果你想分埋folder,咁就要用Module。


方法其實都係非常簡單:

go mod init XXXXXXXXX

其中XXXXXXXX 係你自定義嘅module 名。我通常都用local-project。


init 會create go.mod 同 go.sum,裡面係你會用到嘅open source library同你嘅internal package。


由於分咗folder,所以folder 入面嘅file 就要under 另一個 package。


用返上面個example

////////// [project root]/main.go

package main


import (

"local-project/calculate"

"fmt"

)


func main() {

total := calculate.Sum(1, 2)

fmt.Print(total)

}

//////////


////////// [project root]/calculate/sum.go

package calculate


func Sum(a int, b int) {

return a + b

}

//////////


要留意返

1. sum.go 個package 唔再係main。

2. sum.go 嘅 Sum 係大楷開頭。


1 係因為要唔同package。

2 係因為Sum 要俾外面access 嘅話,要將個 Function Export,等其他package 可以access到。而Export 一個 Function 嘅方法就係Function 第一個字係大楷。


今日講住咁多先。

下次繼續。

4回の閲覧