gpt4 book ai didi

go - 读取任意数量的输入标准输入

转载 作者:数据小太阳 更新时间:2023-10-29 03:21:29 29 4
gpt4 key购买 nike

我需要从 stdin 读取任意数量的输入。我有以下代码可以正常工作并从命令行读取任意数量的输入:

// Reads from command-line arguments
package main

import(
"fmt"
"os"
"strconv"
)

func main(){
for _,arg := range os.Args[1:] {
n, err := strconv.Atoi(arg)
if err != nil {
fmt.Fprintf(os.Stderr, "Error: %v\n", err)
os.Exit(1)
}
fmt.Printf("%d\n", n)
}
}

但是,我想将其更改为从 stdin 读取,我所做的如下:

// Reads input from stdin
package main

import "fmt"

func main(){
var a, b, c, d int
count, err := fmt.Scan(&a, &b, &c, &d)
fmt.Printf("Arguments Read: %d\n", count)
fmt.Printf("%d, %d, %d, %d\n", a, b, c, d)
if err != nil {
fmt.Printf("%v\n", err)
}
}

但在第二个版本的代码中,我必须从 stdin 中读取固定数量的参数。如何从 stdin 中读取任意数量的参数?

最佳答案

您可以遍历条件并继续从标准输入读取输入,直到满足该条件。在下面的示例中,如果输入是“exit”,程序将完成读取并输出所有提供的参数。

inputOpen := true
var args []string

fmt.Println("Provide argument, type exit to finish")
for inputOpen {
var arg string
var err error

if _, err = fmt.Scan(&arg); err != nil {
fmt.Printf("%v\n", err)
}


if arg == "exit" {
inputOpen = false
} else {
args = append(args, arg)
}
}

fmt.Println(fmt.Sprintf("Arguments: %v", args))

关于go - 读取任意数量的输入标准输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53030037/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com