Heim >Backend-Entwicklung >Golang >Wozu dient die Scan-Methode in der Go-Sprache?

Wozu dient die Scan-Methode in der Go-Sprache?

青灯夜游
青灯夜游Original
2021-03-15 16:46:586593Durchsuche

In der Go-Sprache wird die Scan()-Methode verwendet, um Text aus der Standardeingabe „os.Stdin“ zu lesen, also Daten vom Terminal abzurufen. Diese Methode gibt die Anzahl der erfolgreich gelesenen Daten und alle aufgetretenen Fehler zurück. Wenn die Anzahl der gelesenen Daten unter den angegebenen Parametern liegt, wird ein Fehlerberichtsgrund zurückgegeben.

Wozu dient die Scan-Methode in der Go-Sprache?

Die Betriebsumgebung dieses Tutorials: Windows 7-System, GO Version 1.18, Dell G3-Computer.

Scan-Serie

Go-Sprachpaket fmt enthält fmt.Scan, fmt.Scanf, fmt Scanln verfügt über drei Funktionen, die während der Programmausführung Benutzereingaben aus der Standardeingabe abrufen können. fmt包下有fmt.Scanfmt.Scanffmt.Scanln三个函数,可以在程序运行过程中从标准输入获取用户的输入。

fmt.Scan

语法

func Scan(a ...interface{}) (n int, err error)
  • Scan从标准输入扫描文本,读取由空白符分隔的值保存到传递给本函数的参数中,换行符视为空白符。
  • 本函数返回成功扫描的数据个数和遇到的任何错误。如果读取的数据个数比提供的参数少,会返回一个错误报告原因。

代码示例

func main() {
    var (
        name    string
        age     int
        married bool
    )
    fmt.Scan(&name, &age, &married)
    fmt.Printf("扫描结果 name:%s age:%d married:%t \n", name, age, married)
}

将上面的代码编译后在终端执行,在终端依次输入小明18false使用空格分隔。

$ ./scan_demo 
小明 18 false
扫描结果 name:小明 age:18 married:false

fmt.Scan从标准输入中扫描用户输入的数据,将以空白符分隔的数据分别存入指定的参数。

fmt.Scanf

语法

func Scanf(format string, a ...interface{}) (n int, err error)
  • Scanf从标准输入扫描文本,根据format参数指定的格式去读取由空白符分隔的值保存到传递给本函数的参数中。
  • 本函数返回成功扫描的数据个数和遇到的任何错误。

代码示例

func main() {
    var (
        name    string
        age     int
        married bool
    )
    fmt.Scanf("1:%s 2:%d 3:%t", &name, &age, &married)
    fmt.Printf("扫描结果 name:%s age:%d married:%t \n", name, age, married)
}

将上面的代码编译后在终端执行,在终端按照指定的格式依次输入小明、18false。

$ ./scan_demo 
1:小明 2:18 3:false
扫描结果 name:小明 age:18 married:false

fmt.Scanf不同于fmt.Scan简单的以空格作为输入数据的分隔符,fmt.Scanf为输入数据指定了具体的输入内容格式,只有按照格式输入数据才会被扫描并存入对应变量。

例如,我们还是按照上个示例中以空格分隔的方式输入,fmt.Scanf就不能正确扫描到输入的数据。

$ ./scan_demo 
小明 18 false
扫描结果 name: age:0 married:false

fmt.Scanln

语法

func Scanln(a ...interface{}) (n int, err error)
  • Scanln类似Scan,它在遇到换行时才停止扫描。最后一个数据后面必须有换行或者到达结束位置。
  • 本函数返回成功扫描的数据个数和遇到的任何错误。

代码示例

func main() {
    var (
        name    string
        age     int
        married bool
    )
    fmt.Scanln(&name, &age, &married)
    fmt.Printf("扫描结果 name:%s age:%d married:%t \n", name, age, married)
}

将上面的代码编译后在终端执行,在终端依次输入小明18false使用空格分隔。

$ ./scan_demo 
小明 18 false
扫描结果 name:小明 age:18 married:false

fmt.Scanln

fmt.Scan

Syntax

rrreee
  • Scan scannt Text aus der Standardeingabe und liest aus Leerzeichen Durch Trennzeichen getrennte Werte werden in den an diese Funktion übergebenen Argumenten gespeichert und Zeilenumbrüche werden als Leerzeichen behandelt.
  • Diese Funktion gibt die Anzahl der erfolgreich gescannten Daten und alle aufgetretenen Fehler zurück. Wenn die Anzahl der gelesenen Daten geringer ist als die angegebenen Parameter, wird ein Fehlerberichtsgrund zurückgegeben.

Codebeispiel

rrreeeKompilieren Sie den obigen Code und führen Sie ihn im Terminal aus. Geben Sie im Terminal Xiao Ming ein , 18 und false werden durch Leerzeichen getrennt. rrreeefmt.Scan scannt die vom Benutzer eingegebenen Daten aus der Standardeingabe und speichert die durch Leerzeichen getrennten Daten in den angegebenen Parametern. 🎜

🎜fmt.Scanf🎜

Syntax

rrreee
  • Scanf scannt Text aus der Standardeingabe Das durch den Formatparameter angegebene Format liest durch Leerzeichen getrennte Werte und speichert sie in den an diese Funktion übergebenen Parametern.
  • Diese Funktion gibt die Anzahl der erfolgreich gescannten Daten und alle aufgetretenen Fehler zurück.

Codebeispiel

rrreee🎜Kompilieren Sie den obigen Code und führen Sie ihn im Terminal aus. Geben Sie Xiao Ming, ein Reihenfolge gemäß dem angegebenen Format 18 und false. 🎜rrreee🎜fmt.Scanf unterscheidet sich von fmt.Scan, das einfach Leerzeichen als Trennzeichen für Eingabedaten verwendet, fmt.Scanf Für die Eingabedaten wird ein bestimmtes Eingabeinhaltsformat angegeben. Nur die dem Format entsprechenden Eingabedaten werden gescannt und in den entsprechenden Variablen gespeichert. 🎜🎜Wenn wir beispielsweise weiterhin im durch Leerzeichen getrennten Format wie im vorherigen Beispiel eingeben, kann fmt.Scanf die Eingabedaten nicht korrekt scannen. 🎜rrreee

🎜fmt.Scanln🎜

Syntax

rrreee
  • Scanln ähnelt Scan, es stoppt den Scanvorgang nur, wenn es auf a trifft Zeilenumbruch. Nach den letzten Daten muss ein Zeilenumbruch erfolgen, sonst muss die Endposition erreicht werden.
  • Diese Funktion gibt die Anzahl der erfolgreich gescannten Daten und alle aufgetretenen Fehler zurück.

Codebeispiel

rrreee🎜Kompilieren Sie den obigen Code und führen Sie ihn im Terminal aus. Geben Sie Xiao Ming, 18 und false werden durch Leerzeichen getrennt. 🎜rrreee🎜fmt.Scanln beendet den Scan, wenn ein Wagenrücklauf auftritt. Dies wird häufiger verwendet. 🎜🎜Empfohlenes Lernen: 🎜Golang-Tutorial🎜🎜

Das obige ist der detaillierte Inhalt vonWozu dient die Scan-Methode in der Go-Sprache?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn