Go言語初心者の忘備録です
直近はPHPでの開発をしていました。rubyやjavaも少し。Go言語は全くの初心者なのでまずはおなじみHello world!の表示などで練習しました。
Go言語の環境設定
Goのインストール
こちらからダウンロードしてインストールします。
環境変数GOPATHが自動で設定されていなければ、好きなディレクトリを作成して設定します。$GOPATH/binにPATHを通します。
Cloud SDK をダウンロード
App Engine アプリケーションの管理に推奨されるツール Google Cloud SDKのインストールをする。

Setting up your development environment | App Engine standard environment | Google Cloud Documentation
goのバージョン確認
–versionや-vではないので注意が必要。
go version
パッケージインストール
go get -v golang.org/x/text/width
Go言語でHello world!
途中からHello world!ではなくなってきますがまあとりあえずGo言語の初歩をまとめました。
プログラム
hello.go
/*
* Go言語でハローワールドの練習
*/
package main
import "fmt"
func main() {
// 文字列を出力します
fmt.Println("Hello world!")
}
※インデントはスペースではなくてタブが推奨されている
コンパイル・実行
コンパイルと実行を別々に行う方法
$ go build hello.go $ ls hello.exe* hello.go $ ./hello.exe Hello world!
コンパイルと実行を一緒に行う方法
$ go run hello.go Hello world

go runの方だとコンパイルと実行を一度に出来るため開発時は基本的にはコチラを使用すると便利。 go runではhello.exeというファイルは生成されない。
Go言語で変数や定数を使ってHello world!
変数のサンプル
今度は変数を使ってHello world!します。
package main
import "fmt"
func main() {
// 型の定義と変数へ値をセット
var msg string
msg1 = "Hello world! 1"
// 1行に書くと型が省略できる
var msg2 = "Hello world! 2"
// 宣言と値の紐づけを更に省略できる
mas3 := "Hello world! 3"
// aとbの変数がどちらも数値型が入る場合、同時に宣言と値のセットが可能
var a, b int
a, b = 4, 5
// string同様省略も可能
c, d := 6, 7
// 異なる型をまとめて定義
var (
e int
msg4 string
)
e = 14
msg4 = "Hello world! 4"
// Printfは書式付きの出力ができる
// 整数値の場合は「%d」、float の場合は「%f」
// 文字列の場合は「%s」、そして真偽値の場合は「%t」を使う
// %vはどれでも汎用的に使える
fmt.Println(msg1)
fmt.Println(msg2)
fmt.Println(msg3)
fmt.Printf("a: %d b: %d c: %d d: %d e: %d\n", a, b, c, d, e)
fmt.Println(msg4)
}
memo変数の先頭が小文字の場合自分のパッケージだけの変数で、大文字の場合は他のパッケージから見える変数。
変数も定数も関数も同じルールで、fmtパッケージのPrintlnが大文字で他のパッケージからも使えるのがわかりやすい例(インポートすればどこからでも使える)
変数も定数も関数も同じルールで、fmtパッケージのPrintlnが大文字で他のパッケージからも使えるのがわかりやすい例(インポートすればどこからでも使える)
型の書き方や初期値など
| 型 | 書き方 | 初期値 | 備考 |
|---|---|---|---|
| string | “ほげ” | “” | |
| int | 2 | 0 | |
| float64 | 2.1 | 0.0 | 小数点付き数字 |
| bool | true | false |
nil // 何もない
a := 10
b := 11.1
c := "hoge"
d := false
var e int
fmt.Printf("a: %d b: %f c: %s d: %t e: %v\n", a, b, c, d, e)
定数でHello world!
定数はよくある全部大文字…ではなくconstで宣言したものが定数となる。
また、定数宣言の内で整数の連番を生成してくれるiota (イオタ)も使用可能。
const hello = "Hello world!"
// 1ずつ増やしてくれるイオタ
const (
zero = iota
one = iota
two = iota
)
fmt.Printf("%v:%v\n", hello, zero)
⇒Hello world!:0
// イオタは省略して書くことも可能
const (
zero = iota
one
two
)
Go言語で計算!
四則演算の表記方法
| 型 | 書き方 | 備考 |
|---|---|---|
| 足し算 | + | 文字列の連結にも使う |
| 引き算 | – | |
| かけ算 | * | |
| 割り算 | / | |
| 余り | % |
Go言語の計算式の書き方
// i = i + 2 を書く場合 i += 2 // j = j × 3 を書く場合 j *= 3
Go言語のポインタ
ポインタとは
ちゃんとした言語が長い方にはなじみがあるのだと思いますが、スクリプト言語が私は長いのでイマイチ使いこなせない。変数の位置を示すこと。
Go言語のポインタの使い方
// 変数を用意
hoge = 5
// ポインタの変数を用意
var phoge *int
phoge = &hoge // &をつけるとhogeのアドレスを取得できる
// phogeの領域にあるデータの値を「*」で取得できる
fmt.Println(phoge)
⇒アドレス
fmt.Println(*phoge)
⇒値の「5」が取れる
// 変数を変更
hoge = 6
fmt.Println(*phoge)
⇒値の「6」が取れる(こちらも変わっている)

コメント