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

全部開(kāi)發(fā)者教程

Go 入門教程

Go 語(yǔ)言基礎(chǔ)教程
01 Go語(yǔ)言簡(jiǎn)介 02 Go 在 Windows 上的安裝及配置 03 Go 在 Linux 上的安裝與配置 04 Go 在 MacOS 上的安裝及配置 05 Git 的下載和安裝 06 VSCode 編輯器安裝和配置 07 Go 的變量聲明 08 Go 的變量賦值 09 Go 語(yǔ)言的 := 10 Go 的整型(int) 11 Go 的無(wú)符號(hào)整型(uint) 12 Go 的浮點(diǎn)型(float) 13 Go 的字符類型 14 Go 的布爾型(bool) 15 Go 的強(qiáng)制類型轉(zhuǎn)換 16 Go 語(yǔ)言的常量 17 Go 語(yǔ)言中代替枚舉的辦法 18 Go 語(yǔ)言中的運(yùn)算符 19 Go 語(yǔ)言的分支語(yǔ)句 20 Go 語(yǔ)言的循環(huán)語(yǔ)句 21 Go 語(yǔ)言的通道 22 Go 語(yǔ)言中的函數(shù) 23 Go 語(yǔ)言函數(shù)中的 defer 24 Go 語(yǔ)言中的閉包 25 Go 語(yǔ)言的指針 26 Go 語(yǔ)言中的數(shù)組 27 Go 語(yǔ)言中的切片 28 Go 語(yǔ)言中的 Map 29 Go 語(yǔ)言中的 range 30 Go 語(yǔ)言拓展以有類型 31 Go 語(yǔ)言中的結(jié)構(gòu)體和"面向?qū)ο?quot; 32 Go 語(yǔ)言中的接口 33 Go 語(yǔ)言類型的內(nèi)嵌 34 Go 語(yǔ)言中的 nil 35 Go 語(yǔ)言函數(shù)式編程 36 Go 語(yǔ)言中的錯(cuò)誤和異常處理 37 Go 語(yǔ)言的并發(fā) 38 Go 語(yǔ)言中的包 39 Go 語(yǔ)言 go mod 包依賴管理工具 40 Go 語(yǔ)言的文件操作 41 Go 語(yǔ)言中的系統(tǒng)包 42 Go 語(yǔ)言的 strings 系統(tǒng)包的使用 43 Go 語(yǔ)言中的變參 44 Go 語(yǔ)言中的反射 45 Go 語(yǔ)言性能測(cè)試 46 使用 Go 語(yǔ)言搭建簡(jiǎn)易登錄功能 47 使用 gin 包優(yōu)化登錄功能
首頁(yè) 慕課教程 Go 入門教程 Go 入門教程 35 Go 語(yǔ)言函數(shù)式編程

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

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

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

1. 編程示例

接下來(lái)我們來(lái)分別展示用函數(shù)式編程和普通編程方式來(lái)實(shí)現(xiàn)一個(gè)累加器,即輸出 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

兩者比較,就是后者將整個(gè)累加過(guò)程作為變量放置在了循環(huán)以外,使得整個(gè)累加可以脫離循環(huán)之外。看起來(lái)就像是不斷的對(duì)一個(gè)傳入的常數(shù)進(jìn)行加工,就像是流水線的一個(gè)工具。所以函數(shù)式編程在開(kāi)發(fā)過(guò)程中經(jīng)常會(huì)用在對(duì)數(shù)據(jù)的長(zhǎng)流程處理。例如,錄入身份證號(hào)時(shí),要從身份證號(hào)中獲取年齡,籍貫、性別等信息,就可以使用三個(gè)函數(shù)對(duì)身份證號(hào)進(jìn)行順序處理。這樣寫的好處就在于可以隨時(shí)增刪其流程。

2. 小結(jié)

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