格式化輸出,用法跟C語言的printf一樣https://play.golang.org/p/neZ-dtxckJb
a := 10fmt.Printf("a: %d ", a)常用到的格式化輸出輸入參數
%d: digit (10進位的數字)%c: char (字元)%s: string (字串)%v: value (值)%+v 見下方%#v 見下方參數 v 三者的差異:https://play.golang.org/p/UKM5CGI-AsR
type Name struct {A stringB boolC int}func main() {fmt.Printf("%v ", Name{})fmt.Printf("%+v ", Name{})fmt.Printf("%#v ", Name{})}// { false 0}// {A: B:false C:0}// main.Name{A:"", B:false, C:0}用於查看物件結構時,非常方便使用
【fmt.Print】【fmt.Println】兩者與fmt.Printf相比,差在不能印格式化輸出Print與Println兩者主要差在ln多了一個換行(new line)
跳脫字元" "雙引號 內可跳脫字元 等 ` `重音符 內則保留原始字串https://play.golang.org/p/cmwxIvITZhi
func main() {fmt.Print(" ")fmt.Print(` `)}/* result: */來比較一下這些Outputhttps://play.golang.org/p/PgwCHCQzT5A
func main() {a := 10fmt.Printf("a: %d ", a)fmt.Println("a: ", a)s1 := "I"s2 := "am"s3 := "string"fmt.Printf("%s%s %s ",s1, s2, s3)fmt.Println(s1 + s2 + s3)fmt.Println(s1, s2, s3)fmt.Println("========")fmt.Print(s1 + s2 + s3)fmt.Print(s1, s2, s3)}/* result:a: 10a: 10Iam stringIamstringI am string========IamstringIamstring*/另外,在一些環境中,輸出最後會出現%百分比符號,% 表示沒換行(new line)的符號
要玩Input輸入的話沒辦法在playground上執行VScode也沒辦法直接執行(好像得調一些設定)通常是在Terminal上 下指令 $ go run main.go但是Goland IDE就是可以直接跑等什麼,還不換?
【fmt.Scanf】跟C語言一樣fmt.Scanf("%d", &a)【fmt.Scan】【fmt.Scanln】package mainimport "fmt"func main() {var a intfmt.Scanf("%d", &a)fmt.Println(a)}/* result:`User input`*/組合字串【fmt.Sprint】【fmt.Sprintln】【fmt.Sprintf】fmt.Sprint 不會印出東西,基本上是拿來組合字串用的組出來之後,需要一個變數去接用fmt.Sprint組字串,比起操作字元、陣列,可讀性會較高一些。
https://play.golang.org/p/WgcVnCvfmBH
func main() {s1 := "I"s2 := "am"s3 := "string"str1 := fmt.Sprintln(s1, s2, s3)fmt.Println(str1)str2 := fmt.Sprint(s1, s2, s3)fmt.Println(str2)}/* result:I am stringIamstring*/可以看出Sprint、Sprintln的一些小差異。