iT邦幫忙

2023 iThome 鐵人賽

DAY 3
0

上一篇有提到,近期實作的專案幾乎都是使用go這個語言,主要是因為發現越來越多的專案都在使用這個語言,像是Google、Uber和Dropbox等公司都開始使用這個語言開發,趁這次鐵人賽來研究一下為什麼那麼多公司都使用這個程式語言。

Build simple, secure, scalable systems with Go

上面這個標題是Go(後文稱Go為Golang,因為每次看到這個語言都會想到圍棋⚫️⚪️)網站的標題,可以看得出來Golang主打的是可以建立一個簡單、安全又可以擴展的系統,但要怎麼利用這個程式語言做到這些?先讓我們來看看Golang主打的Feature有哪些

  • 這是一個Google support的程式語言
  • 學習曲線不難(要確定誒)
  • Concurrency (並行性)和Robustness(穩健性,翻譯魯棒性的人到底是誰😡)的內建Library
    • Concurrency:同一個系統有多個處理程式可以協助運算,像是Multi-Thread就是一個例子
    • Robustness:程式語言處理錯誤或輸入錯誤的能力,這樣也能夠方便工程師Debug
  • 有龐大的社群或工具來支援這個程式語言,這樣對於開發者來說會方便很多
  • Garbage collection:Golang會自動控管Memory,所以不用去擔心Memory的釋放
  • Fast compile times:這一點是我在geeksforgeeks上面看到的,說golang的編譯速度很快,可以方便開發(我的經驗是如果是windows在vscode上面開發編譯的速度會慢到一個誇張,mac的話相對好一些,如果後續有優化的話就當我沒說🤪)
  • Cross-platform support:這個語言在不同的OS上都可以編譯,但編譯速度可能就要看用什麼OS了
  • Strong typing:也就是說在寫code的時候就會知道錯誤在哪邊,而不是編譯後才知道錯誤在哪邊(這邊也提供一個經驗,如果在code中使用的套件在編譯的時候才會知道錯誤在哪邊,例如說uber/dig,那這個特性就會部分失效)

Golang Install

這邊簡單說一下要怎麼安裝Golang,由於我的電腦是Mac,因此我幾乎都會使用Mac來講解操作

在Mac中,要安裝Golang只要到官網去找下載點就好了

裝好後,打開Terminal,執行以下指令

go version

沒有出現error的話就代表說裝好了

The package installs the Go distribution to /usr/local/go. The package should put the /usr/local/go/bin directory in your PATH environment variable. You may need to restart any open Terminal sessions for the change to take effect.

官網中的文件中有提到,下載好之後要確定PATH這個變數是不是/usr/local/go/bin這個位置,要確定的話裝好Golang之後下這行指令

go env | grep PATH

就可以確定現在PATH的路徑了

VSCode Setting

這邊稍微分享一下我在VSCode中裝的Golang套件

https://ithelp.ithome.com.tw/upload/images/20230918/201408690MTIyaYTNb.png

基本上這個Extension裝好就該裝的都有了😂

裡面有包含讓vscode支援golang,golang的測試等等的套件,建議可以安心服用

Hello World

該裝的裝好後,不免俗的還是要來執行一下Hello World

package main
 
import "fmt"
 
func main() {
    fmt.Println("Hello, World!")
}

理論上這樣的code就會印出

Hello, World!

但我這邊講一下我遇到的問題

https://ithelp.ithome.com.tw/upload/images/20230918/20140869wGh2XKrQVN.png

當我在VSCode貼上這串code的時候,package main 底下有紅線,詳細看錯誤訊息為

Error Message
gopls was not able to find modules in your workspace.
When outside of GOPATH, gopls needs to know which modules you are working on.
You can fix this by opening your workspace to a folder inside a Go module, or
by using a go.work file to specify multiple modules.
See the documentation for more information on setting up your workspace:
https://github.com/golang/tools/blob/master/gopls/doc/workspace.md.go

至於為什麼會出現這個問題就讓我明天再解釋吧

Reference


上一篇
Day 2 筆記軟體及想法
下一篇
Day 4 Go語言介紹 vol.2
系列文
行事曆不再NG:Notion API&Google Calendar跨平台整合發想30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言