iT邦幫忙

2022 iThome 鐵人賽

DAY 4
1
自我挑戰組

跟著 Go 實戰聖經 一起自學 Go系列 第 4

DAY 4 Go 語言 用短變數宣告變數 (variables) 及更改變數值

  • 分享至 

  • xImage
  •  

昨天我們學習了最基礎的用 var 宣告一個或多個變數 (variables) ,以及可以省略型別或是初始值,今天立馬學習用短變數宣告、一次宣告多個變數以及如何更改變數值吧!

4.短變數宣告

若是在函式 (function) 內宣告變數(包括 main() ),可以用 := 的簡寫來宣告變數,此種宣告方法也可以稱為短變數宣告( short variable declaration ),跟一般宣告變數有三個差異:

  1. 只有在函式 (function) 內才可以用
  2. 必須給予初始值
  3. 省略關鍵字 var
<變數名稱> := <初始值>

範例6:

package main

import (
    "fmt"
    "time"
)

func main() { 
    isRain := false
    month := "September"
    today := time.Now()
	fmt.Println(isRain, month, today)
}

範例6 執行結果:

false September 2022-08-07 23:51:18.987907 +0800 CST m=+0.000220876

補充:
短變數宣告在 Go 語言中是最常見的變數定義方式,他可以讓程式碼看起來更短更精簡。

5.用短變數宣告多個變數

我們可以把上方範例6三種用短變數宣告的程式碼,再更精簡成一行寫完,若想用短變數宣告多個變數時,需注意變數數量必須等於初始質數量

<變數名稱 1>, <變數名稱 2>, ... , <變數名稱 N> := <初始值 1>, <初始值 2>, ... , <初始值 N>

範例7:

package main

import (
    "fmt"
    "time"
)

func main() { 
    isRain, month, today := false, "September",time.Now()
	fmt.Println(isRain, month, today)
}

範例7 執行結果:

false September 2022-08-07 23:51:18.987907 +0800 CST m=+0.000220876

雖然此種方法閱讀性比較沒那麼直觀,但若是需要呼叫要回傳多個值的函式時,就有可能會遇到此種寫法。

6.在單行程式內,用 var 宣告多重變數

若我們需要一次宣告多個同型別,或是一次宣告多個同初始值的變數時,可使用 var 宣告多重變數

var <變數 1>, <變數 2>, ... , <變數 N> <型別>
var <變數 1>, <變數 2>, ... , <變數 N> = <初始值>

範例8:

package main

import (
    "fmt"
    "time"
)

func getWeatherDate() (bool, string, time.Time) {
    return false, "September",time.Now()
}

func main() { 
    // 只提供型別
    var start, middle, end float32
    fmt.Println(start, middle, end)

    // 不同型別的初始值
    var name, left, right, top, bottom = "krystal", 1, 1.5, 2, 2.5
    fmt.Println(name, left, right, top, bottom)

    // 也可以呼叫其他函式
    var isRain, month, today = getWeatherDate()
	fmt.Println(isRain, month, today)
}

範例8 執行結果:

0 0 0
krystal 1 1.5 2 2.5
false September 2022-08-08 00:24:55.390563 +0800 CST m=+0.000150404

7.也可以使用非英語作為變數名稱

Go 語言支援 UTF-8 編碼,所以若是想用中文、日文、韓文等,來作為變數名稱都是可以的,但要特別注意:首字字母起頭必須是 字母 或是 底線_

範例9:

package main

import (
    "fmt"
    "time"
)

func main() { 
    我的名字 := "krystal"
    나이 := 18
	fmt.Println(我的名字, 나이)
}

範例9 執行結果:

krystal 18

如何更改變數值?

在學會了以上的變數宣告方法後,讓我們來學習如何更改單個及多個變數值吧!

更改單一變數值

我們利用範例來看看,如何將變數從初始值改為另一個值

範例10:

package main

import (
    "fmt"
)

func main() { 
    age := 18
	fmt.Println(age)

    age = 20 // 將 age 從 18 改為 20 
    fmt.Println(age)
}

範例10 執行結果:

18
20

一次更改多個變數值

一次更改多個變數值,其實也大同小異,就是使用逗號做分隔,直接透過範例來看看吧!

範例11:

package main

import (
    "fmt"
)

func main() { 
    // 宣告多個變數且賦予其初始值
    isRain, month, day := false, "September", 3
    // 一次更改多個變數值
    isRain, month, day = true, "July", 8

	fmt.Println(isRain, month, day)
}

範例11 執行結果:

true July 8

雖然一次更改多個變數值,可以減少很多程式碼,但考量到程式碼的易讀性,有時候寫成三行,或許會更讓看的人一目了然喔!

範例12:

package main

import (
	"fmt"
)

func main() { 
    // 宣告多個變數且賦予其初始值
    isRain, month, day := false, "September", 3
    // 有時一一更改變數值,可提高程式碼的易讀性,讓看的人一目了然
    isRain = true
    month = "July"
    day = 8

	fmt.Println(isRain, month, day)
}

範例12 執行結果:

true July 8 // 與範例 11 結果相同

補充:
正常來說,不能對已經宣告過的變數,再使用短變數宣告賦值,除非短變數左側有多重變數,且其中有一個或以上是之前沒有的新變數,那就可以對已經宣告過的變數,再使用短變數宣告賦值呦!

今天介紹了完整的變數宣告,明天再繼續介紹在 Go 中的算符(operators)是什麼,那我們明天見!


上一篇
DAY 3 Go 語言 用 var 宣告變數 (variables)
下一篇
DAY 5 Go 語言 算符 (operators) 及零值 (zero values) 的介紹
系列文
跟著 Go 實戰聖經 一起自學 Go30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言