1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

眺めて覚えるGo言語 その2

Posted at

#眺めて覚えるGo言語 「いいよね」されてうれしいから「その2作成した」
image.png

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は、:smirk_cat:

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")
}
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?