03.fmt的格式化输入输出
2023年1月6日约 904 字大约 3 分钟
03.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)
}
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)
}
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)
}
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)
}
Powered by Waline v2.9.1