Go_函数

1.函数

1.1 函数定义
func functionName([paramenter list]) [returnTypes]{
	//body
}
  • func 函数声明的关键字
  • functionName 函数名称
  • paramenter list 函数参数,非必须
  • returnTypes 函数返回参数,非必须
func GetSum(num1 int, num2 int)int{
//也可以这样定义 函数参数相同类型可以省略掉前面的类型声明
//func GetSum(num1, num2 int)int{
	result := num1 + num2
	return result
}
1.2值传递与引用传递

在go语言中分为值传递引用传递
如果想要函数直接修改参数的值,需要传递指针,将变量的地址作为参数传递到函数中。

func paramFunc(a int, b *int ,c []int){
	a = 100
	*b = 100
	c[1] = 100
	fmt.Println(a)
	fmt.Println(*b)
	fmt.Println(c)
}

func main() {
	a := 1
	b := 1
	c := []int{1, 2, 3}
	paramFunc(a, &b, c)

	fmt.Println("main:")
	fmt.Println(a)
	fmt.Println(b)
	fmt.Println(c)
}

//输出结果
paramFunc:
100
100
[1 100 3]
main:
1
100
[1 100 3]
1.3 变长参数

在go语言中也支持变长参数,但需要注意的是变长参数必须放在函数参数的最后一个,否则会报错

func main(){
       slice:=[]int{7,9,3,5,1}
       x:=min(slice...)
       fmt.Printf("The minimum is:%d",x)
}

func min(s ...int) int {
	if len(s) == 0{
		return
	}
	min := s[0]
	for _, v:=range s{
		if v<min {
			min = v
		}
	}
	return min
}
1.4 多返回值
func div(a, b float64) (float64, error) {
	if b == 0 {
		return 0, errors.New("The divisor cannot be zero.")
	}
	return a / b, nil
}

func main() {
	result, err := div(1, 2)
	if err != nil {
		fmt.Printf("error: %v", err)
		return
	}
	fmt.Println("result: ", result)
}
1.5 匿名函数
func main() {
	f := func() string {
		return "hello world"
	}
	fmt.Println(f())
}
1.6 闭包函数

闭包就是一个函数和一个函数外的变量的封装,而且这个变量就对应着类中的静态变量

func add() func(int) int {
	//n str  属于两个函数外变量
	n := 10
	str := "string"
	
	return func(x int) int {
		n = n + x
		str += strconv.Itoa(x)
		fmt.Print(str, " ")
		return n
	}
}

func main() {
	f := add()
	fmt.Println(f(1))
	fmt.Println(f(2))

	f = add()
	fmt.Println(f(1))
	fmt.Println(f(2))

}

//输出结果
string1 11
string12 13
string1 11
string12 13
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值