関数を定義
Go言語の関数の定義はfuncを使用します。
package main
import "fmt"
func main() {
fmt.Println(add(1, 2))
}
func add(a int, b int) int {
return a + b
}
引数や戻り値も、変数と同じく型名が後につきます。
これは少し混乱しちゃいますね。。。
もちろん可変長引数も定義できます。
func addAll(items... int) int {
sum := 0
for _, item := range items {
sum += item
}
return sum;
}
なんと戻り値は複数返却できます!
func main() {
add, sub := addOrSub(10, 15)
fmt.Printf("%d, %d", add, sub)
}
func addOrSub(a int, b int) (int, int) {
return a + b, b - a
}
関数のスコープ
名前が小文字から始まる場合、他パッケージから参照できないようです。
関数のレシーバ
関数をtype型で宣言した型に関連づけることができます。
package main
import "fmt"
// 身長と体重
type Status struct {
height float32
weight float32
}
// BIMを表示
func (s Status) getBMI() {
fmt.Printf("BMIは%.1fです。", s.weight / (s.height * s.height))
}
func main() {
var status Status
// 身長と体重を入力
status.height = 1.7
status.weight = 70
// BMIを表示
status.getBMI()
}
実行結果
BMIは24.2です。