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)

	//

}

输出: ``` string hello 123 c 1.213230 1.21 ```
posted @ 2022-02-27 17:48  ty1539  阅读(134)  评论(0编辑  收藏  举报