知方号

知方号

# Day06 Go開教基本語法 (fmt)

Day06 Go開教基本語法 (fmt)輸入與輸出【fmt.Printf】

格式化輸出,用法跟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: */來比較一下這些Output

https://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的一些小差異。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至lizi9903@foxmail.com举报,一经查实,本站将立刻删除。