【Go】01输入输出

发布于:2025-02-12 ⋅ 阅读:(14) ⋅ 点赞:(0)

输入

使用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)
}