使用fmtScanln函数-用户回答什么-如果你只需要简单读取单行输入fmt.Scanln足够了
一、使用fmt包中的Scanln函数
使用fmt包的Scanln函数可以说是获取键盘输入的最简单方法了。它就像问个问题一样,用户回答什么,它就记下什么。1. 导入fmt包; 2. 声明一个变量,比如叫input,用来装用户的答案; 3. 调用fmt.Scanln,让用户输入。
代码示例如下: ```go package main import "fmt" func main() { var input string fmt.Scanln(&input) fmt.Println("你输入的内容是:", input) } ```二、使用bufio包中的Scanner对象
如果需要读取多行输入或者处理大量数据,bufio包的Scanner对象就派上用场了。1. 导入bufio和os包; 2. 创建一个Scanner对象,并与标准输入关联; 3. 使用Scanner对象的Scan方法读取输入。
代码示例如下: ```go package main import ( "bufio" "fmt" "os" ) func main() { scanner := bufio.NewScanner(os.Stdin) for scanner.Scan() { fmt.Println(scanner.Text()) } if err := scanner.Err(); err != nil { fmt.Fprintln(os.Stderr, "reading from stdin:", err) } } ```三、使用os包中的Stdin对象
os包提供了更底层的输入读取功能,如果你需要更灵活地控制输入读取过程,这个方法可能更适合你。1. 导入os包; 2. 使用os.Stdin的Read方法读取输入内容; 3. 将读取的内容存储到指定的变量中。
代码示例如下: ```go package main import ( "fmt" "os" ) func main() { var input [100]byte // 假设最多读取100字节 n, err := os.Stdin.Read(input[:]) if err != nil { fmt.Println("读取错误:", err) return } input = input[:n] // 截取实际读取的字节 fmt.Println("你输入的内容是:", string(input)) } ```四、比较不同方法的优缺点
方法 | 优点 | 缺点 |
---|---|---|
fmt.Scanln | 简单易用,适用于读取单行输入 | 只能读取一行输入,无法处理多行输入 |
bufio.Scanner | 功能强大,适用于读取多行输入,处理大数据量 | 需要更多代码,稍显复杂 |
os.Stdin.Read | 灵活控制输入读取过程,适用于特殊需求 | 实现较为复杂,需自行处理缓冲区和错误信息 |