Go言語とはなにか? †
- 概要
- Google
- シンプルな言語仕様
- 高速
- 並行プログラミング
- 環境
- CentOS7 (Vagrant)
- sudo yum install golang
$ pwd
/home/vagrant/golang_lessons
$ sudo yum -y install golang
$ go version
go version go1.6.3 linux/amd64
はじめてのGoプログラム †
package main
import "fmt"
func main() {
fmt.Println("hello world")
}
$ go build hello.go
$ ls
hello hello.go
$ ./hello
hello world
$ go run hello.go
hello world
- 言語の特徴
- 1行コメントは「//」複数行コメントは「/* */」
- 文末に「;」は不要
- インデントはスペースではなくタブ推奨
変数を使ってみよう †
func main() {
var msg string
msg = "hello world"
fmt.Println(msg)
}
- 変数宣言と同時に値代入 ※ 型 (string) は省略可能
func main() {
var msg = "hello world"
fmt.Println(msg)
}
func main() {
msg := "hello world"
fmt.Println(msg)
}
$ go run hello.go
hello world
func main() {
// var a, b int
// a, b = 10, 15
a, b := 10, 15
}
func main() {
var (
c int
d string
)
c = 20
d = "hoge"
}
- 変数名の規則
- 1文字目が小文字: そのパッケージ内からのみアクセス可
- 1文字目が大文字: 他のパッケージからもアクセス可
- 変数、定数、関数についても同じルール
基本データ型を使ってみよう †
- 文字列: string
- "hello"
- 初期値: 空文字 "" ※ nil では無い
package main
import "fmt"
func main() {
a := 10
b := 12.3
c := "hoge"
var d bool
fmt.Printf("a:%d, b:%f, c:%s, d:%t\n", a, b, c, d)
}
$ go run hello.go
a:10, b:12.300000, c:hoge, d:false
定数を使ってみよう †
package main
import "fmt"
func main() {
const name = "taguchi"
name = "fkoji"
fmt.Println(name)
}
$ go run hello.go
# command-line-arguments
./hello.go:7: cannot assign to name
- iota を使った定数宣言 ※ 自動で連番の値を付与
package main
import "fmt"
func main() {
const (
sun = iota // 0
mon // 1
tue // 2
)
fmt.Println(sun, mon, tue)
}
$ go run hello.go
0 1 2