久久国产乱子伦精品免费M,亚洲一区二区三区91,欧美国产在线视频,国产精品视频久久

Go 語言函數式編程

本文主要介紹 Go 語言的另一大編程特性——函數式編程。函數式編程的基礎特點為:

  • 函數是一等公民,即函數可以做為變量
  • 純函數,即函數內的操作不可影響到函數外。

Go 語言的函數式編程無需遵循第二點,這一特性為 Go 語言的函數式編程帶來了更大的靈活性。

 

1. 編程示例

接下來我們來分別展示用函數式編程和普通編程方式來實現一個累加器,即輸出 1+2+3+…+100 的值。

普通方式實現:

代碼塊
  • 1? func main() {
  • 2? ? ? ? ? a := 0
  • 3? ? ? ? ? for i := 1; i <= 100; i++ {
  • 4? ? ? ? ? ? ? ? ? a = a + i
  • 5? ?? ?? ??}
  • 6? ? ? ? ? fmt.Println(a)
  • 7? }

函數式編程實現:

代碼塊
  • 1? package main
  • 2
  • 3? import (
  • 4? ? ? ? ? "fmt"
  • 5? )
  • 6
  • 7? type iAdder func(int) int
  • 8
  • 9? func adder() iAdder {
  • 10? ? ? ? sum := 0
  • 11? ? ? ? return func(v int) int {
  • 12? ? ? ? ? ? ? ? ? sum += v
  • 13? ? ? ? ? ? ? ? ? return sum
  • 14? ? ? ? }
  • 15? }
  • 16
  • 17? func main() {
  • 18? ? ? ? ? a := adder()
  • 19? ? ? ? ? var s int
  • 20? ? ? ? ? for i := 1; i <= 100; i++ {
  • 21? ? ? ? ? ? ? ? ? s = a(i)
  • 22? ? ? ? ? }
  • 23? ? ? ? ? fmt.Println(s)
  • 24? }
  • 第 7 行:定義函數類型自定義數據類型;
  • 第 9~15 行:定義累加器函數;
  • 第 18 行:定義變量 a,并將累加器函數作為值賦給變量 a;
  • 第 20~22 行:累加 100 次。

執行結果:

image.png

兩者比較,就是后者將整個累加過程作為變量放置在了循環以外,使得整個累加可以脫離循環之外。看起來就像是不斷的對一個傳入的常數進行加工,就像是流水線的一個工具。所以函數式編程在開發過程中經常會用在對數據的長流程處理。例如,錄入身份證號時,要從身份證號中獲取年齡,籍貫、性別等信息,就可以使用三個函數對身份證號進行順序處理。這樣寫的好處就在于可以隨時增刪其流程

 

2. 小結

Go語言的函數式編程比起傳統函數式編程更加靈活,主要在于不需要遵循純函數原則。Go語言的函數式編程主要應用在類似于流水線加工數據的場景,以便于隨時增刪數據處理流程

文章來源于網絡,侵刪!

相關新聞

歷經多年發展,已成為國內好評如潮的Linux云計算運維、SRE、Devops、網絡安全、云原生、Go、Python開發專業人才培訓機構!

  • <menu id="dlktz"></menu>
    <ul id="dlktz"></ul>
    <menu id="dlktz"></menu>
    <bdo id="dlktz"></bdo>
    主站蜘蛛池模板: 大荔县| 桂东县| 厦门市| 盘山县| 顺平县| 怀远县| 弥渡县| 定西市| 兰州市| 衡水市| 赫章县| 延吉市| 乌海市| 徐闻县| 临潭县| 新丰县| 宁远县| 大洼县| 仁寿县| 呼伦贝尔市| 镇赉县| 西华县| 马公市| 长海县| 阳春市| 逊克县| 郴州市| 新疆| 泾川县| 平南县| 娱乐| 准格尔旗| 东丰县| 都昌县| 屏南县| 林口县| 清原| 南岸区| 石城县| 类乌齐县| 自治县|