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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

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

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

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

并給變量 generator進(jìn)行賦值

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

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

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

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

正在回答

2 回答

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

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

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

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,會(huì)好理解一點(diǎn)

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 提問者

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

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

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

舉報(bào)

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

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

進(jìn)入課程

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

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

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

幫助反饋 APP下載

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

公眾號(hào)

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