いろんな言語の雰囲気だけ感じてみたい。GO言語の基本的な書き方編

 
こんにちは、松浦です。

ど文系のわたしが思い切って転職してエンジニアになり、開発を始めて1年が過ぎました。

プロジェクトによって、使用するプログラミング言語がJavaだったり、PHPだったり、VBAだったり・・・で、Javaを書きながら「あ! これPHPでの書き方だった! 間違えたー!」ってなることがあります。

・・・そんな時のわたしはちょっとドヤってたりします。
「複数の言語知っててつい出ちゃうわたしかっこいい(`・ω・´)どやっ」って。

知ってる言語をさらに増やしたい!
そして「あの言語ねー、知ってるーー○○だよねーー」って言いたい。

横着してお手軽に増やしたい! ので今回は環境構築も行わず、オンライン実行環境で試しつつ、GO言語の基本的な書き方をお勉強してみました。
「あ、ごめん今ちょっとフランス語出ちゃった(笑)」みたいな感覚でぽろっとGO言語でちゃうかもしれない。

Go言語とは

  • 2009年にGoogleが発表したプログラミング言語
  • 他の言語が持つような機能を削り、シンプル
  • 関数が複数の戻り値を返せる
  • 並行処理をサポート
  • ポインタを意識する必要がある
  • 公式キャラクターが可愛くて人気

Google様の言語ってだけでもかっこいい気がしませんか。
キャラクターのゴーファーくん、ほんとかわいいのでTシャツにして着て、それなに? って聞かれたら「Go言語だよ(笑)」ってドヤ顔で答えたい。

今回書いてみるのはこちら

  • 変数
  • IF文
  • For文
  • 複数の戻り値を返す関数

この辺りができれば「GO言語ってさー!」といえるはず(わたし基準)
雰囲気がわかればそれでよいのです。

オンライン開発環境は、paiza.ioを愛用してます。
GO言語を含め25言語も使えちゃいます、素晴らしいです。

変数

package main
import "fmt"

func main() {
    
    // 基本の書き方
    var KihonNum int
    KihonNum = 917
    
    var KihonStr string = "yummy"
    
    fmt.Println("KihonNum:",  KihonNum)
    fmt.Println("KihonStr:",  KihonStr)
    
    // 型は省略しても察してくれる
    var syoryakuNum = 31
    syoryakuNum = syoryakuNum + 9
    
    var syoryakuStr = "cat"
    syoryakuStr = syoryakuStr + "9"
    
    fmt.Println("syoryakuNum:",  syoryakuNum)
    fmt.Println("syoryakuStr:",  syoryakuStr)
    
    // さらに省略できたりする
    ryNum := 5;
    ryStr := "choco"
    
    fmt.Println("ryNum:",  ryNum)
    fmt.Println("ryStr:",  ryStr)
}

実行結果:
Go言語変数の結果差し替え

数値と文字列で3パターンずつ書いてみました。

基本形
var 変数名 型 = 初期値
省略形
var 変数名 = 初期値
さらに省略形
変数名 := 初期値

型より変数名の方が先です。Javaとは逆です。
省略形がJavaScriptと同じですね。
また混乱しちゃうなー (ノ ´▽`*)わくわく!

if文

package main
import "fmt"

func main() {
    
    testNum := 6
    
    // 基本の書き方
    if testNum == 5 {
        fmt.Println("testNumは5")
    } else if testNum == 6 {
        fmt.Println("testNumは6")
    } else {
        fmt.Println("testNumは5でも6でもない")
    }
}

実行結果:
if

ifの{}は省略不可で。条件文に()が付きません。
三項演算は使用できません。

誰が書いても同じ書き方になるようになってます。
switchは使用できるので、ifで複雑になりそうならぜひ。

For文

package main
import "fmt"

func main() {
    
    // 基本の書き方
    for i:=0; i<3; i++ {
        fmt.Println("i",  i)
    }
    
    // While風に書いてみる
    var nextflg = true;
    var cnt = 0;
    
    for nextflg {
        cnt = cnt + 1;
        
        if  cnt >= 3 {
            nextflg = false;
        }
        
        fmt.Println("cnt",  cnt)
    }
}

実行結果:
for

繰り返しはfor文のみです。
whileもありません。いざぎよさがなんかかっこいいです。

複数の戻り値を返す関数

package main
import "fmt"

func main() {
    
    // 引数で番号渡して、名前と年齢を返してもらう
    name,  age := getUserData(5)
    
    fmt.Println("名前:",  name)
    fmt.Println("年齢:",  age)
    
}

// 複数の戻り値を返す関数
func getUserData(userNo int)(name string,  age int) {
   
   if userNo == 1 {
       name = "Sinji"
       age = 14
   } else if userNo == 5 {
       name = "Kaworu"
       age = 15
   } else {
       name = ""
       age = 99
   }
   
    return
}

実行結果:
複数

GO言語ならでは!複数の戻り値を返す関数です。
どういう場面で使えるかなーーとか考えるのが楽しいです。

まとめ

変数の初期化の省略形のスタイリッシュさにぐっときました。
これとか超かっこよくないですか(複数の戻り値を返す関数より抜粋)

name, age := getUserData(5)

うん、かっこいい・・・。

以上、今回はGo言語をちょっとだけ触ってみました。
またなにか、別の言語も試してみたいと思いますっ。

記事をシェア
MOST VIEWED ARTICLES