Go語言學習(5) - 列印格式化

翻身碼農把歌唱發表於2018-12-07

列印格式化中我們常常 需要用到的格式化的標記,每個標記實際來源於我們的單詞,本文介紹Go語言中的列印格式化。

通用

  • %v:值的預設格式,對應英文為:value
  • %T:值的型別,對應英文為:Type

布林值

%t:單詞 true或者 false,對應英文:true

整型

  • %b:表示為二進位制,對應英文:binary
  • %c:該值對應的inicode碼值,對應英文:char
  • %d:表示為十進位制,對應英文:digital
  • %8d:表示該整型長度為8,不足8位,則在數值前補空格,超過8,則以實際為準
  • %08d:數字長度為8,不足8位,則在數值前補0,超過8,則以實際為準
  • %o:表示為八進位制,對應英文:octal
  • %q:該值對應的單引號 括起來的的Go語法字元字面值,必要時 會採用安全的轉義表示
  • %x:表示為 十六進位制,使用 a-f,對應英文:hex
  • %X:表示為 十六進位制,使用 A-F,對應英文:hex
  • %U 表示為 unicode格式:U+1234,等價於“U+%04X”

浮點與複數

  • %f (=%.6f) 有6位小數部分,如果想保留兩位小數,則 %.2f 即可(使用的是四捨五入)
  • %e (=%.6e) 有6位小數部分的科學計數法,如果想保留兩位小數的科學計數,則 %.2e 即可

字串和byte[]

  • %s 直接輸出字串 或者 byte[]
  • %q 該值的對應的雙引號括起來的Go語法字串字面值,必要時採用安全的轉義表示

說了這麼多文字,不如來點實際的,上程式碼:

package main
import "fmt"

type Student struct {
	x , y int
}

func main() {
	// 通用
	a := 12
	fmt.Printf("%T , a = %v \n", a, a)
	// 相當於例項化
	p := Student{1,2}
	fmt.Printf("%T , a = %v \n", p, p)

	var s rune = '一'
	fmt.Printf("%T , a = %v \n", s, s)

	// 布林
	b := true
	fmt.Printf("%T , b = %t \n", b, b)

	// 整數
	c := 123
	// %b 表示為 二進位制
	fmt.Printf("%T , c = %b \n", c, c)
	// %d 表示為 十進位制
	fmt.Printf("%T , c = %d \n", c, c)
	// %8d 表示該整型長度為8,不足8則在數值前補空格,如果超出8,以實際為準
	fmt.Printf("%T , c = %8d \n", c, c)
	// %08d 數字長度為8,不足8在前面補零,超出8,以實際為準
	fmt.Printf("%T , c = %08d \n", c, c)
	// %o 表示為 八進位制
	fmt.Printf("%T , c = %o \n", c, c)
	// %x 表示為 十六進位制,使用 a-f
	fmt.Printf("%T , c = %x \n", c, c)
	// %x 表示為 十六進位制,使用 A-F
	fmt.Printf("%T , c = %X \n", c, c)
	// %U 表示為 unicode格式:U+1234,等價於“U+%04X”
	fmt.Printf("%T , c = %U \n", c, c)
	cc := '一'
	fmt.Printf("%T , cc = %U \n", cc, cc)


	d := 97
	// %c 對應的是 unicode碼值
	fmt.Printf("%T , d = %c \n", d, d)
	// %q 該值對應的單引號 括起來的的Go語法字元字面值,必要時 會採用安全的轉義表示
	fmt.Printf("%T , d = %q \n", d, d)


	// 浮點數
	e := 123.23456
	// %f (=%.6f) 有6位小數部分,如果想保留兩位小數,則 %.2f 即可(使用的是四捨五入)
	fmt.Printf("%T , e = %f \n", e, e)
	fmt.Printf("%T , e = %.2f \n", e, e)
	// %e (=%.6e) 有6位小數部分的科學計數法,如果想保留兩位小數的科學計數,則 %.2e 即可
	fmt.Printf("%T , e = %e \n", e, e)
	fmt.Printf("%T , e = %.2e \n", e, e)
	// %E 科學計數法
	fmt.Printf("%T , %E \n", e, e)

	// 字串和byte[]
	f := "測試"
	// %s 直接輸出字串 或者 byte[]
	fmt.Printf("%T , f = %s \n", f, f)
	// %q 該值的對應的雙引號括起來的Go語法字串字面值,必要時採用安全的轉義表示
	fmt.Printf("%T , f = %q \n", f, f)

	arr := [3]byte{97, 98, 99}
	fmt.Printf("%T , arr = %s \n", arr, arr)

	arr2 := [3]byte{'a', 'b', 'c'}
	fmt.Printf("%T , arr2 = %s \n", arr2, arr2)
	fmt.Printf("%T , arr2 = %x \n", arr2, arr2)
	fmt.Printf("%T , arr2 = %X \n", arr2, arr2)

	// 變數賦值
	g := fmt.Sprintf(f)
	fmt.Println("g==" + g)
}

複製程式碼

執行結果如下:

int , a = 12 
main.Student , a = {1 2} 
int32 , a = 19968 
bool , b = true 
int , c = 1111011 
int , c = 123 
int , c =      123 
int , c = 00000123 
int , c = 173 
int , c = 7b 
int , c = 7B 
int , c = U+007B 
int32 , cc = U+4E00 
int , d = a 
int , d = 'a' 
float64 , e = 123.234560 
float64 , e = 123.23 
float64 , e = 1.232346e+02 
float64 , e = 1.23e+02 
float64 , 1.232346E+02 
string , f = 測試 
string , f = "測試" 
[3]uint8 , arr = abc 
[3]uint8 , arr2 = abc 
[3]uint8 , arr2 = 616263 
[3]uint8 , arr2 = 616263 
g==測試
複製程式碼

歡迎關注我的公眾號~ 搜尋公眾號: 翻身碼農把歌唱 或者 掃描下方二維碼:

img

相關文章