使用fmt包中的数进行输入·Scanf·每种方法都有其适用的场景和优势
一、使用fmt包中的Scan系列函数进行输入
使用Go语言的标准库中的fmt包,我们可以方便地读取输入数据。这个包提供了一系列函数,比如Scan、Scanf和Scanln,来帮助我们读取输入。Scan:这个函数读取标准输入(通常是键盘输入),并且以空格分隔输入项,然后存储到传入的变量中。
Scanf:与Scan类似,但它允许使用格式化字符串来指定输入格式。
Scanln:类似于Scan,但它读取一整行,直到遇到换行符。
以下是一个使用Scanln进行输入的示例代码: ```go package main import ( "fmt" ) func main() { var name, age string fmt.Print("请输入你的名字: ") fmt.Scan(&name) fmt.Print("请输入你的年龄: ") fmt.Scanln(&age) fmt.Printf("你的名字是:%s,年龄是:%s\n", name, age) } ``` 在这个示例中,程序会等待用户输入名字和年龄,并将这些数据存储到变量name和age中。然后,程序会输出一个包含用户名字和年龄的消息。二、使用bufio包进行缓冲输入
当需要处理大量数据或逐行读取输入时,使用bufio包的缓冲输入更为高效。BufferedReader:这个函数创建一个带缓冲的读取器,可以逐行读取或按字节读取。
Scanner:创建一个扫描器,可以逐行读取输入,并自动处理换行符。
以下是一个使用bufio.Scanner进行逐行输入的示例代码: ```go package main import ( "bufio" "fmt" "os" ) func main() { reader := bufio.NewReader(os.Stdin) for { line, err := reader.ReadString('\n') if err != nil { break } fmt.Print(line) } } ``` 在这个示例中,程序会逐行读取用户输入并输出每一行内容,直到用户按下Ctrl+D(在Unix-like系统中)或Ctrl+Z(在Windows系统中)结束输入。三、通过读取文件进行输入
除了从标准输入读取数据外,Go语言还可以通过读取文件来获取输入数据。使用"os"和"io"包可以读取文件。
以下是一个从文件中读取内容并逐行输出的示例代码: ```go package main import ( "bufio" "fmt" "os" ) func main() { file, err := os.Open("input.txt") if err != nil { fmt.Println("打开文件失败:", err) return } defer file.Close() reader := bufio.NewReader(file) for { line, err := reader.ReadString('\n') if err != nil { break } fmt.Print(line) } } ``` 在这个示例中,程序会打开名为input.txt的文件,并逐行读取文件内容。每读取一行,程序都会将该行内容输出到标准输出。