入力:golang

11962 ワード

導入


ゴランのこの4番目のセクションでは、ユーザー入力の基本を理解されます.ゴランでは、いくつかの機能をユーザ入力を得ることができますC プログラミング言語scanf . 入力のこのタイプは非常に強力であり、受信する入力により多くのコントロールを与えます.

スキャン機能


The Scan 関数は、デリミタとしてスペースを持つ値を取得するのに役立ちます.これは、入力がスペースまたは改行を加えるだけに限られることを意味します.入力値を格納する変数への参照を渡すことで、関数を使用できます.したがって、次のようにゴランで基本的な入力を行うことができます.
package main

import "fmt"

func main() {
    var pname string
    fmt.Println("Enter your favourite programming language: ")
    fmt.Scan(&pname)
    fmt.Println("So, your favourite programming language is",pname)
}
$ go run scan.go
Enter your favourite programming language:
python
So, your favourite programming language is python
変数を参照する必要があるので、入力を格納するために変数を入力する必要があります.話をします& そして、別々の記事のポインター.我々はScan 関数を変数への参照渡しpname AS&pname つまり、変数のメモリアドレスを取得するpname , 私たちはちょうどアドレスを渡すint スキャン関数に対して、残りの値を入力して入力値を格納します.それから、通常、変数と操作をアクセスします.
ここで、入力にスペースを追加すると、スペースの後の値がスキャン関数で選択されません.それは厳密にスペースを見た後に値を入力を受け入れる停止します.我々は一度に複数のvaraiblesを入力するためにこれを使用することができます.空間に遭遇する前にスキャンが入力されるので、複数の変数参照を渡すことができ、入力として追加できます.
var (
    name   string
    age    int
    gender rune
)
fmt.Println("Enter your name age and gender: ")
fmt.Scan(&name, &age, &gender)
fmt.Printf("Hello %s, you are a %c and %d years old", name, gender, age)
$ go run scan.go
Enter your name age and gender:
Meet 19 77
Hello Meet, you are a M and 19 years old
ここでは、複数の変数を宣言しますname , age , and gender ASstring , int , and rune それぞれ.それから、我々はコンマ分離された変数によって一つのスキャン声明でこれらのすべてを入力することができます.ここでは、入力する必要がありますrune 整数値として、フードの下で、それは整数別名です.だから、我々は入力77M ASCII文字とUnicode文字集合でさえ.このように、我々はスキャン機能で複数の変数を入力することができました.

SCANF関数


The Scanf 関数はscanf C言語では、入力された入力の種類を指定することができます.これは私たちの問題を解決する77 の代わりにM 前の例の性別変数で.scanf関数は、プレースホルダの型と区切り文字を指定することで入力を受け付けます.区切り文字は基本的に2つ以上のエンティティ間のセパレータです.彼女はどちらかの空間分離または\n 入力区切りとして、我々は入力を取っている間、互いから入力を切り離したいです.
var (
    name   string
    age    int
    gender rune
)
fmt.Println("Enter your name age and gender: ")
fmt.Scanf("%s %d %c", &name, &age, &gender)
fmt.Printf("Hello %s, you are a %c and %d years old", name, gender, age)
$ go run scanf.go
Enter your name age and gender:
Meet 12 M
Hello Meet, you are a M and 12 years old


どのようにクールですか?それは間違いなくどのように入力してどのように多くのコントロールを与える.入力はスペース区切りの値だけです.では、どのように入力され、格納されるかをより詳細に制御しようとしましょう.
var (
    name   string
    age    int
    gender rune
)
fmt.Println("Enter your name age and gender: ")
fmt.Scanf("%s \n %d %c", &name, &age, &gender)
fmt.Printf("Hello %s, you are a %c and %d years old", name, gender, age)
$ go run scanf.go
Enter your name age and gender:
Meet
12 M
Hello Meet, you are a M and 12 years old
加えることによって\n の間に%s ( name )および%d (年齢)、私たちは別の行に性別を1行と年齢の名前を入力するユーザーが欲しい.宇宙によって分離される前の年齢と性別.

Scanln関数


The Scanln 関数は、改行/Enterキーを押した後の入力を止めるだけで、スキャン関数の変更です.したがって、これを使用して複数の変数を入力することができます.
var s string
fmt.Println("Enter a string: ")
fmt.Scanln(&s)
fmt.Println(s)
$ go run scanln.go
Enter a string:



$ go run scanln.go
Enter a string:
Can't type
Can't

$ ype
-bash: ype: command not found
scanln関数は入力として空の文字列を受け付けます.それはちょうど新しいライン文字を得る必要があります、そして、それは終了します、それもスペース分離された値を受け入れます.
スキャンとScanLNの重要な違いは、Scanlnがスペースを切り離される入力を受け入れないということです.そして、複数の入力があるならば、Scan機能はNewline/Enterをスペースと考えます.下の例では、物事は絶対に明確になります.
// scan.go
package main

import "fmt"

func main() {
        var (
                name   string
                age    int
                gender rune
        )
        fmt.Println("Enter your name age and gender: ")
        fmt.Scan(&name, &age, &gender)
        fmt.Printf("Hello %s, you are a %c and %d years old", name, gender, age)
}

//scanln.go
package main

import "fmt"

func main() {
        var s string
        fmt.Println("Enter a string: ")
        fmt.Scanln(&s)
        fmt.Println("Inputted string : ", s)
}
$ go run scan.go
Enter your name age and gender:

Meet

14



77
Hello Meet, you are a M and 14 years old

$ go run scanln.go
Enter a string:

Inputted string :
私たちは、それがすべての入力値を入力するまで、スキャン機能は終了しません.scanln関数は、改行文字( Enterキー)を押すだけで待ちます.
それはこの部分からです.すべてのコード例とコマンドの参照は100 days of Golang githubリポジトリ.

結論


したがって、これはgolangの基本的な入力技術です.我々はfmt パッケージScan , Scanf , and Scanln これにより、特定のパターンで入力を得ることができます.うまくいけば、この記事の部分から、我々は文字列、配列、それらを入力する方法のようなさらなる探査のためのしっかりした基盤を構築することができます.お読みありがとうございます.何か質問やフィードバックがある場合は、コメントや社会的なハンドルで私に知らせてください.ハッピーコーディング