あなたはユーザー入力を取りに行くにしたい場合は、言語では、スキャンの方法を使用します。スキャン今日はその使用との違いを教えて、外出先での多くの言語があります。
そして、同様の印刷は、スキャンはまた、3つのカテゴリに分類されています。
- スキャン、scanfのとScanln:os.Stdinは(端末からデータを取得するために)標準入力からテキストを読みます
- FSCAN、fscanfは、Fscanln:io.Readerは、指定されたインターフェイス(ジェネリック)からテキストを読みます
- SSCAN、sscanfは、Sscanln:(文字列からデータを取得するには)パラメータ文字列をテキストから読み込みます
スキャン:
语法: func Scan(a ...interface{}) (n int, err error)
例:
func main() {
var str string
fmt.Printf("请输入内容:")
fmt.Scan(&str)
fmt.Printf("str: %s",str)
}
/* scan将碰到第一个空格或换行符之前的内容赋值给变量。如果
scan中有多个变量,变量值用空格或换行符分割。所以换行和空
格是不能存储到变量内的。
*/
scanf関数:
语法:func Scanf(format string, a ...interface{}) (n int, err error)
例:
func main() {
var (
name string
age int
)
fmt.Printf("请输入内容:")
fmt.Scanf("name:%s age:%d",&name,&age)
fmt.Printf("n: %s, a:%d",name,age)
}
Scanln:
语法:func Scanln(a ...interface{}) (n int, err error)
例:
func main() {
var str string
fmt.Printf("请输入内容:")
fmt.Scanln(&str)
fmt.Printf("str: %s",str)
}
//Scanln类似Scan,但在遇到换行符时会立刻停止扫描。
要約:;スキャン待機する入力パラメータを満たすの値までスキャンとScanln実質的に同一の、唯一の違いは、複数の変数を読み取る場合と、直接改行Scanln端は、可変入力値がゼロ値を読んでいないことです改行の後の数字が終了します。
SSCAN、sscanfは、Sscanln
语法
func Sscan(str string, a ...interface{}) (n int, err error)
func Sscanf(str string, format string, a ...interface{}) (n int, err error)
func Sscanln(str string, a ...interface{}) (n int, err error)
例:
func main() {
var i1,i2 int
fmt.Sscan("100\n200",&i1,&i2)
fmt.Printf("int1: %d,int2: %d", i1,i2)
}
//用法和scan基本一样,只是改成从字符串获取数据
FSCAN、fscanfは、Fscanln:
func Fscan(r io.Reader, a ...interface{}) (n int, err error)
func Fscanf(r io.Reader, format string, a ...interface{}) (n int, err error)
func Fscanln(r io.Reader, a ...interface{}) (n int, err error)
/*
只要对象实现了read方法(满足io.Reader接口),就能使用此方法。上面提到的Scan,Scanf,Scanln和Sscan,Sscanf,Sscanln都是有此方法封装而来。
使用方法和上面相同,只不过要多指定一个实现read方法的源。
*/
上記方法は、その別の空間であるため、データはスペースで取得することができないので。あなたはこのようなニーズを持っている場合は、達成するためにBUFIOを使用することができます。次のとおりです。
func main() {
reader := bufio.NewReader(os.Stdin)
fmt.Print("输入信息:")
input, _ := reader.ReadString('\n')
fmt.Printf("n: %s",input)
}
//这样会将换行符之前的数据全部赋值给input