iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 4
3
Software Development

Go繁不及備載系列 第 4

# Day04 寫程式之前,GO這些很重要

Day04 寫程式之前,GO這些很重要

要注意的是,因為Go語言很新,比你我年紀都還小(應該吧?)
每次推新的版本時,很常出現實驗性的功能、套件。
例如:
v1.5版本時推出Vendor套件 來管理套件
v1.11版本出現Go Modules(Go Mod) 方式來管理套件
所以在網路上尋找解答時,一定要注意該篇文章用的是哪個版本。

(初學、第一次看 不一定馬上懂,寫過一些小程式回過頭再看一次更有感覺)

比寫程式還重要的事

  • 一個專案(Project)可以由多個包(Package)組成
  • 一個包(Package)可以有多支程式(.go file)
  • 同一個包(Package)底下的程式(.go file)彼此全域變數及函式可以互見,就像在同一支程式裡一樣
  • 包(Package)的名稱 為包所在的資料夾名稱
  • 一個程式(.go fle)只能屬於一個包(Package)
  • 一個程式(.go fle)可以有多個變數、函式(function)
  • 程式(.go file)的名稱 不一定要等同於資料夾或包(Package)的名稱
  • 一個專案中一定會有一支(或多支)主程式(package main)
  • 主程式(package main)代表我們可以主動 go run 執行這包程式
  • 主程式裡面一定要有
    1. package main
    2. func main()
  • func main(){}就是執行專案時程式的進入點

簡單來說,
Project(專案) > Package(程式包) > .go file(程式檔) > Function(函式)

一個子資料夾內的程式都是同一個Package
同一個Package都在同一個子資料夾內
同一個資料夾(Package)內的函式、結構及變數互通

當然你不要這樣放(有些情況)也是可以,但是慣例、官方範例、各大套件都是這樣放

  • 變數、函式、結構大寫開頭代表對外暴露,就是Public
  • 也就是說小寫開頭為Private
  • 換個角度想,func main()、func init()(之後會看到) 都是在這個當前的Package裡執行,所以會是小寫啦。

本宅心法傳授(好噁?!)

之前在學習其他程式語言階段,都是直接上網Google用法,搜尋結果出來中英文的教學都有,但當然有中文就看中文。
但在開始碰Go之後,用到的任何函式、Github上的套件、基本上就是看官方文件了,尤其README.md一定要看,通常會有安裝步驟及套件基本用法。
因為等到有中文翻譯可能是兩三個月之後,而屆時的版本可能又有更動,
且網路上的教學不一定正確,官方的文件比較可靠(...官方文件也不一定百分之百正確,之前就有用過 程式碼更新、文檔或範例程式卻沒有一併更新的)
連官方文件都不一定可靠,那該怎麼辦?
別擔心,這種狀況少之又少,但100%可靠的是 直接Trace Source Code,看套件程式怎麼寫、就怎麼套著用。
甚至有時候直接看程式碼、比落落長的文字敘述,表達的意思還要更佳流暢。
這也是推薦使用Goland IDE的主要原因之一,對著程式碼的語法按下Command+左鍵(或Ctrl+左鍵)就能追蹤這個用法的來源程式哩。


上一篇
# Day03 IDE-Go必先利其器
下一篇
# Day05 開寫程式Go ,變數宣告前方小坑
系列文
Go繁不及備載35
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
阿展展展
iT邦好手 1 級 ‧ 2020-10-03 15:18:54

說不定有2009之後出生的程式設計師阿 (倒

gjlmotea iT邦研究生 5 級 ‧ 2020-10-03 22:44:33 檢舉

應該也是有啦 哈哈哈

我要留言

立即登入留言