@@ -1,58 +0,0 @@ 03.fmt的格式化输入输出 | 凤凰涅槃进阶之路

03.fmt的格式化输入输出

Abel sun2023年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