go-func

関数定義

関数名は大文字で始まり、他のパッケージからアクセスできます。
関数名は小文字で始まり、このパッケージでのみアクセスできます。

func funcname(p1 type1, p2 type2,...) (result1 type1 , result2, type2 ...)

単一の戻り値-例

func add(a ,b int) int {
	return a+b
}

転送

    c := add(1,8);
	fmt.Printf("c=%d \n",c)

複数の戻り値

func moreOper(a ,b int) (int,int) {
	return a+b,a*b
}

転送

    a,b := moreOper(1,9)
	fmt.Printf("a=%d,b=%d \n",a,b)

出力

a = 10、b = 9

可変パラメータ

func sum(args ...int)  {
	total :=0;
	for _,v :=range args {
		total+=v
	}

	fmt.Printf("total=%d \n",total)
}

転送

sum(1,2,3,4,5,6,7,8,9);

タイプとして機能する

import "fmt"

/**
  是否基数
 */
func isOdd(num int) bool {
	if num%2==1 {
		return true
	}

	return false
}

/**
  是否偶数
 */
func isEven(num int) bool {
	if num%2==0 {
		return true
	}

	return false
}

// 声明函数类型
type myBoolFunc func(int) bool

func filter(array []int, myFunc myBoolFunc) []int {
	var result [] int

	for _,v :=range array {
		if myFunc(v) {
			result = append(result,v)
		}
	}

	return result;

}

func main() {
	array := []int{1,2,3,4,5,6};
	oddArray := filter(array,isOdd);
	fmt.Println("oddArray=",oddArray)
	evenArray := filter(array,isEven);
	fmt.Println("evenArray=",evenArray)
}

出力

oddArray = [1 3 5]
evenArray = [2 4 6]

匿名関数

例1

func main() {

	myadd := madd;
	sum := myadd(3,5);
	fmt.Printf("sum=%d \n",sum)

	multiply := func(x,y int) int{ return x*y}
	multiplyvalue := multiply(3,6)
	fmt.Printf("multiplyvalue=%d \n",multiplyvalue)

}

func madd(x int ,y int) int{
	return x+y;
}

例2

total := func(num int) int {
		sum:=0
		for i:=1;i<=num;i++ {
			sum +=i
		}
		fmt.Printf("sum=%d \n",sum)
		return sum
	}(100)

	fmt.Printf("total=%d \n",total)

再帰関数

package main

import "fmt"

func fibonacci(n int)  int {

	if n<2 {
		return n
	}

	return fibonacci(n-2) + fibonacci(n-1)

}

func main() {
	var i int
	for i=0;i<10;i++ {
		fmt.Printf("%d \t",fibonacci(i))
	}
}

おすすめ

転載: blog.csdn.net/kq1983/article/details/113138574