JavaからGoへ
LLではないがLLに近い実行方法
コンパイルと同時に実行出来る
javac と java コマンドの合わせ技
$ go run main.go
package main
import (
"fmt"
)
func main() {
fmt.Println("SeasarCon2015")
}
$ go run main.go
SeasarCon2015
11.
JavaからGoへ
LLではないがLLに近い実行方法
コンパイルと同時に実行出来る
javac と java コマンドの合わせ技
$ go run main.go
package main
import (
"fmt"
)
func main() {
fmt.Println("SeasarCon2015")
}
$ go run main.go
SeasarCon2015
取り急ぎやってごらん
12.
JavaからGoへ
Java :classpath
Go : $GOPATH
go get で install
$ go get github.com/zenazn/goji
bin/
pkg/
src/
github.com/zanazn/goji
bitbucket.org/…
golang.org/…
13.
JavaからGoへ
Java :classpath
Go : $GOPATH
go get で install
$ go get github.com/zenazn/goji
bin/
pkg/
src/
github.com/zanazn/goji
bitbucket.org/…
golang.org/…
your_project/
.m2repo配下で開発するイメージ
JavaからGoへ
配布形式
Java: jar, war
配布には必要ライブラリを含める
Go : 単一の実行可能ファイル
クロスコンパイル
GOOS=windows GOARCH=amd64 go build -o seasar.exe
GOOS=darwin GOARCH=amd64 go build -o seasar
GOOS=linux GOARCH=amd64 go build -o seasar
31.
JavaからGoへ
配布形式
Java: jar, war
配布には必要ライブラリを含める
Go : 単一の実行可能ファイル
クロスコンパイル
配布がとくかく容易
GOOS=windows GOARCH=amd64 go build -o seasar.exe
GOOS=darwin GOARCH=amd64 go build -o seasar
GOOS=linux GOARCH=amd64 go build -o seasar
32.
JavaからGoへ
本番と開発の設定変更
Java: profile(maven, Spring Boot)
Go : tag
go build –tags release
// +build !release
package env
const DEBUG = true
// +build release
package env
const DEBUG = false
env.go env_release.go
if env.DEBUG {
log.Println(”debug print")
}
33.
JavaからGoへ
アノテーション
Java: annotasion
Go : tag
type Person struct {
Id int64 `json:"code"`
Name string `json:“name“`
Age int `json:“age"`
CreatedAt int64
}
34.
JavaからGoへ
Test
Java: JUnit
Assert
Go : testing
Assertは無い, if文で
ソースファイルと同一パッケージ
calc.go なら calc_test.go
func TestSum(t *testing.T) {
actual := Sum(1, 2)
expected := 3
if actual != expected {
t.Errorf(”actual %v expected %v", actual, expected)
}
}