go的格式化输入输出
1, 键盘输入的格式化输入
2, 字符串格式化输入
3, 格式化输出
点击查看代码
package main
import "fmt"
func testScanf(){
var a int
var b string
var c float32
/* fmt.Scanf("%d%s%f",&a,&b,&c) // 注意要在一行输入,用空格分隔开才行,如果输入一个,直接enter之后,只能第一个获取的值
fmt.Printf("收到的结果是: a=%d b=%s c=%f\n",a,b,c)*/
/*// 分别输入123 enter 45 enter 第三个没来得及输入就 显示出来 收到的结果是: a=123 b= c=45.000000
// 因为 window的enter换行符是\r\n 第二次会把第一次的输入之后的\r\n读进去
fmt.Scanf("%d",&a)
fmt.Scanf("%s",&b)
fmt.Scanf("%f",&c)
fmt.Printf("收到的结果是: a=%d b=%s c=%f\n",a,b,c)*/
// 解决方法: 后面加上换行符\n,他会读到\n就截止 fmt.Scanf是空格作为分隔符
fmt.Printf("hello world%c",'\n') // 以\开头的字符都是字符,单引号,转义字符
fmt.Println("请分别输入数字,字符串,小数")
fmt.Scanf("%d\n",&a)
fmt.Scanf("%s\n",&b)
fmt.Scanf("%f\n",&c)
fmt.Printf("fmt.Scanf收到的结果是: a=%d b=%s c=%f\n",a,b,c)
}
func testScan(){
var a int
var b string
var c float32
fmt.Scan(&a,&b,&c) // fmt.Scan是以空格或者换行符作为结束的,
fmt.Printf("fmt.Scan收到的结果是: a=%d b=%s c=%f\n",a,b,c)
}
func testScanln(){
var a int
var b string
var c float32
fmt.Scanln(&a,&b,&c) // fmt.Scanln必须在一行中输入,空格作为分隔符,是以/r/n换行符结束的,一旦输入enter就立马结束
fmt.Printf("fmt.Scanln收到的结果是: a=%d b=%s c=%f\n",a,b,c)
}
func testSscanf(){
var a int
var b string
var c float32
var str string="88 hello 6.7"
//var str string="88\n hello 6.7" // 输出fmt.Sscanf收到的结果是: a=88 b= c=0.000000, 遇到换行符结束
fmt.Sscanf(str,"%d %s %f",&a,&b,&c)
fmt.Printf("fmt.Sscanf收到的结果是: a=%d b=%s c=%f\n",a,b,c)
}
func testSscan(){
var a int
var b string
var c float32
var str string="88 hello\n\n 6.7" // 换行符作为分隔符,所以不受影响
fmt.Sscan(str,&a,&b,&c)
fmt.Printf("fmt.Sscan收到的结果是: a=%d b=%s c=%f\n",a,b,c) // fmt.Sscan收到的结果是: a=88 b=hello c=6.700000
}
func testSscanln(){
var a int
var b string
var c float32
//var str string="88 hello 6.7" // fmt.Sscanln收到的结果是: a=88 b=hello c=6.700000
var str string="88 hello \n6.7" // 遇到\n就结束了 fmt.Sscanln收到的结果是: a=88 b=hello c=0.000000
fmt.Sscanln(str,&a,&b,&c)
fmt.Printf("fmt.Sscanln收到的结果是: a=%d b=%s c=%f\n",a,b,c)
}
func main(){
//testScanf()
//testScan()
//testScanln()
//testSscanf()
//testSscan()
testSscanln()
}
3,格式化输出
点击查看代码
package main
import "fmt"
func main() {
/*
格式化输出:
1.%%:一个%字面量
2.%b:一个二进制整数值,或者是一个用科学计数法表示的指数为2的浮点数
3.%c:字符型,可以把输入的数字按照ASCII码相应转换为对应的字符
4.%d:一个十进制数值,基数为10
5.%e:以科学计数法e表示的浮点数或者复数值
6.%E:以科学计数法E表示的浮点数或者复数值
7.%f:以标准计数法表示的浮点数或者复数值
8.%g:以%e或者%f表示的浮点数或者复数,任何一个都为最为紧凑的方式输出
9.%G:以%E或者%f表示的浮点数或者复数,任何一个都以最为紧凑的方式输出
10.%o:一个以八进制标示的数字,基数为8
11.%p:以十六进制表示的值的地址,前缀为0x,字母使用小写的a-f表示
12.%q:使用go语言语法以及必须时使用转义,以双引号括起来的字符串或者字节切片[]byte,
或者是以单引号括起来的数字
13.%s:字符串。输出字符串中的字符直至字符串中的空字符(字符串以'\0'结尾,这个'\0'即空字符)
14.%t:以true或者false输出的布尔值
15.v%:自动匹配类型输出,适用于大多数类型
*/
a := "hello"
// 打印类型:%T
fmt.Printf("%T\n",a)
// 字符串格式输出:%s
fmt.Printf("%s\n",a)
b := 123
// 整型格式:%d
fmt.Printf("%d\n",b)
c := 'c'
// 字符格式:%c
fmt.Printf("%c\n",c)
d := 1.21323
// 浮点型格式:%f,%.2f
fmt.Printf("%f\n",d)
fmt.Printf("%.2f\n",d)
//
}
写入自己的博客中才能记得长久