fmt的格式化输入输出
文章发布较早,内容可能过时,阅读注意甄别。
# 1,格式说明。
格式 | 说明 |
---|---|
%% | 一个%字面量 |
%b | 一个二进制整数值(基数为 2),或是一个(高级的)用科学计数法表示的指数为 2 的浮点数 |
%c | 字符型,可以把输入的数字按照 ASCII 码相应转换为对应字符 |
%d | 一个十进制数值(基数为 10) |
%e | 以科学计数法 e 表示的浮点数或者复数值 |
%E | 以科学计数法 E 表示的浮点数或者复数值 |
%f | 以标准计数法表示的浮点数或者复数值 |
%g | 以%e 或%f 表示的浮点数或复数,任何一个都以最为紧凑的方式输出 |
%G | 以%E 或%f 表示的浮点数或复数,任何一个都以最为紧凑的方式输出 |
%o | 一个以八进制表示的数字(基数为 8) |
%p | 以十六进制(基数为 16)表示的一个值的地址,前缀为 0x,字母使用小写的 a-f 表示 |
%q | 使用 Go 语法以及必须时使用转义,以双引号括起来的字符串或者字节切片 |
%s | 字符串。输出字符串中的字符直至字符串中的空字符(字符串以'\0'结尾,这个'\0'即表示空字符) |
%t | 以 true 或者 false 输出的布尔值 |
%T | 使用 Go 语法输出的值的类型 |
%U | 一个用 Unicode 表示法表示的整型码点,默认值为 4 个数字字符 |
%v | 使用默认格式输出的内置或自定义类型的值,或者是使用其类型的 String()方式输出的自定义值,如果该方法存在的话 |
%x | 以十六进制表示的整型值(基数为十六),数字 a-f 使用小写表示 |
%X | 以十六进制表示的整型值(基数为十六),数字 A-F 使用大写表示 |
其中比较常用的,已经高亮
标出。
# 1,格式化输出。
package main
import "fmt"
func main() {
a := 10
b := "abc"
c := 'a'
d := 3.14
//%T操作变量所属类型
fmt.Printf("%T, %T, %T, %T\n", a, b, c, d)
// %d 对应整形格式输出
// %s 对应字符串格式输出
// %c 对应字符格式输出
// %f 对应浮点格式输出
fmt.Printf("a = %d, b = %s, c = %c, d = %f\n", a, b, c, d)
//%v自动匹配格式输出
fmt.Printf("a = %v, b = %v, c = %v, d = %v\n", a, b, c, d)
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 2,格式化输入。
package main
import "fmt"
func main() {
var a int
fmt.Println("请输入变量a的值:")
//fmt.Scanf("%d", &a) 阻塞等待用户的输入,别忘了&
//对应格式写法
// fmt.Scanf("%d", &a)
//自动匹配格式的写法
fmt.Scan(&a)
fmt.Println("a =", a)
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 3,类型转换。
package main
import "fmt"
func main() {
//不能转换的类型,叫不兼容类型,先举一个不能转换的例子
var flag bool
flag = true
fmt.Printf("flag = %t\n", flag)
//bool类型不能转换为int
//fmt.Printf("flag = %d\n", int(flag))
// 0就是假,非0就是真
// 整型也不能转换为bool
// flag = bool(1)
//再举一个能够转换的例子。
var ch byte
ch = 'a' //字符类型本质上就是整型
var t int
t = int(ch) //类型转换,表示把ch的值取出来之后,转成int再赋给t
fmt.Println("t =", t)
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# 4,类型别名
package main
import "fmt"
func main() {
//给int64起一个别名bigint,别名的关键字是type
type bigint int64
var a bigint //等价于 var a int64
fmt.Printf("a type is %T\n", a)
//也可以一次性起多个别名
type (
long int64
char byte
)
var b long = 11
var c char = 'a'
fmt.Printf("b = %d, c = %c\n", b, c)
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
上次更新: 2024/06/13, 22:13:45