我有这段代码:
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)
}
如果有人可以伸出援助之手。
答案 0 :(得分:5)
bufio.NewScanner
是用于创建新扫描仪的功能:
func NewScanner(r io.Reader) *Scanner
NewScanner返回一个新的Scanner来从r读取。拆分功能默认为ScanLines。
不是可以在函数签名中使用的类型。但是,bufio.NewScanner
会返回*bufio.Scanner
,而bufio.Scanner
是一种类型,您可以这么说:
func readInt(scanner *bufio.Scanner) int {
//...
}