iT邦幫忙

2022 iThome 鐵人賽

DAY 18
0
Software Development

30天學會Golang系列 第 18

Day18 - Go的 package

  • 分享至 

  • xImage
  •  

package

在 Go 中,package 的名稱通常會以小寫命名,且不包含底線或小寫駝峰(小寫駝峰指的是開頭小寫,然後不同的單字的字首用大寫來區隔,小寫駝峰例子如firstName,而大寫駝峰則為FirstName),並且通常會是名詞,如果是由多個名詞組成,中間區隔可用連字號 "-" 來區隔,如 first-name

此外,package 的名稱與資料夾的層級也是有特定的規則:

  • 在同一層級的資料夾中的 package 名稱必須一樣,通常建議與上一層的資料夾名稱相同
  • 如果外部資源要使用該 package 中的函數,字首必須大寫
  • package main 有特別的地位,整支程式中只能擁有一個 main 函數,且會放在 package main 中,執行時會執行 main 函數中的內容

這邊註記一下,變數與函數名稱的大小寫,相當於 c++ 中的 public 與 private,如果該名稱是小寫開頭,就只有該檔案可引用,字首為大寫則是其他檔案也可使用,下面用一個簡單的例子作為範例,可以參考該結構

https://ithelp.ithome.com.tw/upload/images/20220929/20150797cgqlIafkbl.png

在 people 的資料夾裡面我們放了一個 people-list.go 的檔案,其內容如下:

package people // 建議與資料夾同名

var People = [...]string{"Peter", "Ted", "Judy"}

在 say 的資料夾裡面我們放了一個 say-hi.go 與 say-words.go 的檔案,其內容如下:

package say // say-hi.go file

import "fmt"

func SayHi() {
	fmt.Println("say hi")
}
package say // say-words.go file

import "fmt"

func SayWords(person, word string) {
	fmt.Printf("%s say %s \n", person, word)
}

main.go 則放在最外層

package main

import (
	"it/day18/people"
	"it/day18/say"
)

func main() {
	say.SayHi()

	people := people.People
	for i := range people {
		say.SayWords(people[i], "hello")
	}
}

輸出結果為:

say hi
Peter say hello 
Ted say hello 
Judy say hello 
第18天報到,這部分之前撞了一點小牆,跟之前打程式碼的習慣不太一樣,但我覺得這種分層方式確實比較清楚,還不錯

參考來源

  1. https://pjchender.dev/golang/modules-and-packages/

代碼連結

https://github.com/luckyuho/ithome30-golang/tree/main/day18


上一篇
Day17 - Go的 Select
下一篇
Day19 - Go的正則表達式
系列文
30天學會Golang31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言