Go基础--09 函数

函数是一等公民

  1. 可以有多个返回值
  2. 所有参数传递都是值传递:slice map channel 会有传引用错觉
  3. 函数可以作为变量的值
  4. 函数可以作为参数和返回值
package _func

import (
	"fmt"
	"math/rand"
	"testing"
	"time"
)

func ReturnMultiValues()(int,int){
	return rand.Intn(10),rand.Intn(10)
}
func TimeSpent(inner func(op int) int) func(op int) int {
	return func(op int) int{
		start := time.Now()
		end := inner(op)
		fmt.Println("time spent:",time.Since(start).Seconds())
		return end
	}
}
func slowFunc(op int) int {
	time.Sleep(time.Second * 10)
	return op
}

func TestFunc(t *testing.T){
	a,b  :=ReturnMultiValues()
	t.Log(a,b)
	tssf := TimeSpent(slowFunc)
	tssf(10)
}

func Sum(ops ...int) int {
	ret := 0
	for _,op := range ops{
		ret += op
	}
	return ret
}

func TestVarParam( t *testing.T){
	t.Log(Sum(1,2,3,4,5,6,7))
	t.Log(Sum(1,2,3,4))
}

func TestDefer(t *testing.T){
	defer func() {
		t.Log("clear")
	}()
	t.Log(123)
	panic(1)
	t.Log(1231456)
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值