[初学者向け]Goに触れてみる
想定読者
- Go言語を触ったこと無い方
はじめに
Go言語をご存知でしょうか。
公式のトップページから説明を拝借します。
Build simple, secure, scalable systems with Go
An open-source programming language supported by Google
Easy to learn and great for teams
Built-in concurrency and a robust standard library
Large ecosystem of partners, communities, and tools
私の解釈で意訳すると
- シンプルかつ安全で拡張性のあるシステムをつくろう。
- 簡単に学べてすごい。
- 組み込まれている標準ライブラリがよい。
- すごいエコシステムを形成している。(GoogleやNetflixなど有名企業が使っている)
ということで、早速触れてみましょう。
まずは触れてみる
新たなプログラミング言語に触る際、最初の環境構築で躓きがちです。
ただ、Go言語では、A Tour of Go と呼ばれるブラウザでGo言語を触れる環境があるのでそちらを利用しましょう。
文字列を出力する
hello.goとgoの拡張子でファイルを作成して、文字列を出力するコードです。
確かにシンプルですね。
package main
import "fmt"
func main() {
fmt.Println("Hello, 世界")
}
日時を出力する。
importに"time"を追記して、 time.Now() で現在時刻を習得できます。
package main
import (
"fmt"
"time"
)
func main() {
fmt.Println("Welcome to the playground!")
fmt.Println("The time is", time.Now())
}
基礎を学ぶ
続いて、こちらでGo言語の基礎を学びましょう。
Packages, variables, and functions. に触れて要点だけ整理します。
Packages
importしたパッケージはパスの最後の要素名を記述する。
importした "math/rand" は rand.Intn(10) といった感じ。
package main
import (
"fmt"
"math/rand"
)
func main() {
fmt.Println("My favorite number is", rand.Intn(10))
}
Functions
funcと呼ばれる関数の引数は、変数名の後に型名を書く。
関数の戻り値は、関数の後ろに書く。
func add(x int, y int) int といった感じ。
package main
import "fmt"
func add(x int, y int) int {
return x + y
}
func main() {
fmt.Println(add(42, 13))
}
Multiple results
関数は、複数の戻り値を返す事ができる。
a,b := sawp("hello","world") と関数の戻り値を受け取る際は、 := と書く。
普通だとデータオブジェクトを返すみたいな実装しそう。
package main
import "fmt"
func swap(x, y string) (string, string) {
return y, x
}
func main() {
a, b := swap("hello", "world")
fmt.Println(a, b)
}
Named return values
先程はreturn y, x と変数名を書いた。
しかし、return と戻り値の変数名を書かなくてもよい。
コード量を削減できそう。
package main
import "fmt"
func split(sum int) (x, y int) {
x = sum * 4 / 9
y = sum - x
return
}
func main() {
fmt.Println(split(17))
}
Variables with initializers
varと変数を宣言して初期値を与えれる。
boolと型を指定しなくても初期値の値から型を推論してくれる。
package main
import "fmt"
var i, j int = 1, 2
func main() {
var c, python, java = true, false, "no!"
fmt.Println(i, j, c, python, java)
}
Short variable declartions
関数内であれば var と書かなくても 変数名:=初期値 で変数を定義できる。
コードを短縮できる。
package main
import "fmt"
func main() {
var i, j int = 1, 2
k := 3
c, python, java := true, false, "no!"
fmt.Println(i, j, k, c, python, java)
}
Constants
定数は const 変数 = 定数値
関数の外でも中でも使える。もちろん定数なので、値の変更はできない。
package main
import "fmt"
const Pi = 3.14
func main() {
const World = "世界"
fmt.Println("Hello", World)
fmt.Println("Happy", Pi, "Day")
const Truth = true
fmt.Println("Go rules?", Truth)
}
おわりに
Go言語に触ってみました。
.goと呼ばれる拡張子。importでライブラリの宣言。
確かにシンプルな言語で、コードの短縮でき、可読性は良さそうです。
以上。
Discussion