JavaScriptを有効にしてください

【Go】入力された文字列を受け取る

 ·  ☕ 1 分で読めます · 👀... ページ閲覧数
この記事は2020/06/29にQrunchに掲載した内容です。

1行の入力を受け取る

1
2
3
4
5
6
7
8
import "fmt"

func main() {
    var a string
    fmt.Scan(&a)

    fmt.Println(a)
}

空白が入った入力を受け取る

fmt.Scanfを利用した取得方法

空白で区切られた文字のブロック数があらかじめわかっている場合に利用と良い。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
import "fmt"

func main() {
    var a string
    var b string
    var c int
    fmt.Scanf("%s %s %d", &a, &b, &c)

    fmt.Println(a)
    fmt.Println(b)
    fmt.Println(c)
}

// ↓結果イメージ↓
// aaa bbb 3
//
// aaa
// bbb
// 3

空白で区切られた文字のブロック数がそれぞれ変わる場合。
競プロでよくあるようなやつ。

1
2
hello world
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
import "fmt"

func main() {
    var inputWordLength string

    fmt.Scan(&inputWordLength)
    words := make([]string, inputWordLength)
    for i:=0; i<inputWordLength; i++ {
        fmt.Scanf("%d", &words[i])
        fmt.Println(words[i])
    }
}

fmt.Scanは空白が入った時の標準入力をそのまま受け取ることができず、空白の前までの文字列が保存されるようになる。

とりあえず1行まるごと取得したいときはbufioを使う。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
package main
import (
    "fmt"
    "os"
    "bufio"
    )

func main() {
    stdin := bufio.NewScanner(os.Stdin)

    stdin.Scan()
    input := stdin.Text()

    fmt.Println(input)
}

// ↓結果イメージ↓
// aaa bbb 3
//
// aaa bbb 3

参考

共有

BAMBi
著者
BAMBi
サーバサイド~インフラがメインでフロントも好きです。趣味はアニメ鑑賞、ゲーム、つまみ細工です。