从标准input读取一个整数

如何使用Go中的fmt.Scanf函数从标准input中获取整数input?

如果这不能使用fmt.Scanf来完成,那么读取单个整数的最好方法是什么?

http://golang.org/pkg/fmt/#Scanf

Go中包含的所有库都有详细logging。

这是说,我相信

 func main() { var i int _, err := fmt.Scanf("%d", &i) } 

做的伎俩

另一个可以更简洁的方法是使用fmt.Scan

 package main import "fmt" func main() { var i int fmt.Scan(&i) fmt.Println("read number", i, "from stdin") } 

这使用对参数types的reflection来发现input如何被parsing。

http://golang.org/pkg/fmt/#Scan

这是我的“快速IO”读取正整数的方法。 可以通过移位和预先布置内存来改善。

 package main import ( "io/ioutil" "bufio" "os" "strconv" ) func main() { out := bufio.NewWriter(os.Stdout) ints := getInts() var T int64 T, ints = ints[0], ints[1:] .. out.WriteString(strconv.Itoa(my_num) + "\n") out.Flush() } } func getInts() []int64 { //assumes POSITIVE INTEGERS. Check v for '-' if you have negative. var buf []byte buf, _ = ioutil.ReadAll(os.Stdin) var ints []int64 num := int64(0) found := false for _, v := range buf { if '0' <= v && v <= '9' { num = 10*num + int64(v - '0') //could use bitshifting here. found = true } else if found { ints = append(ints, num) found = false num = 0 } } if found { ints = append(ints, num) found = false num = 0 } return ints } 

Golang的fmt.Scan比Golang的fmt.Scanf简单(比Clang的scanf简单)

如果fmt.Scan错误,即如果不是零,则logging并返回

1读取单个variables:

 import ( "fmt" "log" ) var i int if _, err := fmt.Scan(&i); err != nil { log.Print(" Scan for i failed, due to ", err) return } fmt.Println(i) 

2读取多个variables:

 import ( "fmt" "log" ) var i, j, k int if _, err := fmt.Scan(&i, &j, &k); err != nil { log.Print(" Scan for i, j & k failed, due to ", err) return } fmt.Println(i, j, k) 

祝你好运

例如: http : //www.sortedinf.com/?q=golang-in-1-hour