5. Go 言語でフォーマットされた出力

1. ユニバーサルフォーマットの出力

Go 言語でフォーマットされた出力には、通常 fmt パッケージが使用され、一般的な出力フォーマットは次の表のとおりです。

出力フォーマット 出力内容
%v 値のデフォルトの形式表現
%+v %v と似ていますが、構造体の出力時にフィールド名が追加されます。
%#v 値の Go 構文表現
%T 値の型の Go 構文表現
package main

import "fmt"

func main() {
	var s string = "ajwlf"
	var z int = 1
	var r rune = '一'

	fmt.Printf("s: %v\n", s)
	fmt.Printf("s: %+v\n", s)
	fmt.Printf("s: %#v\n", s)
	fmt.Printf("s: %T\n", s)

	fmt.Printf("z: %v\n", z)
	fmt.Printf("z: %T\n", z)

	fmt.Printf("r: %v\n", r)
	fmt.Printf("r: %T\n", r)
}


外:

s: ajwlf
s: ajwlf
s: "ajwlf"
s: string
z: 1
z: int
r: 19968
r: int32

2.ブール型

出力フォーマット 出力内容
%t 真か偽かという言葉
package main
import "fmt"
func main() {
    var flag bool
    fmt.Printf("%T, %t \n", flag, flag)
    flag = true
    fmt.Printf("%T, %t \n", flag, flag)
}

// 结果
bool, false
bool, true

3. 整数型

出力フォーマット 出力内容
%b バイナリとして表現される
%c この値に対応する Unicode コード値
%d 10進数で表現
%8d これは、整数の長さが 8 であることを意味します。8 未満の場合は値の前にスペースを追加し、8 を超える場合は実際の値が優先されます。
%08d 整数の長さが 8 であることを意味します。8 未満の場合は値の前に 0 を追加し、8 を超える場合は実際の値が優先されます。
%o 8進数で表される
%q この値に対応する Go 言語構文文字リテラル値は一重引用符で囲まれ、必要に応じて安全なエスケープで表されます。
%バツ 16進数で表し、a〜fを使用します。
%バツ 16進数で表し、A~Fを使用します。
%U Unicode 形式で表されます: U+1234、U+%04X と同等
%p ポインタ型
package main
import "fmt"
func main() {
    fmt.Printf("%T, %d \n", 123, 123)
    fmt.Printf("%T, %5d \n", 123, 123)
    fmt.Printf("%T, %05d \n", 123, 123)
    fmt.Printf("%T, %b \n", 123, 123)
    fmt.Printf("%T, %o \n", 123, 123)
    fmt.Printf("%T, %c \n", 97, 97)
    fmt.Printf("%T, %q \n", 97, 97)
    fmt.Printf("%T, %x \n", 123, 123)
    fmt.Printf("%T, %X \n", 123, 123)
    fmt.Printf("%T, %U \n", '一', '一')
}

// 结果
int, 123
int,   123
int, 00123
int, 1111011
int, 173
int, a
int, 'a'
int, 7b
int, 7B
int32, U+4E00

4. 浮動小数点型と複素数型

出力フォーマット 出力内容
%b 小数部と 2 進指数を含まない科学表記 (-123456p-78 など)
%e (=%.6e) -1234.456e+78 などの小数点以下 6 桁の科学表記
%E 科学的表記法 (-1234.456E+78 など)
%f (=%.6f) は小数点以下 6 桁です (123.456123 など)
%F %fに相当
%g 実際の状況に応じて %e または %f 形式を使用します (より簡潔で正確な出力が得られます)
%G 実際の状況に応じて %E または %F 形式を使用します (より簡潔で正確な出力が得られます)
package main
import "fmt"
func main() {
    fmt.Printf("%b \n", 123.123456)
    fmt.Printf("%f \n", 123.1)
    fmt.Printf("%.2f \n", 123.125456)
    fmt.Printf("%e \n", 123.123456)
    fmt.Printf("%E \n", 123.123456)
    fmt.Printf("%.1e \n", 123.123456)
    fmt.Printf("%F \n", 123.123456)
    fmt.Printf("%g \n", 123.123456)
    fmt.Printf("%G \n", 123.123456)
}

// 结果
8664042977533870p-46
123.100000
123.13
1.231235e+02
1.231235E+02
1.2e+02
123.123456
123.123456
123.123456

5. 文字列とバイト配列

出力フォーマット 出力内容
%s 文字列またはバイト配列を直接出力
%q この値に対応する Go 構文文字列リテラル値は二重引用符で囲まれており、必要に応じて安全にエスケープされます。
%バツ 各バイトは、a ~ f を使用した 2 文字の 16 進数で表されます。
%バツ 各バイトは、A ~ F を使用した 2 文字の 16 進数で表されます。
package main
import "fmt"
func main() {
    arr := []byte{'x', 'y', 'z', 'z'}
    fmt.Printf("%s \n", "欢迎访问")
    fmt.Printf("%q \n", "欢迎访问")
    fmt.Printf("%x \n", "欢迎访问")
    fmt.Printf("%X \n", "欢迎访问")
    fmt.Printf("%T, %s \n", arr, arr)
    fmt.Printf("%T, %q \n", arr, arr)
    fmt.Printf("%T, %x \n", arr, arr)
    fmt.Printf("%T, %X \n", arr, arr)
}

//
欢迎访问
"欢迎访问"
e6aca2e8bf8ee8aebfe997aee5beaee5ada6e88b91
E6ACA2E8BF8EE8AEBFE997AEE5BEAEE5ADA6E88B91
[]uint8, xyzz
[]uint8, "xyzz"
[]uint8, 78797a7a
[]uint8, 78797A7A 

おすすめ

転載: blog.csdn.net/qq_40893490/article/details/127770219