tags |
---|
Golang魔法使 |
這次小櫻前往{水族館|aquarium}校外教學,卻不幸遇到可惡的「字串」Golang牌,導致水族館員和企鵝差點被淹死,小櫻的哥哥恰好在這裡打工,縱身一躍跳進水池解救了大家,像這樣
要如何把這個囂張的 Golang 牌繩之以法呢?「知己知彼百戰百勝」,螢幕前小櫻的工具人,一起來了解字串 Golang 牌的運作吧!
在了解字串前我們必需先了解什麼是字元,字元其實就是指「單一一個字」,這個字也是由數字所組成,在 Go 語言中是以 UTF-8 來做為字元的編碼方式,舉個例子,小櫻的「小」在是以 23567 的二進位來儲存「櫻」則是以 27387 的二進位來儲存
要宣告一個字元我們會用 rune
(中文:符文)來表示,rune
跟 int32
是一樣的東西
package main
import "fmt"
func main(){
var a rune = '小' // 以單引號包住字元
var b rune = '櫻'
fmt.Println(a)
fmt.Println(b)
}
執行結果: 23567 27387
為什麼會這樣?
因為 rune
就是 int32
,通過 fmt.Println
當然會把他當作數字來做處理,如果我們要以「文字」印出,則必需使用 fmt.Printf
, printf
指的就是 print
+ format
,format
(格式)決定要以什麼形式印出,使用方法如下:
package main
import "fmt"
func main(){
var a rune = '小'
var b rune = '櫻'
fmt.Printf("%c", a)
fmt.Printf("%c", b)
}
其中的 %c
就是告訴魔仗我要印字元出來,至於要印哪個字元呢?則是看 ,
後面第一個變數
執行結果: 小櫻
當然也可以用 %c %c
他會依序對應 ,
後面的變數
package main
import "fmt"
func main(){
var a rune = '小'
var b rune = '櫻'
fmt.Printf("%c%c", a, b)
}
執行結果: 小櫻
另外常用的還有
%d
,%f
,%s
%c
的 c 是指 character 以字元印出
%d
的 d 是指 decimal 以十進位印出
%e
的 e 是指 exponent 以科學計號方式印出
%f
的 f 是指 float 以浮點數印出
%s
的 s 是指 string 以字串印出
%%
是用來印出 %
當我們使用 '小'
這個用法時,電腦會直接把他視為 23567
你甚至可以試試把 '小'
減去 23566
讓他變成 1
package main
import "fmt"
func main(){
var a rune = '小' - 23566
fmt.Printf("%d", a)
}
執行結果: 1
'小' - 23566
對於Go語言來說會直接視為 23567-23566
比如:fmt.Printf("%d", a)
則視為 fmt.Printf("%d", 1)
相信大家都知道字元是什麼了,「字元不過就是個數字」,那「字串」呢?字串其實就是一串「字元」。(詳細原理會再後續課程說明)
字串怎麼使用呢?舉個例子大家應該就懂了!
package main
import "fmt"
func main(){
var release string = "封印解除"
release2 := "レリーズ"
fmt.Println(release)
fmt.Println(release2)
}
執行結果: 封印解除 レリーズ
如同整數一樣,字串也元運算符號,也就是「加法」,在資訊科學(魔法科學)中稱為 concatenate
package main
import "fmt"
func main(){
str1 := "隱藏著黑暗力量的鑰匙啊"
str2 := "在我面前顯示你真正的力量"
fmt.Println(str1 + str2)
}
執行結果: 隱藏著黑暗力量的鑰匙啊在我面前顯示你真正的力量
如果我們只是要印出數字可以用 Printf 來印出
法一:Printf
package main
import "fmt"
func main(){
sakura := "小櫻今年"
grade := "年級"
fmt.Printf("%s%d%s", sakura, 4, grade)
}
執行結果: 小櫻今年4年級
法二:Print
package main
import "fmt"
func main(){
sakura := "小櫻今年"
grade := "年級"
fmt.Print(sakura, 4, grade)
}
執行結果: 小櫻今年 4 年級
fmt.Print(sakura, 4, grade)
可以視為
fmt.Print(sakura)
fmt.Print(" ")
fmt.Print(4)
fmt.Print(" ")
fmt.Print(grade)
以上提到的方法都是直接印在螢幕上(標準輸出 standard output)。那有沒有方法直接將結果印在變數裡?
法三:使用 Sprintf
package main
import "fmt"
func main(){
sakura := "小櫻今年"
grade := "年級"
result := fmt.Sprintf("%s%d%s", sakura, 4, grade)
fmt.Printf(result)
}
這個用法會將原本應該印出於螢幕上的字串印在變數 result 當中
如果今天我是想把 "4"
(字串) 轉成 4
(整數)那要怎麼轉呢?
其實這個可以把字串拆成字元再用字元去做運算,但是剛剛就說了,依現在各位魔法使的實力,還不夠,所以我們就先跳過吧!
Go 語言常用的印出方法可以簡單分為三種 fmt.Print
, fmt.Println
, fmt.Printf
其中,fmt.Println
與 fmt.Print
差不多,只是 fmt.Println
會在每次印出時都會在行尾做換行。fmt.Printf
可以指定以哪 format 印出,而其他兩者都是以預設 format 印出
這部分2021年被我刪減掉一些,感覺之前教太難:smile:
圖片大多來自:庫洛魔法使第一季第三集以及庫洛魔法使第一季第四集