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