35. Go 语言函数式编程

AI 概述
本文主要介绍 Go 语言的另一大编程特性——函数式编程。函数式编程的基础特点为: 函数是一等公民,即函数可以做为变量。 纯函数,即函数内的操作不可影响到函数外。 Go 语言的函数式编程无需遵循第二点,这一特性为 Go 语言的函数式编程带来了更大的灵活性。 1. 编程示例 接下来我们来分别展示用函数式编程和普通编程方...

本文主要介绍 Go 语言的另一大编程特性——函数式编程。函数式编程的基础特点为:

  • 函数是一等公民,即函数可以做为变量
  • 纯函数,即函数内的操作不可影响到函数外。

Go 语言的函数式编程无需遵循第二点,这一特性为 Go 语言的函数式编程带来了更大的灵活性。

1. 编程示例

接下来我们来分别展示用函数式编程和普通编程方式来实现一个累加器,即输出 1+2+3+…+100 的值。

普通方式实现:

func main() {
    a := 0
    for i := 1; i <= 100; i++ {
        a = a + i
    }
    fmt.Println(a)
}

函数式编程实现:

package main

import (
    "fmt"
)

type iAdder func(int) int

func adder() iAdder {
    sum := 0
    return func(v int) int {
        sum += v
        return sum
    }
}

func main() {
    a := adder()
    var s int
    for i := 1; i <= 100; i++ {
        s = a(i)
    }
    fmt.Println(s)
}
  • 第 7 行:定义函数类型自定义数据类型;
  • 第 9~15 行:定义累加器函数;
  • 第 18 行:定义变量 a,并将累加器函数作为值赋给变量 a;
  • 第 20~22 行:累加 100 次。

两者比较,就是后者将整个累加过程作为变量放置在了循环以外,使得整个累加可以脱离循环之外。看起来就像是不断的对一个传入的常数进行加工,就像是流水线的一个工具。所以函数式编程在开发过程中经常会用在对数据的长流程处理。例如,录入身份证号时,要从身份证号中获取年龄,籍贯、性别等信息,就可以使用三个函数对身份证号进行顺序处理。这样写的好处就在于可以随时增删其流程。

2. 小结

Go 语言的函数式编程比起传统函数式编程更加灵活,主要在于不需要遵循纯函数原则。Go 语言的函数式编程主要应用在类似于流水线加工数据的场景,以便于随时增删数据处理流程

以上关于35. Go 语言函数式编程的文章就介绍到这了,更多相关内容请搜索码云笔记以前的文章或继续浏览下面的相关文章,希望大家以后多多支持码云笔记。

「点点赞赏,手留余香」

0

给作者打赏,鼓励TA抓紧创作!

微信微信 支付宝支付宝

还没有人赞赏,快来当第一个赞赏的人吧!

声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权/违法违规/事实不符,请将相关资料发送至 admin@mybj123.com 进行投诉反馈,一经查实,立即处理!
重要:如软件存在付费、会员、充值等,均属软件开发者或所属公司行为,与本站无关,网友需自行判断
码云笔记 » 35. Go 语言函数式编程

发表回复