教程集 www.jiaochengji.com
教程集 >  Golang编程  >  golang教程  >  正文 【Golang 基础】 Go 语言 函数式编程

【Golang 基础】 Go 语言 函数式编程

发布时间:2022-01-19   编辑:jiaochengji.com
教程集为您提供【Golang 基础】 Go 语言 函数式编程等资源,欢迎您收藏本站,我们将为您提供最新的【Golang 基础】 Go 语言 函数式编程资源
<h2>Go 语言函数式编程</h2>

  在 Go 语言中函数是一等公民,它作为一个变量、类型、参数、返回值,甚至可以去实现一个接口,但是 Go 语言中函数不支持重载、嵌套和默认参数。

<ul><li>通过使用 <code>func</code> 关键字来定义函数</li> </ul><pre><code class="lang-go hljs">package main func main(){ } </code></code></pre> <h3>函数支持的特性</h3> <ul><li>作为变量;</li> </ul><pre><code class="lang-golang hljs">func test(){ // 函数体 } funcTest := test fmt.Println(funcTest()) </code></code></pre> <ul><li>匿名函数</li> </ul><pre><code class="lang-golang hljs">test := func(){ // 函数体 } </code></code></pre> <ul><li>作为类型;</li> </ul><pre><code class="lang-go hljs">package main import "fmt" type iAdder func(int, int) int func main(){ var adder iAdder = func(a int, b int) int { return a b } fmt.Println(adder(1,2)) // 3 } </code></code></pre> <ul><li>不定长度变参;</li> </ul><pre><code class="lang-golang hljs">func test(num ...int){ fmt.Println(num) // [1 2 3 4] } test(1,2,3,4) </code></code></pre> <ul><li>多返回值;</li> </ul><pre><code class="lang-golang hljs">func test() (string,int,bool){ return "Hello World", 100, true } v1, v2, v3 := test() fmt.Println(v1, v2, v3) // Hello World 100 true </code></code></pre> <ul><li>命名返回值参数;</li> </ul><pre><code class="lang-golang hljs">func test() (a string, b bool, c int) { a = "Golang" b = false c = 200 return } v1, v2, v3 := test() fmt.Println(v1, v2, v3) // Golang false 200 </code></code></pre> <ul><li>闭包</li> </ul><pre><code class="lang-go hljs">package main import "fmt" // 使用 闭包实现 斐波那契数列 func fibonacci() func() int { a, b := 0, 1 return func() int { a, b = b, a b return a } } func main(){ f := fibonacci() fmt.Println(f()) // 1 fmt.Println(f()) // 1 fmt.Println(f()) // 2 fmt.Println(f()) // 3 fmt.Println(f()) // 5 } </code></code></pre> <ul><li>使用函数实现接口</li> </ul>

  还是以 斐波那契数列为例,将其当做一个文件流来读取.

<pre><code class="lang-go hljs">package main import ( "fmt" "io" "bufio" "strings" ) // 使用 闭包实现 斐波那契数列 func fibonacci() intGen { a, b := 0, 1 return func() int { a, b = b, a b return a } } // 定义一个类型 type intGen func() int // 实现一个 Reader 接口 func (g intGen) Read(p []byte) (n int, err error) { // 获取下一个元素值 next := g() if next > 10000 { return 0, io.EOF } // 将一个数值转为字符串 s := fmt.Sprintf("%d/n", next) return strings.NewReader(s).Read(p) } // 使用 Reader 读取的方法 func printFileContents(reader io.Reader){ scanner := bufio.NewScanner(reader) for scanner.Scan() { fmt.Println(scanner.Text()) } } func main(){ f := fibonacci() printFileContents(f) } </code></code></pre>

到此这篇关于“【Golang 基础】 Go 语言 函数式编程”的文章就介绍到这了,更多文章或继续浏览下面的相关文章,希望大家以后多多支持JQ教程网!

您可能感兴趣的文章:
想系统学习GO语言(Golang
GO语言零基础从入门到精通视频教程
Go语言发展历史、核心、特性及学习路线
Go语言基础 001
Golang笔记:语法,并发思想,web开发,Go微服务相关
Go语言的函数、方法和接口
go语言基础语法
【Golang 基础】 Go 语言 函数式编程
1.1Go语言简要介绍
学习golang开始前的准备工作

[关闭]
~ ~