第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

全部開發(fā)者教程

Go 入門教程

首頁 慕課教程 Go 入門教程 Go 入門教程 35 Go 語言函數(shù)式編程

本文主要介紹 Go 語言的另一大編程特性——函數(shù)式編程。函數(shù)式編程的基礎(chǔ)特點(diǎn)為:

  • 函數(shù)是一等公民,即函數(shù)可以做為變量
  • 純函數(shù),即函數(shù)內(nèi)的操作不可影響到函數(shù)外。

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

1. 編程示例

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

普通方式實(shí)現(xiàn):

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

函數(shù)式編程實(shí)現(xiàn):

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 行:定義函數(shù)類型自定義數(shù)據(jù)類型;
  • 第 9~15 行:定義累加器函數(shù);
  • 第 18 行:定義變量 a,并將累加器函數(shù)作為值賦給變量 a;
  • 第 20~22 行:累加 100 次。

執(zhí)行結(jié)果:

image.png

兩者比較,就是后者將整個累加過程作為變量放置在了循環(huán)以外,使得整個累加可以脫離循環(huán)之外??雌饋砭拖袷遣粩嗟膶σ粋€傳入的常數(shù)進(jìn)行加工,就像是流水線的一個工具。所以函數(shù)式編程在開發(fā)過程中經(jīng)常會用在對數(shù)據(jù)的長流程處理。例如,錄入身份證號時,要從身份證號中獲取年齡,籍貫、性別等信息,就可以使用三個函數(shù)對身份證號進(jìn)行順序處理。這樣寫的好處就在于可以隨時增刪其流程。

2. 小結(jié)

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