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
今日推荐