是 Google 開發的靜態編譯程式語言,支援垃圾回收與併發,跟 C 的撰寫邏輯相似。要了解 Go 的特性,我們需要拆解何謂靜態語言以及何謂編譯式語言。
簡單來說,靜態語言的意思,就是當你宣告一個變數時,你就需要同時宣告此變數會存放的資料型態為何;反之,動態語言則不需要在宣告變數時,就確定存放的資料型態。
大家比較熟悉的靜態語言有:C、Java、Golang 等,動態則是:JavaScript、Python、Ruby
用一些程式碼來舉例,大家可能也會比較清楚~
// 變數 age 存放 value 3
var age int = 3
age = "jimmy"
// cannot use "jimmy" (untyped string constant) as int value in assignment
## 將 345 放進 age 變數
age = 345
## 將 age 變數改成放 string
age = "jimmy"
從以上兩個例子可以看出來,在 Go 裡面,當變數被賦值時,此變數能存放的資料型態也被定義了,當你改變時,就會給你報錯,反之 Python 則是可以讓你任意更動。
靜態與動態語言各有好處,最主要的差別在於靜態語言是事先定義好資料型態,所以程式在執行時,不需要多花效能來判斷資料型態,可以提升程式的執行速度。而動態語言的好處,則是撰寫簡單,不需要在宣告變數時,就寫定其資料型態,對於新手來說相對簡單好用。
編譯式與直譯式語言最大的差別,在於程式執行的方式不同,
主要的優缺點就跟他們的執行特性相關,可以這樣去理解。
因為編譯式是整包打包轉譯、運算,而直譯是一行一行翻譯再執行所以
因為這次主要是分享學 Golang 特性,關於語言特性的比較我這邊只會簡單到過,其他更多的介紹跟差異,就不在此展開,推薦各位看此篇文章:https://totoroliu.medium.com/%E7%B7%A8%E8%AD%AF%E8%AA%9E%E8%A8%80-vs-%E7%9B%B4%E8%AD%AF%E8%AA%9E%E8%A8%80-5f34e6bae051
有滿詳細的介紹~
今日總結: Golang 是一種編譯式靜態語言,未來我們會在各式程式碼中,發現這些特性的~
好啦,今天就講到這邊,明天見!