輸出方法:1、Print()函數,可輸出至控制台(不接受任何格式化),語法「fmt.Print(str)」;2、Println()函數,可輸出至控制台並換行,語法「fmt.Println(tmp)」;3、Printf()函數,只可以印出格式化的字串;4、Sprintf()函數,可格式化並傳回一個字串;5、Fprintf ()函數,可格式化並輸出至「io.Writers」。
本教學操作環境:windows7系統、GO 1.18版本、Dell G3電腦。
Go語言幾種輸出方式的差異
Print、Println 、Printf
、<strong>Sprintf</strong>
、Fprintf
都是fmt 套件中的公共方法,在需要列印資訊時需要用到這些函數,那麼這些函數有什麼差別呢?
Print: 输出到控制台(不接受任何格式化,它等价于对每一个操作数都应用 %v) fmt.Print(str) Println: 输出到控制台并换行 fmt.Println(tmp) Printf : 只可以打印出格式化的字符串。只可以直接输出字符串类型的变量(不可以输出整形变量和整形 等) fmt.Printf("%d",a) Sprintf:格式化并返回一个字符串而不带任何输出。 s := fmt.Sprintf("a %s", "string") fmt.Printf(s) Fprintf:格式化并输出到 io.Writers 而不是 os.Stdout。 fmt.Fprintf(os.Stderr, “an %s\n”, “error”)
需要格式化輸出資訊時一般選擇Printf,其他時候用Println
Printf 格式化輸出
##1 、通用佔位符:v 值的默认格式。
%+v 添加字段名(如结构体)
%#v 相应值的Go语法表示
%T 相应值的类型的Go语法表示
%% 字面上的百分号,并非值的占位符
2、布林值:%t true 或 false
3、整數值:%b 二进制表示
%c 相应Unicode码点所表示的字符
%d 十进制表示
%o 八进制表示
%q 单引号围绕的字符字面值,由Go语法安全地转义
%x 十六进制表示,字母形式为小写 a-f
%X 十六进制表示,字母形式为大写 A-F
%U Unicode格式:U+1234,等同于 "U+%04X"
4、浮點數及複數:%b 无小数部分的,指数为二的幂的科学计数法,与 strconv.FormatFloat中的 'b' 转换格式一致。例如 -123456p-78
%e 科学计数法,例如 -1234.456e+78
%E 科学计数法,例如 -1234.456E+78
%f 有小数点而无指数,例如 123.456
%g 根据情况选择 %e 或 %f 以产生更紧凑的(无末尾的0)输出
%G 根据情况选择 %E 或 %f 以产生更紧凑的(无末尾的0)输出
5、字串和bytes的slice表示:%s 字符串或切片的无解译字节
%q 双引号围绕的字符串,由Go语法安全地转义
%x 十六进制,小写字母,每字节两个字符
%X 十六进制,大写字母,每字节两个字符
6、指標:%p 十六进制表示,前缀 0x
這裡沒有'u' 標記。若整數為無符號類型,他們就會被印成無符號的。類似地,這裡也不需要指定運算元的大小(int8,int64)。
7、對於%v來說預設的格式是:bool: %t
int, int8 etc.: %d
uint, uint8 etc.: %d, %x if printed with %#v
float32, complex64, etc: %g
string: %s
chan: %p
pointer: %p
由此可以看出,預設的輸出格式可以使用%v來指定,除非輸出其他與預設不同的格式,否則都可以使用%v進行替代(但是不建議使用)
#8、對於複合物件:
裡面的元素使用如下規則進行列印:struct: {field0 field1 ...} array, slice: [elem0 elem1 ...] maps: map[key1:value1 key2:value2] pointer to above: &{}, &[], &map[]
9、寬度和精確度:
#寬度是在%之後的值,如果沒有指定,則使用該值的預設值,精度是跟在寬度之後的值,如果沒有指定,也是使用要列印的值的預設精度.例如:%9.2f,寬度9,精度2%f: default width, default precision %9f width 9, default precision %.2f default width, precision 2 %9.2f width 9, precision 2 %9.f width 9, precision 0對數值而言,寬度為該數值佔用區域的最小寬度;精度為小數點之後的位數。但對於 %g/%G 而言,精度為所有數字的總數。例如,對於123.45,格式 %6.2f會列印123.45,而 %.4g 會列印123.5。 %e 和 %f 的預設精確度為6;但對於 %g 而言,它的預設精確度為決定該值所必須的最小位數。 對大多數值而言,寬度為輸出的最小字元數,如果必要的話會為已格式化的形式填入空格。對字串而言,精度為輸出的最大字元數,如果必要的話會直接截斷。 寬度是指"必要的最小寬度". 若結果字串的寬度超過指定寬度時, 指定寬度就會失效。 若將寬度指定為`*'時, 將從參數中取得寬度值。 緊接在"."後面的數串表示精確度(若只有"."的話,則為".0")。若遇到整數的指示符(`d', `i', `b', `o', `x', `X', `u')的話,精確度表示數值部分的長度#若遇到浮點數的指示符(`f')的話,它表示小數部分的位數。 若遇到浮點數的指示符(`e', `E', `g', `G')的話,它表示有效位數若將精確度設為` *'的話,將從參數中提取精度的值其中對於字串%s或浮點類型%f,來說,精度可以截斷資料的長度.如下所示.
func main() { a := 123 fmt.Printf("%1.2d\n", a) //123,宽度为1小于数值本身宽度,失效,而精度为2,无法截断整数 b := 1.23 fmt.Printf("%1.1f\n", b) //1.2,精度为1,截断浮点型数据 c := "asdf" fmt.Printf("%*.*s\n", 1, 2, c) //as,利用'*'支持宽度和精度的输入,并且字符串也可以利用精度截断 }10、其他標誌:
+ 总打印数值的正负号;对于%q(%+q)保证只输出ASCII编码的字符。
- 左对齐
# 备用格式:为八进制添加前导 0(%#o),为十六进制添加前导 0x(%#x)或0X(%#X),为 %p(%#p)去掉前导 0x;对于 %q,若 strconv.CanBackquote 返回 true,就会打印原始(即反引号围绕的)字符串;如果是可打印字符,%U(%#U)会写出该字符的Unicode编码形式(如字符 x 会被打印成 U+0078 'x')。
' ' (空格)为数值中省略的正负号留出空白(% d);以十六进制(% x, % X)打印字符串或切片时,在字节之间用空格隔开
0 填充前导的0而非空格;对于数字,这会将填充移到正负号之后
對於每個Printf 類別的函數,都有一個Print 函數,該函數不接受任何格式化,它等價於對每一個操作數都應用%v。另一個變參函數Println 會在運算元之間插入空白,並在結尾追加一個換行符不考慮佔位符的話,如果運算元是介面值,就會使用其內部的特定值,而非接口本身。如下所示:package main import ( "fmt" ) type Sample struct { a int str string } func main() { var i interface{} = Sample{1, "a"} fmt.Printf("%v\n", i) //{1 a} }11、顯示參數佔位符:go中支援顯示參數佔位符,透過在輸出格式中指定其輸出的順序即可,如下所示:
func main() { fmt.Printf("%[2]d, %[1]d\n", 11, 22) //22, 11,先输出第二个值,再输出第一个值 }12、格式化錯誤:如果給佔位符提供了無效的實參(如將一個字串提供給%d),便會出現格式化錯誤.所有的錯誤都始於“%!”,有時緊跟著單個字符(佔位符),並以小括號括住的描述結尾。
func main() { var i int = 1 fmt.Printf("%s\n", i) //%!s(int=1) }
輸出實例package main
import "fmt"
import "os"
type point struct {
x, y int
}
func main() {
//Go 为常规 Go 值的格式化设计提供了多种打印方式。例如,这里打印了 point 结构体的一个实例。
p := point{1, 2}
fmt.Printf("%v\n", p) // {1 2}
//如果值是一个结构体,%+v 的格式化输出内容将包括结构体的字段名。
fmt.Printf("%+v\n", p) // {x:1 y:2}
//%#v 形式则输出这个值的 Go 语法表示。例如,值的运行源代码片段。
fmt.Printf("%#v\n", p) // main.point{x:1, y:2}
//需要打印值的类型,使用 %T。
fmt.Printf("%T\n", p) // main.point
//格式化布尔值是简单的。
fmt.Printf("%t\n", true)
//格式化整形数有多种方式,使用 %d进行标准的十进制格式化。
fmt.Printf("%d\n", 123)
//这个输出二进制表示形式。
fmt.Printf("%b\n", 14)
//这个输出给定整数的对应字符。
fmt.Printf("%c\n", 33)
//%x 提供十六进制编码。
fmt.Printf("%x\n", 456)
//对于浮点型同样有很多的格式化选项。使用 %f 进行最基本的十进制格式化。
fmt.Printf("%f\n", 78.9)
//%e 和 %E 将浮点型格式化为(稍微有一点不同的)科学技科学记数法表示形式。
fmt.Printf("%e\n", 123400000.0)
fmt.Printf("%E\n", 123400000.0)
//使用 %s 进行基本的字符串输出。
fmt.Printf("%s\n", "\"string\"")
//像 Go 源代码中那样带有双引号的输出,使用 %q。
fmt.Printf("%q\n", "\"string\"")
//和上面的整形数一样,%x 输出使用 base-16 编码的字符串,每个字节使用 2 个字符表示。
fmt.Printf("%x\n", "hex this")
//要输出一个指针的值,使用 %p。
fmt.Printf("%p\n", &p)
//当输出数字的时候,你将经常想要控制输出结果的宽度和精度,可以使用在 % 后面使用数字来控制输出宽度。默认结果使用右对齐并且通过空格来填充空白部分。
fmt.Printf("|%6d|%6d|\n", 12, 345)
//你也可以指定浮点型的输出宽度,同时也可以通过 宽度.精度 的语法来指定输出的精度。
fmt.Printf("|%6.2f|%6.2f|\n", 1.2, 3.45)
//要最对齐,使用 - 标志。
fmt.Printf("|%-6.2f|%-6.2f|\n", 1.2, 3.45)
//你也许也想控制字符串输出时的宽度,特别是要确保他们在类表格输出时的对齐。这是基本的右对齐宽度表示。
fmt.Printf("|%6s|%6s|\n", "foo", "b")
//要左对齐,和数字一样,使用 - 标志。
fmt.Printf("|%-6s|%-6s|\n", "foo", "b")
//到目前为止,我们已经看过 Printf了,它通过 os.Stdout输出格式化的字符串。Sprintf 则格式化并返回一个字符串而不带任何输出。
s := fmt.Sprintf("a %s", "string")
fmt.Println(s)
//你可以使用 Fprintf 来格式化并输出到 io.Writers而不是 os.Stdout。
fmt.Fprintf(os.Stderr, "an %s\n", "error")
}
【相關推薦:以上是go語言中的輸出方法有哪些的詳細內容。更多資訊請關注PHP中文網其他相關文章!

Go語言的核心特性包括垃圾回收、靜態鏈接和並發支持。 1.Go語言的並發模型通過goroutine和channel實現高效並發編程。 2.接口和多態性通過實現接口方法,使得不同類型可以統一處理。 3.基本用法展示了函數定義和調用的高效性。 4.高級用法中,切片提供了動態調整大小的強大功能。 5.常見錯誤如競態條件可以通過gotest-race檢測並解決。 6.性能優化通過sync.Pool重用對象,減少垃圾回收壓力。

Go語言在構建高效且可擴展的系統中表現出色,其優勢包括:1.高性能:編譯成機器碼,運行速度快;2.並發編程:通過goroutines和channels簡化多任務處理;3.簡潔性:語法簡潔,降低學習和維護成本;4.跨平台:支持跨平台編譯,方便部署。

關於SQL查詢結果排序的疑惑學習SQL的過程中,常常會遇到一些令人困惑的問題。最近,筆者在閱讀《MICK-SQL基礎�...

golang ...

Go語言中如何對比並處理三個結構體在Go語言編程中,有時需要對比兩個結構體的差異,並將這些差異應用到第�...

GoLand中自定義結構體標籤不顯示怎麼辦?在使用GoLand進行Go語言開發時,很多開發者會遇到自定義結構體標籤在�...


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

Atom編輯器mac版下載
最受歡迎的的開源編輯器

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

SublimeText3 Linux新版
SublimeText3 Linux最新版

SublimeText3漢化版
中文版,非常好用