Heim > Artikel > Backend-Entwicklung > So verwenden Sie die Scan-Methode, um Konsoleneingaben zu implementieren
In der Go-Sprache können Sie die Methode scan
verwenden, um Daten aus der Standardeingabe zu lesen. Die Methode scan
kann jede Art von Daten lesen, einschließlich Zeichenfolgen, Zahlen, boolesche Werte usw. In diesem Artikel wird detailliert beschrieben, wie Sie die Methode scan
verwenden, um Konsoleneingaben zu implementieren. scan
方法从标准输入中读取数据。scan
方法可以读取任意类型的数据,包括字符串、数字、布尔值等等。本文将详细介绍如何使用scan
方法实现控制台输入。
scan
方法的基本语法如下:
func Scan(a ...interface{}) (n int, err error)
从输入中读取数据,并将其存储到指定的参数中。参数a
表示需要读取的数据,可以传递任意个参数,每个参数都是一个指针类型,用于存储输入的数据。返回值n
表示成功读取的参数个数,返回值err
表示可能出现的错误。
下面是一个简单的例子,演示如何从控制台中读取两个整数:
func main() { var a, b int fmt.Print("请输入两个整数:") n, err := fmt.Scan(&a, &b) if err != nil { fmt.Println(err) return } fmt.Printf("成功读取了 %d 个参数:%v\n", n, []int{a, b}) }
通过上面的代码,我们可以看到Scan
方法的基本用法。执行上面的代码,程序将提示用户输入两个整数,用户输入完成后,程序会将这两个整数存储到变量a
和b
中,并输出这两个整数。
Scan
方法有以下几个特性:
Scan
方法在读取数据时,会自动忽略掉数据之间的空格。如下面的代码所示:
func main() { var a, b, c string fmt.Print("请输入三个字符串:") n, err := fmt.Scan(&a, &b, &c) if err != nil { fmt.Println(err) return } fmt.Printf("成功读取了 %d 个参数:%v\n", n, []string{a, b, c}) }
输入字符串hello world go
,程序将自动忽略掉字符串之间的空格,并输出这三个字符串。
Scan
方法在读取数据时,会等待用户输入回车符n
,表示输入完成。如果用户没有输入回车符,程序将一直等待用户输入。如下面的代码所示:
func main() { var s string fmt.Print("请输入一个字符串:") n, err := fmt.Scan(&s) if err != nil { fmt.Println(err) return } fmt.Printf("成功读取了 %d 个参数:%v\n", n, s) }
输入字符串hello
后,程序并不会立即输出结果,而是等待用户输入回车符n
,才会输出结果。
Scan
方法在读取数据时,不会读取输入中的换行符n
。比如,当我们通过Scan
方法读取一个字符串时,输入字符串中的换行符n
不会被读取。如下面的代码所示:
func main() { var s string fmt.Print("请输入一个字符串:") n, err := fmt.Scan(&s) if err != nil { fmt.Println(err) return } fmt.Printf("成功读取了 %d 个参数:%v\n", n, s) }
输入字符串hellonworld
,程序只会读取到字符串hello
,不会读取到字符串中的换行符n
。
Scan
方法的实现是基于fmt
包的Scanf
函数。Scanf
方法有以下几个特性:
Scanf
方法支持格式化输入。可以通过格式化字符串指定需要读取的数据类型。比如,我们可以通过以下格式化字符串读取一个整数和一个字符串:
func main() { var a int var b string fmt.Print("请输入一个整数和一个字符串:") n, err := fmt.Scanf("%d %s", &a, &b) if err != nil { fmt.Println(err) return } fmt.Printf("成功读取了 %d 个参数:%v\n", n, []interface{}{a, b}) }
上面的代码中,定义的格式化字符串"%d %s"
表示先读取一个整数,再读取一个字符串,中间用空格分隔。
Scanf
方法支持自定义分隔符。默认情况下,Scanf
方法以空格作为分隔符。可以通过Scanf
方法的ScanState
参数,自定义分隔符。如下面的代码所示:
func main() { var a, b string fmt.Print("请输入两个字符串,用逗号分隔:") s := bufio.NewScanner(os.Stdin) s.Split(func(data []byte, atEOF bool) (adv int, token []byte, err error) { for i := 0; i < len(data); i++ { if data[i] == ',' { return i + 1, data[:i], nil } } return 0, data, bufio.ErrFinalToken }) if s.Scan() { a = s.Text() } if s.Scan() { b = s.Text() } fmt.Printf("您输入的字符串是:%v\n", []string{a, b}) }
上面的代码中,我们通过bufio
包的NewScanner
方法创建一个Scanner
对象,并通过Split
方法自定义了分隔符。在分隔函数中,我们将逗号作为分隔符,以解析输入字符串,并将其存储到变量a
和b
中。
通过本文的介绍,我们了解了Scan
方法的基本语法、特性以及如何实现控制台输入。需要注意的是,Scan
方法在处理输入时,不会将换行符n
读取到输入中。另外,Scanf
scan
lautet wie folgt: 🎜rrreee🎜Daten aus der Eingabe lesen und in den angegebenen Parametern speichern. Der Parameter a
stellt die Daten dar, die gelesen werden müssen. Es können beliebig viele Parameter übergeben werden. Jeder Parameter ist ein Zeigertyp, der zum Speichern der Eingabedaten verwendet wird. Der Rückgabewert n
gibt die Anzahl der erfolgreich gelesenen Parameter an und der Rückgabewert err
weist auf mögliche Fehler hin. 🎜🎜Das Folgende ist ein einfaches Beispiel, das zeigt, wie man zwei Ganzzahlen von der Konsole liest: 🎜rrreee🎜Durch den obigen Code können wir die grundlegende Verwendung der Scan
-Methode sehen. Beim Ausführen des obigen Codes fordert das Programm den Benutzer auf, zwei Ganzzahlen einzugeben. Nachdem die Benutzereingabe abgeschlossen ist, speichert das Programm die beiden Ganzzahlen in den Variablen a
und b
und diese beiden Ganzzahlen ausgeben. 🎜Scan
-Methode hat die folgenden Funktionen: 🎜Scan
-Methode in When Beim Lesen von Daten werden Leerzeichen zwischen den Daten automatisch ignoriert. Wie im folgenden Code gezeigt: 🎜rrreee🎜Geben Sie die Zeichenfolge hello world go
ein. Das Programm ignoriert automatisch die Leerzeichen zwischen den Zeichenfolgen und gibt diese drei Zeichenfolgen aus. 🎜Scan
Daten liest, wartet sie darauf, dass der Benutzer das Wagenrücklaufzeichen n
eingibt. zeigt an, dass die Eingabe abgeschlossen ist. Wenn der Benutzer kein Wagenrücklaufzeichen eingibt, wartet das Programm auf eine Benutzereingabe. Wie im folgenden Code gezeigt: 🎜rrreee🎜Nach der Eingabe der Zeichenfolge hello
gibt das Programm das Ergebnis nicht sofort aus, sondern wartet darauf, dass der Benutzer das Wagenrücklaufzeichen n
eingibt >. Ergebnisse ausgeben. 🎜Scan
liest beim Lesen von Daten das Zeilenumbruchzeichen n
nicht. Wenn wir beispielsweise eine Zeichenfolge mit der Methode Scan
lesen, wird das Zeilenumbruchzeichen n
in der Eingabezeichenfolge nicht gelesen. Wie im folgenden Code gezeigt: 🎜rrreee🎜Geben Sie die Zeichenfolge hellonworld
ein. Das Programm liest nur die Zeichenfolge hello
und nicht das Zeilenumbruchzeichen in der Zeichenfolge n
. 🎜Scan
basiert auf der Funktion Scanf
des Pakets fmt
. Die Scanf
-Methode verfügt über die folgenden Funktionen: 🎜Scanf
-Methode unterstützt formatierte Eingaben. Sie können den zu lesenden Datentyp über einen Formatstring angeben. Beispielsweise können wir eine Ganzzahl und eine Zeichenfolge über die folgende Formatzeichenfolge lesen: 🎜rrreee🎜Im obigen Code bedeutet die definierte Formatzeichenfolge "%d %s"
, dass zuerst eine Ganzzahl gelesen und dann gelesen wird eine durch Leerzeichen getrennte Zeichenfolge. 🎜Scanf
-Methode unterstützt benutzerdefiniertes Trennzeichen. Standardmäßig verwendet die Methode Scanf
Leerzeichen als Trennzeichen. Sie können das Trennzeichen über den Parameter ScanState
der Methode Scanf
anpassen. Wie im folgenden Code gezeigt: 🎜rrreee🎜Im obigen Code erstellen wir ein Scanner
-Objekt über die NewScanner
-Methode des bufio
-Pakets. und übergeben Sie die Methode Split
, um das Trennzeichen anzupassen. In der Trennzeichenfunktion verwenden wir Komma als Trennzeichen, um die Eingabezeichenfolge zu analysieren und in den Variablen a
und b
zu speichern. 🎜Scan
und die Implementierung von Konsoleneingaben gelernt. Es ist zu beachten, dass die Methode Scan
bei der Verarbeitung der Eingabe das Zeilenumbruchzeichen n
nicht in die Eingabe einliest. Darüber hinaus unterstützt die Methode Scanf
benutzerdefinierte Trennzeichen und formatierte Eingaben, wodurch Konsoleneingaben flexibler verarbeitet werden können. 🎜Das obige ist der detaillierte Inhalt vonSo verwenden Sie die Scan-Methode, um Konsoleneingaben zu implementieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!