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

為了賬號安全,請及時綁定郵箱和手機立即綁定

函數(shù)變量的傳遞過程

員工ID生成器定義了一個函數(shù),EmployeeIdGenerator

main函數(shù)先執(zhí)行,定義了變量generator 屬于?EmployeeIdGenerator的函數(shù)類型

并給變量 generator進行賦值

賦值過程中啟動了 appendSn 函數(shù),這個函數(shù)最終反回了一個 string,并把這個string賦值給了generator

最后打印時,執(zhí)行了generateId這個函數(shù),像函數(shù)內(nèi)傳遞兩個變量

這時,generateId這個函數(shù)接收到并在自己函數(shù)內(nèi)部使用的變量【generator?EmployeeIdGenerator】

要怎么去理解?他接收到的值是個應(yīng)該是個函數(shù),但在這個函數(shù)內(nèi)部的使用有點沒看懂。請老師給講解一下好嗎

正在回答

2 回答

個人理解:我覺得是main函數(shù)里,首先聲明"generator"變量,再給"generator"變量賦值,最后將"generator"作為"generateId"函數(shù)的形參傳入了函數(shù)里去執(zhí)行相關(guān)邏輯

0 回復(fù) 有任何疑惑可以回復(fù)我~

我說下我的理解,我是個菜雞,所說的僅是我個人理解,不一定對,講出來也不是為了誤導(dǎo)各位,只是給個想法,其他同學(xué)也多個考慮的方向;

package main

import (

? ? "fmt"

"strconv"

"sync/atomic"

)


type EmployeeIdGenerator func(company string, department string, sn uint32) string

var company = "Gophers"

var sn uint32


func generateId(generator EmployeeIdGenerator, department2 string) (string, bool) {

//這里修改變量department為department2,會好理解一點

if generator == nil {

return "", false


newSn := atomic.AddUint32(&sn, 1)

return generator(company, department2, newSn), true

}


func appendSn(firstPart string, sn uint32) string {

return firstPart + strconv.FormatUint(uint64(sn), 10)

}


func main() {

var generator EmployeeIdGenerator

generator = func(company string, department string, sn uint32) string {

? ? return appendSn(company+"-"+department+"-", sn)

}

fmt.Println(generateId(generator, "RD"))

}

從main函數(shù)看,先執(zhí)行g(shù)enerateId函數(shù),返回值為 generator("Gophers", "RD", 1), true

generator 再執(zhí)行重寫的方法 返回值為?appendSn("Gophers"+"-"+"RD"+"-", 1)

最終結(jié)果為?Gophers-RD-1 true



0 回復(fù) 有任何疑惑可以回復(fù)我~
#1

nitros 提問者

感謝回答。但是我也是小白,大家一起進步。 但是我覺得先看main函數(shù)的話,應(yīng)該是先觸發(fā)了變量定義的appendSn函數(shù),這時給變量generator賦值了吧?然后把這個值變量傳遞給了函數(shù)generateId。這個時候才啟動了generateId這個函數(shù),并在函數(shù)印數(shù)部分設(shè)置了該函數(shù)下應(yīng)用的引數(shù)接收了變量。同樣的在該變量下另一個引數(shù)department2只是接引了“RD”這個數(shù)字串,所以是department還是department2都一樣的。 我最終理解為,傳過來的數(shù)值是nil就報false。不是的話就按照定好的函數(shù)結(jié)構(gòu)EmployeeIdGenerator一一導(dǎo)入變量。結(jié)束。
2019-12-09 回復(fù) 有任何疑惑可以回復(fù)我~
#2

慕函數(shù)7347090 回復(fù) nitros 提問者

我理解 generator EmployeeIdGenerator 這個的意思是,因為generator的類型是一個函數(shù),所以在后面需要跟函數(shù)類型聲明
2020-01-01 回復(fù) 有任何疑惑可以回復(fù)我~

舉報

0/150
提交
取消
Go語言第一課
  • 參與學(xué)習(xí)       108076    人
  • 解答問題       153    個

Go語言入門教程,編程之必備知識擴散,打好Go語言編程基礎(chǔ)

進入課程

函數(shù)變量的傳遞過程

我要回答 關(guān)注問題
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號