PHP入門用の情報を集めてるとよく「GOやったほうがいいんじゃない?」といった趣旨の内容を見かけた。
「Google発のコンパイラ型言語でYouTubeにも使われてる!」
こんな文言を見るとなんかangular.jsを思い出す…。
触ってみないことにはわからないのでローカル(Windows10)で試します。
特徴
- コンパイラ型で静的型付け言語
- 並列処理に強い
- マスコットキャラが(良い意味で)うざい
インストール
多環境での導入が簡単にできそうです。さすグーグル。
全部やってくれるので実行後にコマンドプロンプトでgo version
。
テスト実行
- package mainが必須
- ランタイムエラー:
cannot run non-main package
- ランタイムエラー:
- package mainのmain関数が実行される
- ビルドエラー:
function main is undeclared in the main package
- ビルドエラー:
- セミコロンはいらない
- コメントは行(
//
)とブロック(/**/
)
1 2 3 4 5 |
//デフォルトでは環境に応じた実行ファイルを作る go build test.go //ビルドして実行する 実行ファイルはその場にはできない go run test.go |
1 2 3 4 5 |
package main import "fmt" func main() { fmt.Println("Hello GO World.") } |
変数宣言と基本型
変数宣言は以下のように書ける。
1 2 3 4 5 6 7 8 9 10 11 12 |
var v1 uint8 //通常宣言 var v2 ,v3 int//複数宣言 var v4 = 1.5 //初期化ありなら型省略可 var( //複数宣言(異なる型) v5 string v6 bool ) const c1 = "const" //読み取り専用 //関数内のみ可の書き方。関数外で使うと //non-declaration statement outside function body v7 := []int{1,2,3} |
基本型は以下。
-
bool
:論理値 -
int
(int8,16,32,64):符号付整数 -
uint
(uint8,16,32,64):符号なし整数 -
float32, 64
:浮動小数 -
complex64, 128
:複素数 -
[]xxx{}
:配列 -
arr[1:3]
:スライス型(配列の領域参照) -
struct{}
:構造体 -
*[5]int
:ポインタ型 -
func()
:関数型 -
interface{}
:インターフェース型 -
map[xxx]yyy
:マップ型 -
chan xxx
,chan<-xxx
,<-chan xxx
:チャネル型
デフォルトで複素数が使えるのは熱い。
色んな言語が混ざったような感覚で、使いやすいような混乱するような。
小規模な何かを作ってみていい感じならさらに使ってみようと思います。