gpt4 book ai didi

go - bufio.NewScanner 作为函数参数

转载 作者:IT王子 更新时间:2023-10-29 01:26:17 27 4
gpt4 key购买 nike

我有这个代码:

var scanner = bufio.NewScanner(os.Stdin)

func readInt() int {
scanner.Scan()
ans, _ := strconv.Atoi(scanner.Text())
return ans
}

func main() {
scanner.Split(bufio.ScanWords)

n := readInt()

fmt.Println(n)
}

现在,scanner 变量是全局的。我想将其设为本地并将其作为参数传递给 readInt() 函数。当我尝试这种方式时,它不起作用:

func readInt(scanner bufio.NewScanner) int {
scanner.Scan()
ans, _ := strconv.Atoi(scanner.Text())
return ans
}

func main() {
var scanner = bufio.NewScanner(os.Stdin)
scanner.Split(bufio.ScanWords)

n := readInt(scanner)

fmt.Println(n)
}

如果有人可以伸出援手。

最佳答案

bufio.NewScanner是用于创建新扫描仪的函数:

func NewScanner(r io.Reader) *Scanner
NewScanner returns a new Scanner to read from r. The split function defaults to ScanLines.

不是您可以在函数签名中使用的类型。但是,bufio.NewScanner 返回一个 *bufio.Scannerbufio.Scanner是一种类型,所以你可以说:

func readInt(scanner *bufio.Scanner) int {
//...
}

关于go - bufio.NewScanner 作为函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48635069/

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