博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
go实例之函数
阅读量:6342 次
发布时间:2019-06-22

本文共 2044 字,大约阅读时间需要 6 分钟。

1、可变参数

  示例代码如下:

1 package main 2  3 import "fmt" 4  5 // Here's a function that will take an arbitrary number 6 // of `ints` as arguments. 7 func sum(nums ...int) { 8     fmt.Print(nums, " ") 9     total := 010     for _, num := range nums {11         total += num12     }13     fmt.Println(total)14 }15 16 func main() {17 18     // Variadic functions can be called in the usual way19     // with individual arguments.20     sum(1, 2)21     sum(1, 2, 3)22 23     // If you already have multiple args in a slice,24     // apply them to a variadic function using25     // `func(slice...)` like this.26     nums := []int{
1, 2, 3, 4}27 sum(nums...)28 }

   执行上面代码,将得到以下输出结果

1 [1 2] 32 [1 2 3] 63 [1 2 3 4] 10

2、匿名函数

  示例代码如下:

1 package main 2  3 import "fmt" 4  5 // This function `intSeq` returns another function, which 6 // we define anonymously in the body of `intSeq`. The 7 // returned function _closes over_ the variable `i` to 8 // form a closure. 9 func intSeq() func() int {10     i := 011     return func() int {12         i += 113         return i14     }15 }16 17 func main() {18 19     // We call `intSeq`, assigning the result (a function)20     // to `nextInt`. This function value captures its21     // own `i` value, which will be updated each time22     // we call `nextInt`.23     nextInt := intSeq()24 25     // See the effect of the closure by calling `nextInt`26     // a few times.27     fmt.Println(nextInt())28     fmt.Println(nextInt())29     fmt.Println(nextInt())30 31     // To confirm that the state is unique to that32     // particular function, create and test a new one.33     newInts := intSeq()34     fmt.Println(newInts())35 }

  执行上面代码,将得到以下输出结果

1 12 23 34 1

3、递归函数

  示例代码如下:

1 package main 2  3 import "fmt" 4  5 // This `fact` function calls itself until it reaches the 6 // base case of `fact(0)`. 7 func fact(n int) int { 8     if n == 0 { 9         return 110     }11     return n * fact(n-1)12 }13 14 func main() {15     fmt.Println(fact(7))16 }

  这个fact()函数实际上是调用它自己本身,直到它达到fact(0)时结果退出。

相关链接:

  

转载地址:http://bvkla.baihongyu.com/

你可能感兴趣的文章
解决“iOS 7 app自动更新,无法在app中向用户展示更新内容”问题
查看>>
OpenCV——Haar-like特征
查看>>
HttpWebResponse发送post请求并接收
查看>>
python 相对路径和绝对路径的区别
查看>>
Day36 python基础--并发编程基础5
查看>>
《Python从小白到大牛》第6章 数据类型
查看>>
三层架构的是与非
查看>>
lucene bug的报告经历
查看>>
火狐访问HTTPS网站显示连接不安全的解决方法
查看>>
防火墙(一)主机型防火墙
查看>>
基于哈夫曼编码的压缩算法的实现
查看>>
TCP长连接与短连接的区别
查看>>
sed tr
查看>>
FTP文件传输服务器(详解)
查看>>
ERROR OGG-01172 Discard file (/oradata/gglog/repl.dsc) exceeded max bytes (500000000).
查看>>
Activiti 实战篇 小试牛刀
查看>>
java中的Static class
查看>>
Xshell 连接CentOS服务器解密
查看>>
[工具类]视频音频格式转换
查看>>
GNS3与抓包工具Wireshark的关联
查看>>