发布时间:2024-12-23 01:27:18
开发者对于终端循环输入是常见的需求之一。在golang中,我们可以利用for循环和标准库中的bufio包来实现这个功能。
首先,我们需要引入bufio包,并创建一个bufio.Scanner对象以便从标准输入流中读取数据。
接下来,我们可以使用for循环来不断地读取用户输入,直到用户退出程序。在每次循环中,我们可以通过scanner.Scan()方法来读取一行用户输入,并将其存储在一个变量中。
示例代码如下:
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
scanner := bufio.NewScanner(os.Stdin)
for {
fmt.Print("请输入内容:")
if scanner.Scan() {
input := scanner.Text()
fmt.Println("您输入了:", input)
}
}
}
有时候,我们需要对用户输入进行一些限制,比如只允许输入特定的字符或者长度限制等。
通过使用if语句和字符串操作函数,我们可以对用户输入进行判断和处理。
示例代码如下:
package main
import (
"bufio"
"fmt"
"os"
"strings"
)
func main() {
scanner := bufio.NewScanner(os.Stdin)
for {
fmt.Print("请输入内容:")
if scanner.Scan() {
input := scanner.Text()
if strings.Contains(input, "golang") {
fmt.Println("您输入了:", input)
} else {
fmt.Println("输入无效,请重新输入!")
}
}
}
}
在最后一段代码中,我们并没有对scan方法的错误进行处理。实际上,这是一个严重的错误,因为如果发生了输入读取错误,我们应该及时处理并终止程序运行。
为了正确处理错误,我们需要在scan方法调用之后立即检查错误,并采取相应的措施。在上面的示例代码中,我们可以使用if语句检查scanner.Err()方法的返回值,如果不为空,则说明出现了错误。
示例代码如下:
package main
import (
"bufio"
"fmt"
"os"
"strings"
)
func main() {
scanner := bufio.NewScanner(os.Stdin)
for {
fmt.Print("请输入内容:")
if scanner.Scan() {
input := scanner.Text()
if strings.Contains(input, "golang") {
fmt.Println("您输入了:", input)
} else {
fmt.Println("输入无效,请重新输入!")
}
}
if scanner.Err() != nil {
fmt.Println("输入错误,程序终止!")
break
}
}
}