[前言]
了解"基本型別"與"變數宣告"是開始學習程式語言的第一步。我們其實不需要一次把所有的觀念與知識都學到位,這對於初學者或是小朋友來說太過於複雜,這裡就先介紹比較常見的部分。
這篇的教學還不需要用到本機上安裝的Go來執行,我們會用 The Go Playground (網頁版)來練習。
[變數宣告]
在電腦的世界中,每個程式都需要在記憶體中儲存一些資料,資料被儲存在特定的記憶體位置,變數只是為儲存資料的記憶體位置所取的一個方便的名稱。除了名稱外,每個變數還有關聯的型別。型別用來定義存放的資料是屬於何種型態,像是整數或是字串等等,在後面的段落將說明何為資料型別。
我們先看一個例子: var myScore int = 100,並參考下圖
圖1: 變數宣告
在圖1 之中,說明剛剛的例子,宣告一個變數名稱為myScore,其為整數(int)型別,並且初始化給予一整數值 100。
如果覺得很難理解圖1所表達記憶體位置的意思,沒有關係的! 這不會影響目前學習,就暫時知道有這件事就好~
在 Golang 中,使用 var 關鍵字我們有好幾種方式宣告變數
注意: 此方式常用在函數之外的位置,屬於全域變數
1. 使用 var 關鍵字來宣告變數,例如:
var myScore int = 100
2. 使用 var 關鍵字來宣告多個變數,例如:
var myScore1, x1, y1 int = 100, 10, 50
3. 使用 var 關鍵字與小括號來宣告多個變數,例如:
var (
myScore2 int = 100
x2 int = 10
y2 int = 50
)
func main() {
...
}
注意: 在宣告變數時若不給值,則Golang編譯器會提供初始值為零值
在 Golang 中,我們也可以不使用 var 關鍵字來宣告變數,這種方式稱為變數短宣告 (我個人稱之為懶人法),就是在等號前多一個冒號。哪你會問: 型別如何決定? 型別由等號右邊的資料或是回傳值型別決定。
注意: 變數短宣告不能在function函式外使用。
我們來改寫之前的例子:
myScore := 100
myScore1, x1, y1 := 100, 10, 50
myScore2 := 100
x2 := 10
y2 := 50
[常數宣告]
當我們了解了變數宣告之後,常數宣告便更能理解,簡單的來說,被宣告的常數名稱所賦予的值不能再被更動,例如:
const myScore int = 100
const myScore1, x1, y1 int = 100, 10, 50
const (
myScore2 int = 100
x2 int = 10
y2 int = 50
)
注意: 在宣告常數後,常數的值不能再被更改
[基本型別]
Go語言已經包括了一些預先定義型別(Pre-declared Type),這裡先介紹常見的,包括了布林、數字與字串型別。這些型別是會影響了未來在變數宣告時,此變數可存放的資料。以剛剛之前介紹的變數宣告的例子,myScore 就不能賦予 非整數的資料,例如: myScore = "Danny",在程式執行就會失敗。
- 布林型別
名稱為 bool,只有兩個預先定義的常數 true 與 false,我們會用布林型別大都是在條件判斷的時候使用,例如:
if isEmpty == true {
// do something
}
- 數字型別
為整數與浮點數的集合。對於整數來說,只要先知道int部份即可,使用數值可使用的範圍如下表的int所示
參考: 整數支援無號與有號整數,名稱分別為 uint 與 int,int 長度會與 uint 相同,而 uint 長度視平台實作而異,可能是 32 位元或是 64 位元。
uint8 | 0 ~ 255 |
uint16 | 0 ~ 65535 |
uint32 | 0 ~ 4294967295 |
uint64 | 0 ~ 18446744073709551615 |
int | -9223372036854775808 ~ 9223372036854775807 |
int8 | -128 ~ 127 |
int16 | -32768 ~ 32767 |
int32 | -2147483648 ~ 2147483647 |
int64 | -9223372036854775808 ~ 9223372036854775807 |
浮點數有兩種型別,分別為 float32、float64,可使用數值範圍如下表所示:
float32 | 0 ~ 340282346638528859811704183484516925440.000000 |
float64 | 0 ~ 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.000000 |
- 字串型別
Go 的字串 string 在實作上使用 UTF-8(一種編碼方式,可以先忽略其意義),當使用雙引號包裹一系列文字,會產生字串型別。
例如宣告一個字串變數 danny,並且給值 "大豬豬"
var danny string = "大豬豬"
No comments:
Post a Comment