匿名函数
package main
import (
"fmt"
"math"
)
//匿名函数
func main(){
//无参匿名函数
func(){
fmt.Println("jonson")
}()
//有参匿名函数
func(data int){
fmt.Println("data:",data)
}(5)
//有返回值的匿名函数
result:=func(data float64) float64{
return math.Sqrt(data)
}(9)
fmt.Println("result:",result)
//函数表达式
greet:=func(){
fmt.Println("greet jonson")
}
greet()
fmt.Printf("greet的类型是%T\n",greet)
闭包
func greetjonson(){
x:=0
increment:= func() int{
x++
return x
}
fmt.Println(increment())
fmt.Println(increment())
}
函数作为返回值
func makeGreeter() func() string{
return func() string {
return "hello jonson"
}
}
闭包与函数返回值
func makeEvenGenerator() func() int{
i:=0
return func() int{
i+=2
return i
}
}
callback函数作为参数
func visit(numbers []int,callback func(int)){
for _,n :=range numbers{
callback(n)
}
}
递归
// 计算阶乘 5 5*4*3*2*1
func factorial(x uint) uint{
if x==0{
return 1
}
return x * factorial(x-1)
}
// factorial(5) //120
// returns: 5 * factorial(4)
// factorial(4) /24
// returns: 4 * factorial(3)
// factorial(3) //6
// returns: 3 * factorial(2)
// factorial(2) //2
// returns: 2 * factorial(1)
// factorial(1) //1
// returns: 1 * factorial(0)
// factorial(0)
// returns: 1
所有例子
package main
import (
"fmt"
"math"
)
//匿名函数
func main(){
//无参匿名函数
func(){
fmt.Println("jonson")
}()
//有参匿名函数
func(data int){
fmt.Println("data:",data)
}(5)
//有返回值的匿名函数
result:=func(data float64) float64{
return math.Sqrt(data)
}(9)
fmt.Println("result:",result)
greet:=func(){
fmt.Println("greet jonson")
}
greet()
fmt.Printf("greet的类型是%T\n",greet)
//闭包
greetjonson()
//函数作为返回值
makejonson := makeGreeter()
fmt.Printf("类型:%T,返回值:%v\n",makejonson,makejonson())
//闭包做为返回值
makeeven := makeEvenGenerator()
fmt.Println("makeeven i = ",makeeven())
fmt.Println("makeeven i = ",makeeven())
fmt.Println("makeeven i = ",makeeven())
//callback函数作为参数
visit([]int{1,2,3,4},func(n int){
fmt.Println(n+1)
})
//死循环
fmt.Println(factorial(5))
var i uint = 0
for ;i<20;i++{
fmt.Println(fabicc(i))
}
}
//闭包
func greetjonson(){
x:=0
increment:= func() int{
x++
return x
}
fmt.Println(increment())
fmt.Println(increment())
}
//函数作为返回值
func makeGreeter() func() string{
return func() string {
return "hello jonson"
}
}
//闭包与函数返回值
func makeEvenGenerator() func() int{
i:=0
return func() int{
i+=2
return i
}
}
//callback函数作为参数
func visit(numbers []int,callback func(int)){
for _,n :=range numbers{
callback(n)
}
}
//递归
// 计算阶乘 5 5*4*3*2*1
func factorial(x uint) uint{
if x==0{
return 1
}
return x * factorial(x-1)
}
//fabicc
func fabicc(x uint) uint{
if(x==0){
return 0
}
if(x==1){
return 1
}
return fabicc(x-2) + fabicc(x-1)
}
-
本文链接: https://dreamerjonson.com/2018/11/19/golang-11-function2/
-
版权声明: 本博客所有文章除特别声明外,均采用 CC BY 4.0 CN协议 许可协议。转载请注明出处!
以上所述就是小编给大家介绍的《go语言渐入佳境[11]-function2》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 编译型语言、解释型语言、静态类型语言、动态类型语言概念与区别
- 计算机语言发展的三个阶段:机器语言、汇编语言与高级语言
- 凹 (“Wa”) 语言:可以嵌入 Go 语言环境的脚本语言
- Rust语言恰巧是一门解决了Go语言所有问题的语言
- 获取系统语言/当前 App支持语言
- 【Go 语言教程】Go 语言简介
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
深度探索Linux操作系统
王柏生 / 机械工业出版社 / 2013-10-15 / 89.00
《深度探索linux操作系统:系统构建和原理解析》是探索linux操作系统原理的里程碑之作,在众多的同类书中独树一帜。它颠覆和摒弃了传统的从阅读linux内核源代码着手学习linux操作系统原理的方式,而是基于实践,以从零开始构建一个完整的linux操作系统的过程为依托,指引读者在实践中去探索操作系统的本质。这种方式的妙处在于,让读者先从宏观上全面认清一个完整的操作系统中都包含哪些组件,各个组件的......一起来看看 《深度探索Linux操作系统》 这本书的介绍吧!