键盘输入和打印输出

一、打印输出

1.1 fmt包

fmt包实现了类似C语言printf和scanf的格式化I/O。格式化verb(‘verb’)源自C语言但更简单。

详见官网fmt的API:https://golang.google.cn/pkg/fmt/

1.2 导入包

import "fmt"

1.3 常用打印函数

打印:

func Print(a …interface{}) (n int, err error)

格式化打印:

func Printf(format string, a …interface{}) (n int, err error)

打印后换行

func Println(a …interface{}) (n int, err error)

格式化打印中的常用占位符:

常用格式化打印占位符:
			%v: 原样输出
			%T: 打印类型
			%t: bool类型
			%s: 字符串
			%f: 浮点
			%d: 10进制的整数
			%b: 2进制的整数
			%o: 8进制
			%x: %X,16进制
				%x:0-9,a-f
				%X:0-9,A-F
			%c: 打印字符
			%p: 打印地址

示例代码:

package main

import (
	"fmt"
)

func main() {
	a := 100           //int
	b := 3.14          //float64
	c := true          // bool
	d := "Hello World" //string
	e := `Ruby`        //string
	f := 'A'
	s := []int{1, 2}
	//%v:原样输出;%T:打印类型;%t:bool类型;%s:字符串;%f: 浮点; %d: 10进制整数;
	//%b:2进制整数;%o:8进制;%X:16进制,0-9,A-F(%x:0-9,a-f);%c: 打印字符;%p:打印地址
	fmt.Printf("%T,%b\n", a, a)
	fmt.Printf("%T,%f\n", b, b)
	fmt.Printf("%T,%t\n", c, c)
	fmt.Printf("%T,%s\n", d, d)
	fmt.Printf("%T,%s\n", e, e)
	fmt.Printf("%T,%d,%c, %p, %p \n", f, f, f, &a, s)
	fmt.Println("-----------------------")
	fmt.Printf("%v\n", a)
	fmt.Printf("%v\n", b)
	fmt.Printf("%v\n", c)
	fmt.Printf("%v\n", d)
	fmt.Printf("%v\n", e)
	fmt.Printf("%v\n", f)
}

运行结果:

八、go语言键盘输入和打印输出-LMLPHP

二、键盘输入

2.1 fmt包读取键盘输入

2.2 bufio包读取

https://golang.google.cn/pkg/bufio/

bufio包中都是IO操作的方法:

示例代码:

package main

import (
	"fmt"
)

func main() {
	var x int
	var y float64
	fmt.Println("请输入一个整数,一个浮点类型,逗号分割:")
	fmt.Scanf("%d,%f",&x,&y)
	fmt.Printf("逗号分割: x的数值:%d,y的数值:%f\n",x,y)
	fmt.Println("请输入一个整数,一个浮点类型,分号分隔:")
	fmt.Scanf("%d;%f",&x,&y)
	fmt.Printf("分号分隔: x:%d,y:%f\n",x,y)
	fmt.Scanln(&x,&y)//读取键盘的输入,默认空格分隔,通过操作地址,赋值给x和y   阻塞式
	fmt.Printf("x的数值:%d,y的数值:%f\n",x,y)

	var msg string
	reader := bufio.NewReader(os.Stdin) // 标准输入输出
	msg,_ = reader.ReadString('\n')  // 回车结束
	msg = strings.TrimSpace(msg)    // 去除最后一个空格
	fmt.Printf("输出结果: %s", msg)
}

运行效果:

八、go语言键盘输入和打印输出-LMLPHP

06-01 02:12