標準出力
package main import ( "fmt" "math/rand" "time" ) func main() { fmt.Println("Hello, World") // Hello, World fmt.Println("My favorite number is", rand.Intn(100)) // My favorite number is 81 fmt.Println("The time is", time.Now()) // The time is 2020-03-05 11:02:08.950132 +0900 JST m=+0.000170890 }
package main import ( "fmt" "math/cmplx" ) var ( ToBe bool = false MaxInt uint64 = 1<<64 - 1 z complex128 = cmplx.Sqrt(-5 + 12i) ) func main() { fmt.Printf("Type: %T Value: %v\n", ToBe, ToBe) // Type: bool Value: false fmt.Printf("Type: %T Value: %v\n", MaxInt, MaxInt) // Type: uint64 Value: 18446744073709551615 fmt.Printf("Type: %T Value: %v\n", z, z) // Type: complex128 Value: (2+3i) }
関数の定義
package main import "fmt" func add(x int, y int) int { return x + y } // 次のように書いてもよい // func add(x, y int) int { // return x + y // } func main() { fmt.Println(add(42, 13)) // 55 }
複数の戻り値も返せる
package main import "fmt" func swap(x, y string) (string, string) { return y, x } func main() { a, b := swap("hello", "world") fmt.Println(a, b) // world hello }
package main import "fmt" func split(sum int) (x, y int) { x = sum * 2 / 5 y = sum - x return } func main() { fmt.Println(split(10)) // 4 6 }
変数の宣言
package main import "fmt" var c, python, java bool func main() { var i int fmt.Println(i, c, python, java) // 0 false false false }
package main import "fmt" var i, j int = 1, 2 func main() { var c, python, java = true, false, "no!" fmt.Println(i, j, c, python, java) // 1 2 true false no! }
変数宣言と初期化を関数の内部で行う場合は,varと型宣言を省略し,:=
という記号を用いることができる。
package main import "fmt" func main() { k := 3 c, python, java := true, false, "no!" fmt.Println(k, c, python, java) // 3 true false no! }
型変換
package main import ( "fmt" "math" ) func main() { var x, y int = 3, 4 var f float64 = math.Sqrt(float64(x*x + y*y)) var z uint = uint(f) fmt.Println(x, y, z) // 3 4 5 }
型推論
package main import "fmt" func main() { v := "aaa" x := 10 y := 5.5 z := 0.3 + 2i fmt.Printf("%T\n", v) // string fmt.Printf("%T\n", x) // int fmt.Printf("%T\n", y) // float64 fmt.Printf("%T\n", z) // complex128 }
定数
package main import "fmt" const Pi = 3.14 func main() { const g = 9.8 fmt.Println(Pi) // 3.14 fmt.Println(g) // 9.8 }
可変長引数
func sum(nums ...int) (result int) { // numsは[]int型 for _, n := range nums { result += n } return } func main() { fmt.Println(sum(1, 2, 3, 4)) // 10 }