#眺めて覚えるGo言語 「いいよね」されてうれしいから「その2作成した」
ex12.go
package main
import (
"fmt"
"strings"
)
func getStations() []string{
return strings.Split("千葉,西千葉,稲毛,新検見川,幕張,幕張本郷,津田沼,東船橋,船橋,西船橋,下総中山,本八幡,市川,小岩,新小岩,平井,亀戸,錦糸町,両国,浅草橋,秋葉原",",")
}
func getStation(n int)string{
return getStations()[n]
}
func main(){
for i:=0;i<len(getStations());i++{
fmt.Println(i,getStation(i))
}
}
(base) c:\Users\hirat\go-work\web\hello>go run ex12.go
0 千葉
1 西千葉
2 稲毛
3 新検見川
4 幕張
5 幕張本郷
6 津田沼
7 東船橋
8 船橋
9 西船橋
10 下総中山
11 本八幡
12 市川
13 小岩
14 新小岩
15 平井
16 亀戸
17 錦糸町
18 両国
19 浅草橋
20 秋葉原
#関数の書き方
##func 間棲数名(引数 型) 戻値型{
}
ex13.go
package main
import (
"fmt"
"strings"
)
func main(){
for i:=0;i<len(getStations());i++{
fmt.Println(i,getStation(i))
}
}
func getStations() []string{
return strings.Split("千葉,西千葉,稲毛,新検見川,幕張,幕張本郷,津田沼,東船橋,船橋,西船橋,下総中山,本八幡,市川,小岩,新小岩,平井,亀戸,錦糸町,両国,浅草橋,秋葉原",",")
}
func getStation(n int)string{
return getStations()[n]
}
#GO言語は、後方参照しても怒られない。pythonは、
ex14.go
package main
import (
"fmt"
)
func main(){
a,b:=fun()
fmt.Println(a,b)
}
func fun() (a int, b int){
x,y:=10,20
return x,y
}
(base) c:\Users\hirat\go-work\web\hello>go run ex14.go
10 20
#戻り値 複数もOK
ex15.go
package main
import (
"fmt"
)
func main() {
a:=10
fmt.Println(a)
fun(&a)
fmt.Println(a)
}
func fun(x *int){
fmt.Println(*x)
*x=20
}
(base) c:\Users\hirat\go-work\web\hello>go run ex15.go
10
10
20
#ポインター(Address)渡しの関数の例
- ちゃんと関数の中で変更(10->20)できる。
ex16.go
package main
import (
"fmt"
)
func main() {
num := []int{}
for i:=0;i<10;i++{
num = append(num, i)
}
fmt.Println(num)
}
(base) c:\Users\hirat\go-work\web\hello>go run ex16.go
[0 1 2 3 4 5 6 7 8 9]
#配列に要素を追加できる
- リストのような使い方
ex17.go
package main
import (
"fmt"
)
type ebook struct{
name string
email string
}
func main() {
a:=ebook{} //初期化
a.name="tokyo" //name初期化
a.email="tokoy@tokyo.gov.jp" //email初期化
fmt.Println(a)
b:=ebook{name:"chiba",email:"chiba@chiba.jp"} //いきなり初期化
fmt.Println(b)
}
(base) c:\Users\hirat\go-work\web\hello>go run ex17.go
{tokyo tokoy@tokyo.gov.jp}
{chiba chiba@chiba.jp}
GOには、classがないのでtype structで定義
- シンプルで良い
ex18.go
package main
import (
"fmt"
)
type ebook struct{
name string
email string
}
func main() {
a:=[]ebook{
{name:"chiba",email:"chiba@chiba.jp"},
{name:"tokyo",email:"tokyo@tokyo.jp"},
}
a=append(a,ebook{name:"kanagawa",email:"kanagawa@kanagawa.jp"})
fmt.Println(a)
}
(base) c:\Users\hirat\go-work\web\hello>go run ex18.go
[{chiba chiba@chiba.jp} {tokyo tokyo@tokyo.jp} {kanagawa kanagawa@kanagawa.jp}]
#配列の初期化と追加もばっちり
##Go言語は、機械語に翻訳されるコンパイラ言語です。
-JavaとかC#は、中間言語に翻訳される。
-とてもコンパクトに翻訳され、raspberry piなどで実行できる。
-覚えるのに障害となるobject指向がない。
-ジェネリックがないメモリ管理がシンプル。
#年寄りにとっては
-Generics (template) がない
-継承がない
-例外がない。まるで1970年代に設計されたかのようである。
-非知的なプログラマのためにデザインされている。
##すべてメリットです。
#Raspberry piにGOをインストール
>mkdir go
>cd go
>wget https://golang.org/dl/go1.10.1.linux-armv6l.tar.gz
>sudo tar -C /usr/local -xzf go1.10.1.linux-armv6l.tar.gz
>vi ~/.bashrc
export PATH=$PATH:/usr/local/go/bin 追記
>vi test.go
package main
import "fmt"
func main() {
fmt.Printf("hello, world\n")
}