输入
使用fmt进行输入
go的输入方法之一使用fmt包,分为以下三个方法
- fmt.Scan
这种方法必须要将a和b的值全部给出来,才会结束语句块。
package main
import "fmt"
func main() {
var a int
var b int
fmt.Println("请输入a和b:")
fmt.Scan(&a, &b)
fmt.Println(a, b)
}
- fmt.Scanln
这种方式遇到换行结束输入,如果没有给出其它参数的值,那么它的值为默认值,适合用于非必填值使用。
package main
import "fmt"
func main() {
var a int
var b int
fmt.Println("请输入a和b")
fmt.Scanln(&a, &b)
fmt.Println("a is:", a, "b is:", b)
}
- fmt.Scanf
严格按照定义的格式输入,如果格式错误,错误的值也会为默认值。
package main
import "fmt"
func main() {
var a int
var b int
fmt.Println("请输入a和b")
& 获取地址 &a 获取a变量的内存地址
fmt.Scanf("a=%d,b=%d", &a, &b)
fmt.Println("a is:", a, "b is:", b)
}
请输入a和b
a=123,b=456 //必须按照定义的 a=%d,b=%d 格式输入,否则值为默认值。
a is: 123 b is: 456
使用bufio进行输入
在Go语言中,bufio 包提供了缓冲的I/O操作,能有效提升输入输出效率,尤其适用于频繁的小数据读写场景。
bufio 的核心优势
减少系统调用:通过缓冲区批量读写数据,减少底层系统调用次数。
灵活读取:支持按行、单词、自定义分隔符读取,或直接操作字节。
- bufio.NewReader
ReadString(delim byte):读取直到遇到分隔符(如 \n)。
从键盘输入换行符结束
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
reader := bufio.NewReader(os.Stdin)
fmt.Println("开始从键盘输入:")
line, e := reader.ReadString('\n')
//line, _ := reader.ReadString('\n')
//使用匿名变量 _ 接收错误的输出,可以不调用,否则必须调用e变量
fmt.Println("line is :", line)
fmt.Println("err is :", e)
}
输出
fmt输出
package main
import "fmt"
func main() {
fmt.Print("hello")
fmt.Print("world")
//自动添加换行符
fmt.Println("hello world!")
//指定格式
name := "tom"
age := 21
fmt.Printf("myname is %s , age is %d", name, age)
}