Contents
実行方法
Hello Worldをprintするのみの処理
package main
import "fmt"
//起点となる関数は「main」と言う名前の関数名で固定、呼び出された時にmainが実行される
func main(){
fmt.Println("Hello World")
}
>> Hello World
実行方法
// go拡張子のファイルをコンパイルする。同階層にコンパイルされたバイナリファイルが生成される。
go build {コンパイルするファイル名}
// コンパイルされたファイルを実行する
./{コンパイル後のファイル名}
// コンパイルと実行を同時に行う
go run {実行するファイル名}
変数・定数の宣言
package main
import "fmt"
func main(){
var a int = 1 // 変数の宣言
b := 2 // 型宣言なしで変数の定義。
const pi = 3.14 // 定数
const( // まとめて宣言
height float32 = 170.2
weight float32 = 70.2
)
fmt.Println(a)
fmt.Println(b)
fmt.Println(pi)
fmt.Println(height)
fmt.Println(weight)
}
>>> 1
>>> 3
>>> 3.14
>>> 170.2
>>> 70.2
配列
package main
import "fmt"
func main(){
var a [2]int // 配列の宣言
a[0] = 1
a[1] = 2
var b []int = []int{1, 2} // 宣言と同時に値を入れる
b = append(b, 3) //配列に値の追加。配列のサイズは変更できないが、最初にサイズを宣言しなかった場合は変更可
fmt.Println(a)
fmt.Println(b)
}
>>> [1 2]
>>> [1 2 3]
map
pythonでいうdictのようなもの、キーと値がセットになっている。
package main
import "fmt"
func main(){
m := map[string]int{"udon": 100, "soba": 200}
m["ramen"] = 300 // 値の更新
fmt.Println(m)
}
>>> map[ramen:300 soba:200 udon:100]
関数
package main
import "fmt"
func add(x int, y int) int {
return x + y
}
func main(){
a := add(10, 20)
fmt.Println(a)
}
>>> 30
返り値の記載の省略
package main
import "fmt"
// 返り値のアノテーションで変数の宣言と返り値の指定をできる
func substract(x, y int) (result int){
result = x - y
return // アノテーションで指定しているので省略できる
}
func main(){
a := substract(30, 10)
fmt.Println(a)
}
>>> 20
無名関数
pythonでいうlambdaのような書き方
package main
import "fmt"
func main(){
// 簡易的に関数を宣言できる
f := func(){
fmt.Println("poyo")
}
f()
}
>>> poyo
可変長引数
package main
import "fmt"
// 可変長引数
func arg_print(args ...int){
for _, arg := range args{
fmt.Println(arg)
}
}
func main(){
arg_print(10, 20)
s := []int{1,2,3}
arg_print(s...) // リストの中身を展開して入れてる
}
>>> 10
>>> 20
>>> 1
>>> 2
>>> 3
if文
package main
import "fmt"
func main(){
num := 100
if num % 2 == 0{
fmt.Println("2で割り切れる")
} else if num % 5 == 0{
fmt.Println("2で割り切れないが5で割り切れる")
} else{
fmt.Println("2でも5でも割り切れない")
}
}
for文
package main
import "fmt"
func main(){
for i:=0; i < 10; i++{
if i == 3{
fmt.Println("continue")
continue
}
if i == 5{
fmt.Println("break")
break
}
fmt.Println(i)
}
}
>>> 0
>>> 1
>>> 2
>>> continue
>>> 4
>>> break
range
listをfor文に組み込む
package main
import "fmt"
func main(){
var l []string = []string{"a", "b", "c"}
for i, v := range l{
fmt.Println(i, v)
}
}
// 0 a
// 1 b
// 2 c
無限ループ
package main
import "fmt"
func main(){
for {
fmt.Println("無限ループ") // for文だけだと無限ループになる
}
}
swtich文
package main
import "fmt"
func main(){
food := "ringo"
switch food{
case "ringo":
fmt.Println("ringo")
case "banana":
fmt.Println("banana")
default:
fmt.Println("sonota")
}
}
おわり
最近go言語を触り始めてみたので基本的な文法をまとめてみました。
goは型に対して制約が厳しい印象だったので型推論で変数を宣言できるところは意外だった。
現場で書く時はどのように書くのかな。
ではまた。( ´ ▽ ` )