输入

Scan系列

该系列读取标准输入,一般指用户从键盘的输入。

  1. func Scan(a ...interface{}) (n int, err error)

读取方式:从标准输入读取参数,输入由空格分隔,换行符视为空白符。
返回:返回成功读取的参数个数 n,如果有错,错误原因在 err 中。

  1. func Scanf(format string, a ...interface{}) (n int, err error)

读取方式:按照 format 指定的格式,从标准输入读入。
返回:返回成功读取的参数个数 n,如果出错,错误原因由 err 指出。
注意:当同时读入字符串和数字时,要确保在 format 指定的分隔符不会被当作字符串的一部分,但是空格不会被当作字符串的一部分,因此可以利用空格避免这样的情况。

  1. var i int
  2. var s string
  3. fmt.Scanf("%s,%d", &s, &i) // fmt.Scanf("%s %d", &s, &i) 可以得到想要的输出
  4. fmt.Println(i)
  5. fmt.Println(s)
  6. 输入:
  7. hello,21
  8. 输出:
  9. 0
  10. hello,21

可以看到 , 被当作了字符串的一部分而不是分隔符。

  1. func Scanln(a ...interface{}) (n int, err error)

读取方式:与 Scan 类似,遇到换行或 EOF 才会终止。
返回:返回成功读取的参数个数 n,如果有错,错误原因在 err 中。

Sscan系列

  1. func Sscan(str string, a ...interface{}) (n int, err error)
  2. func Sscanf(str string, format string, a ...interface{}) (n int, err error)
  3. func Sscanln(str string, a ...interface{}) (n int, err error)

该系列与 Scan 系列类似,只不过是从指定字符串(即第一个参数 str)读入。

Fscan系列

  1. func Fscan(r io.Reader, a ...interface{}) (n int, err error)
  2. func Fscanf(r io.Reader, format string, a ...interface{}) (n int, err error)
  3. func Fscanln(r io.Reader, a ...interface{}) (n int, err error)

该系列与 Scan 系列类似,只不过是从 io.Reader 读入,可用于读文本文件。

输出

有 Print 系列和 Fprint 系列,用法和输入差不多。