Go語言從入門到精通 精華篇 fmt包詳解

2021-09-29 19:47:12 字數 4303 閱讀 4874

import "fmt"

軟體包fmt實現了格式化的i / o,其功能類似於c的printf和scanf。格式'動詞'來自c,但更簡單。

已有示例**:

type person struct
通用:

佔位符說明

示例輸出

%v

相應值的預設格式

printf("%v",person )

%+v類似%v,但輸出結構體時會新增欄位名式

printf("%+v",person )

%#v相應值的go語法表示

printf("#v",person )

main.person=

%t

相應值的型別的go語法表示

printf("%t",person )

main.person

%%字面上的百分號,並非值的佔位符

printf("%%")

% 布林值:

布林佔位符

說明示例

輸出%t

單詞true或false

printf("%t",true)

true

整數:佔位符說明

示例輸出

%b二進位制表示

printf("%b",5)

101%c該值對應的unicode碼值

printf("%c",0x4e2d)

%d

十進位制表示

printf("%d",0x12)

18%o八進位制表示

printf("%o",10)

12%q單引號圍繞的字元字面值,由go語法安全的轉譯

printf("%q",0x4e2d)

'中'%x十六進製制表示,字母形式為小寫a-f

printf("%x",13)

d%x十六進製制表示,字母形式為大寫a-f

printf("%x",13)

d%u表示為unicode格式:u+1234,等價於"u+%04x"

printf("%u",0x4e2d)

u+4e2d

浮點數與複數的兩個組分:

佔位符說明

示例輸出

%b無小數部分、指數為二的冪的科學計數法,與strconv.formatfloat的'b'轉換格式一致。

printf("%b",10.20)

5742089524897382p-49

%e科學計數法,如-1234.456e+78

printf("%e",10.20)

1.020000e+01

%e科學計數法,如-1234.456e+78

printf("%e",10.20)

1.020000e+01

%f

有小數部分但無指數部分,如123.456

printf("%f",10.20)

10.200000

%g根據實際情況採用%e或%f格式(以獲得更簡潔、準確的輸出)

printf("%g",10.20)

10.2

%g根據實際情況採用%e或%f格式(以獲得更簡潔、準確的輸出)

printf("%g",10.20)

(10.2+2i)

字串和byte:

佔位符 | 說明 | 示例 | 輸出

:---: |:---:|:---:|:---:

%s| 輸出字串表示(string型別或byte) | printf("%s",byte("go語言")) | go語言

%q| 雙引號圍繞的字串,由go語法安全的轉譯 | printf("%q","go語言") | "go語言"

%x| 十六進製制,小寫字母,每位元組兩個字元 | printf("%x","golang") | 676f6c616e67

%x| 十六進製制,大寫字母,每位元組兩個字元 | printf("%x","golang") | 676f6c616e67

指標:佔位符

說明示例

輸出%p

十六進製制表示,字首 0x

printf("%p",&person)

0xc0420341c0

其他:佔位符說明

示例輸出

+總是輸出數值的正負號;對%q(%+q)會生成全部是ascii字元的輸出(通過轉義)

printf("%+q","中文")

"\u4e2d\u6587"

-在輸出右邊填充空白而不是預設的左邊(即從預設的右對齊切換為左對齊);

#切換格式:八進位制數前加0(%#o)

printf("%#0",46)

十六進製制數前加0x(%#x)或0x(%#x)

printf("%#x",46)

0x2e

指標去掉前面的0x(%#p);)

fmt.printf("%#p",&person)

c0420441b0

對%q(%#q),如果strconv.canbackquote返回真會輸出反引號括起來的未轉義字串;

printf("%#q",'中')

'中'對%u(%#u),如果字元是可列印的,會在輸出unicode格式、空格、單引號括起來的go字面值;

printf("%#u",'中')

u+4e2d '中'

' '(空格)為數值中省略的正負號流出空白(% d);

printf("% d",16)

16以十六進製制(% x,% x)列印字串或切片時,在位元組之間用空格隔開

printf("% x","abc")

61 62 63

0使用0而不是空格填充,對於數值型別會把填充的0放在正負號後面

// print 將引數列表 a 中的各個引數轉換為字串並寫入到標準輸出中。

// 非字串引數之間會新增空格,返回寫入的位元組數。

func print(a ...inte***ce{}) (n int, err error)

// println 功能類似 print,只不過最後會新增乙個換行符。

// 所有引數之間會新增空格,返回寫入的位元組數。

func println(a ...inte***ce{}) (n int, err error)

// printf 將引數列表 a 填寫到格式字串 format 的佔位符中。

// 填寫後的結果寫入到標準輸出中,返回寫入的位元組數。

func printf(format string, a ...inte***ce{}) (n int, err error)

// 功能同上面三個函式,只不過將轉換結果寫入到 w 中。

func fprint(w io.writer, a ...inte***ce{}) (n int, err error)

func fprintln(w io.writer, a ...inte***ce{}) (n int, err error)

func fprintf(w io.writer, format string, a ...inte***ce{}) (n int, err error)

// 功能同上面三個函式,只不過將轉換結果以字串形式返回。

func sprint(a ...inte***ce{}) string

func sprintln(a ...inte***ce{}) string

func sprintf(format string, a ...inte***ce{}) string

// 功能同 sprintf,只不過結果字串被包裝成了 error 型別。

func errorf(format string, a ...inte***ce{}) error

提取碼:8x8c

Go語言從入門到精通 字元型別

字串中的每乙個元素叫做 字元 在遍歷或者單個獲取字串元素時可以獲得字元。go 語言的字元有以下兩種 使用 fmt.printf 中的 t動詞可以輸出變數的實際型別,使用這個方法可以檢視 byte 和 rune 的本來型別,如下 var a byte a fmt.printf d t n a,a va...

Go語言從入門到精通 匿名變數

在使用多重賦值時,如果不需要在左值中接收變數,可以使用匿名變數 anonymous variable 匿名變數的表現是乙個下畫線 使用匿名變數時,只需要在變數宣告的地方使用下畫線替換即可。例如 func getdata int,int a,getdata b getdata fmt.println ...

Go語言從入門到精通 資料型別

在 go 程式語言中,資料型別用於宣告函式和變數。資料型別的出現是為了把資料分成所需記憶體大小不同的資料,程式設計的時候需要用大資料的時候才需要申請大記憶體,就可以充分利用記憶體。go 語言按類別有以下幾種資料型別 序號型別和描述 1布林型 布林型的值只可以是常量 true 或者 false。乙個簡...