go语言渐入佳境[11]-function2

栏目: Go · 发布时间: 7年前

匿名函数

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)
}

go语言渐入佳境[11]-function2


以上所述就是小编给大家介绍的《go语言渐入佳境[11]-function2》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。

自制搜索引擎

自制搜索引擎

[日]山田浩之、[日]末永匡 / 胡屹 / 人民邮电出版社 / 2016-1 / 39.00元

《自制搜索引擎》聚焦于Google和Yahoo!等Web搜索服务幕后的搜索引擎系统,首先讲解了搜索引擎的基础知识和原理,接着以现实中的开源搜索引擎Senna/Groonga为示例,使用该引擎的源代码引导读者亲自体验搜索引擎的开发过程。这部分讲解涉及了倒排索引的制作和压缩、检索的处理流程以及搜索引擎的优化等内容。又简单介绍了一些更加专业的搜索引擎的知识和要点,为读者今后进一步学习打下了基础。本书适合......一起来看看 《自制搜索引擎》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

SHA 加密
SHA 加密

SHA 加密工具