独自関数の作り方
【開発環境】
OS:Win11(64ビット)
go version go1.19.4 windows/amd64
VSCode1.72.2、及びコマンドプロンプト
◆関数の定義
関数の定義にはfuncキーワードを使います
・書式
func name([args]) [()returns] {
statement(実行文)
return expr
}
name:関数名
args:関数の引数
returns:戻り値の型
例文
func twice(n int) int {
retun 2*n
}
◆複数の値を返す関数
戻り値の型を複数指定することで、複数の値を返す関数が定義出来る。複数の値を返す関数は返す値のリストを必ず()で囲み、引数は「,」で区切る
例文---面積と、円の円周を返す関数
func circle(r float64)(float64,float64){
area := r*r*3.14
circ := 2*math.Pi*r
return area,circ
}
サンプルコード
/ 円
package main
import (
"fmt"
"math"
)
// 面積と円周を返す関数
func circle(r float64) (float64, float64) {
area := r * r * 3.14
circ := 2 * math.Pi * r
return area, circ
}
func main() {
var r float64
fmt.Printf("半径を入力して下さい:")
fmt.Scan(&r)
var area, circ = circle(r)
fmt.Printf("半径%fの面積は%f\n", r, area)
fmt.Printf("半径%fの円周は%f\n", r, circ)
}
・実行
PS D:\GO言語\サンプルプログラム\Go-6\function> go run test1.go
半径を入力して下さい:3
半径3.000000の面積は28.260000
半径3.000000の円周は18.849556
◆可変長引数
fmt.Println()やfmt.Printf()のように、任意の引数を指定出来る関数がある。このような関数の引数を可変長引数と言う
・サンプルコード
package main
import (
"fmt"
)
func main() {
x := 3
fmt.Printf("%dの2倍は%d\n", x, twice(x))
fmt.Printf("合計は%d\n", sum(1, 3, 5, 7, 9))
max, min := maxmin(1, 3, 5, 7, 9)
fmt.Printf("最大値は%d 最小値は%d\n", max, min)
}
// 引数の2倍の値を返す関数
func twice(n int) int {
return 2 * n
}
// 合計を返す関数
func sum(vals ...int) int {
total := 0
for _, value := range vals {
total += value
}
return total
}
// 最大値と最小値を返す関数
func maxmin(vals ...int) (int, int) {
max := -99999
min := 99999
for _, val := range vals {
if max < val {
max = val
}
if min > val {
min = val
}
}
return max, min
}
・実行
PS D:\GO言語\サンプルプログラム\Go-6\function> go run deffunc.go
3の2倍は6
合計は25
最大値は9 最小値は1