Help us understand the problem. What is going on with this article?

Java 使いが Go言語を一日使って思ったこと

More than 3 years have passed since last update.

はじめに

タイトルに1日と書いていますが、はじめたのは一昨日くらいで、トータル8時間くらいはしたかな?と思ったので所感的なことをまとめます。

文字列の結合

よくループ中の文字列の結合に"+"は...的な記事を見かけますが、それではなく、文字列 + 数値の組み合わせのケースです。

Java だと

int bread = 13;
System.out.println("おまえは今まで食ったパンの枚数をおぼえているのか?");
System.out.println(bread + "枚 私は和食ですわ");

的な書き方をするけど。

Golang だと(すみません import とか省きます)

bread := 13
fmt.Println("おまえは今まで食ったパンの枚数をおぼえているのか?")
fmt.Printf("%d枚 私は和食ですわ\n", bread)

となる。

あとは型を変換したり。

bread := 13
breadStr := strconv.Itoa(bread)

三項演算子がない

ちゃちゃっと三項演算子で値返したいと思って書いたらシンタックスエラー。
ないのね...

Java だと

boolean isOk = true;
String text = isOk ? "OK" : "NG";

的なやつ。

Golang だと

isOk := true
text := "NG"
if isOk {
    text = "OK"
}

などなど。

ループ処理は for文のみ

Java8 とかだと StreamAPI とかでメソッドチェーン使ってどんどん書いていくけど、それができない。
拡張for文に近いソレがあるけど、少し注意が必要。

Java だと

String[] array = {"a", "b", "c"};

// StreamAPIとか
Arrays.stream(array).peek(System.out::println);

// 拡張for文とか
for (String text : array) {
    System.out.println(text);
}

的なやつ。

Golang だと

NG.go
array := []string{"a", "b", "c"}

for text := range array {
    fmt.Println(text)
}

だとダメで

OK.go
array := []string{"a", "b", "c"}

for _, text := range array {
    fmt.Println(text)
}

ですね。
for文で使える range は Multiple Return Values なので、1件目の戻り値はインデックス、2件目の戻り値が配列に格納されている値です。
2件目を省略してもエラーにならないので注意が必要です。

その他のこと

goroutine とか channel とかの非同期まわり、interface{} と型の関係とか、まだあまり触ってないので、もう少し触ってから書こうと思います。

おわりに

Go言語面白いです!
(と言うか、新しい言語の学習が楽しいのか)

色々と書く時に困ることもありますが、割ととっつきやすいなーと思いました。

kurararara
for(;;)alert('私が町長です。');
peoplesoftware
主にJavaやC#を使った受託開発や、BaaSなどのクラウドサービス、スマホアプリの自社開発を行っている会社です。※各記事の内容は個人の見解であり、所属する会社の公式見解ではありません。
http://www.pscsrv.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした