今後は、少しづつ技術系記事を増やして行こと思っています。
変数定義
Goでは変数定義をする際、値の宣言と紐付けを行う必要があります。
var message string message = "hello world"
こんな感じです。varで宣言した後変数名、変数の型を定義する必要があります。また、宣言と同時に変数を定義したらこのように省略ができます。
var message = "hello world"
しかし、こんなめんどくさいことは毎回せず一番よく使われる形があります。
それがこちら
message := "hello world"
コロンとイコールで繋いであげる感じですね。これで変数に値を代入しているような記法になり非常に直感的でわかりやすいです。
続いて型が異なる変数名を同時に宣言したい場合は以下のようにすることができます。
var ( name string age int ) name = "hoge" age = 50
こんな感じですね。しかし変数定義で一つ注意があります。変数名を小文字で始めた場合は、その宣言したパッケージの中でのみがスコープとなります。また大文字で始めた場合は他のどのパッケージでも使用することができるという点です。
ポインタ変数
このポインタという概念はrailsを主に扱ってきた私にとっては、馴染みのないものだったので最初戸少し戸惑いました。
簡単に説明すると、変数宣言をするとメモリ上に領域を確保するのですが、その確保した領域のアドレスを指定する変数をポインタ変数と呼びます。
それでは具体例をあげてポインタの書き方を説明します。
以下のコードをみてください。
package main import "fmt" func main() { name := "hoge" var pname *string pname = &name fmt.Println(&pname) fmt.Println(*pname) }
こちらのコードで行なっていることとしては、
簡単にかくとこんな感じです。ポインタの注意点として一つあげるとすると、普普通の変数とは違い演算ができないということです。
繰り返し
Goでの繰り返し処理はforしかありません。whileなどがない点から非常にシンプルでわかりやすいですです!書き方もc言語やjavascriptと同じような書き方ができるのですが、()がなくなっている点に注意してください。
for i = 0; i < 5; i++ { fmt.println(i) }
で、0~4までの数字を出力するような繰り返し処理を行うことができます。
また、while文っぽく記述すると
i := 0 for i < 5 { fmt.Println(i) i++ }
のような書き方もできますね。
条件分岐
続いては、条件分岐の例を見てみます。具体的な例としては、以下のようなものです。
pointsが55の時、80点以上だったら50点以上だったら、それ以外だったらそれぞれの値の出力行います。
if points := 55; points > 80 { fmt.Println("good!") } else if points > 50{ fmt.Println("So so") } else { fmt.Println("bad") }
Goの特徴としては、最初の基準値をif文の中で定義できるところです。その他の箇所は基本的に他の言語と同じような感じですね。
配列
最後はGoでの配列をみていきます。基本的な配列の書き方は以下のように書きます。
a := [3]int{3, 4, 5}
簡単な説明をすると、変数aに要素が3個あるような配列を定義してその初期値として、3、4、5を格納しているという感じですね。
しかし、配列の中身を初期値で宣言する場合中身の数は宣言しなくてもわかるので、次のように省略することができます。
a := [...]ini{3, 4, 5}
添字の中身を...で置き換えることができます。
スライス
Go言語では配列と似たデータ構造でスライスというものがあります。
しかし、スライスの方が使い勝手良いので配列よりもこちらの方がよく使われます。それでは基本的なスライスの作りかたをみていきましょう。
配列の要素をスライスで切り出していきます。
a := [...]int{2, 3, 4, 5, 6} s := a[2:4]
上記では、まず中身が[2, 3, 4, 5, 6
]のような配列を定義しています。
その後で、スライスを使って配列の中身を抜き出して、新たなデータ構造を作っています。
まず、sを定義して、aの配列のインデックス番号2から4未満までの要素を抜き取っています。なので、今回の例でいうと4と5を抜き取ったスライスを宣言しています。よって、中身のsには[4, 5]のような値が格納されていることになりますね。
また、スライスは配列とは違ってデータの中身を変更することができます。例えば、中身の5の値を7に変更する場合はこのようになります。
s[1] = 7
sは[4, 5]が格納された、スライスでインデックス番号[1]、すなわち5を指定して、イコールで結び7に変更しているという感じですね。
スライスは、配列のようなデータ構造をもち、さらに、値を追加したり、変更したり、抜き出したり、することができるので、非常に柔軟性があるデータ構造になっています。
まとめ
今回は、自分の備忘録としてgoの基礎文法の要点だけをまとめました!技術系記事を書くのは難しいですねえ。次回からも頑張ります。
この記事へのコメントはありません。