go语言 函数拥有不定参数,闭包函数

go语言函数定义:

返回单个值:

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

返回多个值:

func Add(a int, b int) (ret int, err error){
    return a+b, nil//支持多重返回值
}

拥有不定参数:

func 函数名(args ...interface{}){

}

interface{}可以指定不定参数类型为任意类型,

// varg1
package main

import (
	"fmt"
)

func MyPrintf(args ...interface{}) {
	for _, arg := range args {
		switch arg.(type) {
		case int:
			fmt.Println(arg, "is an int value")
		case string:
			fmt.Println(arg, "is a string value.")
		case int64:
			fmt.Println(arg, "is an int64 value.")
		default:
			fmt.Println(arg, "is an unknown type.")
		}
	}
}

func main() {
	var v1 int = 1
	var v2 int64 = 234
	var v3 string = "hello"
	var v4 float32 = 1.234
	MyPrintf(v1, v2, v3, v4)
}

该程序输出结果为:

1 is an int value.

234 is an int64 value.

hello is a string value.

1.234 is an unknown type.

没写返回值,是因为没有返回值吗?

闭包函数:

 // closure
package main

import (
	"fmt"
)

func main() {
	var j int = 5
        //从此开始 begin
	a := func() func() {
		var i int = 10
		return func() {
			fmt.Printf("i, j: %d, %d\n", i, j)
		}
	}()
        //到这里时一个闭包函数,返回一个func(),返回值赋给a.
        //调用这个闭包函数
	a()
	j *= 2
	a()
}

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值