国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Go語言可變參數(shù)怎么用能最大化它的效用

馬哥Linux運(yùn)維 ? 來源:博客園 ? 作者:apocelipes ? 2021-09-30 16:33 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

Go 語言可變參數(shù)怎么用能最大化它的效用?本文對(duì)可變參數(shù)進(jìn)行了詳細(xì)介紹。

在實(shí)際開發(fā)中,總有一些函數(shù)的參數(shù)個(gè)數(shù)是在編碼過程中無法確定的,比如我們最常用的 fmt.Printf 和 fmt.Println:

fmt.Printf(“一共有%v 行%v 列、n”, rows, cols)

fmt.Println(“共計(jì)大小:”, size)

當(dāng)你需要實(shí)現(xiàn)類似的接口時(shí),就需要我們的可變參數(shù)出場了。

golang 的可變參數(shù)

可變參數(shù)就是一個(gè)占位符,你可以將 1 個(gè)或者多個(gè)參數(shù)賦值給這個(gè)占位符,這樣不管實(shí)際參數(shù)的數(shù)量是多少,都能交給可變參數(shù)來處理,我們看一下可變參數(shù)的聲明:

func Printf(format string, a ...interface{}) (n int, err error)func Println(a ...interface{}) (n int, err error)

可變參數(shù)使用 name ...Type 的形式聲明在函數(shù)的參數(shù)列表中,而且需要是參數(shù)列表的最后一個(gè)參數(shù),這點(diǎn)與其他語言類似;

可變參數(shù)在函數(shù)中將轉(zhuǎn)換為對(duì)應(yīng)的 []Type 類型,所以我們可以像使用 slice 時(shí)一樣來獲取傳給函數(shù)的參數(shù)們;

有一點(diǎn)值得注意,golang 的可變參數(shù)不需要強(qiáng)制綁定參數(shù)的出現(xiàn)。

舉個(gè)例子,我想在 c 語言中實(shí)現(xiàn)一個(gè)求和任意個(gè)整數(shù)的函數(shù) sum:

int sum(int num, ...) {

// todo

}

我們只有先指定至少一個(gè)固定的形參(num)才能使用...可變參數(shù),在 golang 中是不需要這樣做的:

func sum(nums ...int) int {

//todo

}

這也是 golang 語法簡潔的其中一個(gè)體現(xiàn)。

傳遞參數(shù)給...可變參數(shù)

傳遞參數(shù)給帶有可變參數(shù)的函數(shù)有兩種形式,第一種與通常的參數(shù)傳遞沒有什么區(qū)別,拿上一節(jié)的 sum 舉個(gè)例子:

sum(1, 2, 3)

sum(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)

除了參數(shù)的個(gè)數(shù)是動(dòng)態(tài)變化的之外和普通的函數(shù)調(diào)用是一致的。

第二種形式是使用...運(yùn)算符以變量...的形式進(jìn)行參數(shù)傳遞,這里的變量必須是與可變參數(shù)類型相同的 slice,而不能是其他類型(沒錯(cuò),數(shù)組也不可以),看個(gè)例子:

numbers := []int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}

sum(numbers.。.) // 和 sum(1, 2, 3, 4, 5, 6, 7, 8, 9. 10) 等價(jià)

這種形式最常用的地方是在內(nèi)置函數(shù) append 里:

result := []int{1, 3}

data := []int{5, 7, 9}

result = append(result, data.。.) // result == []int{1, 3, 5, 7, 9}

是不是和 python 的解包操作很像,沒錯(cuò),大部分情況下你可以把...運(yùn)算符當(dāng)做是 golang 的 unpack 操作,不過有幾點(diǎn)不同還是要注意的:

第一,只能對(duì) slice 類型使用...運(yùn)算符:

arr := [...]int{1, 2, 3, 4, 5}

sum(arr.。.) // 編譯無法通過

你會(huì)見到這樣的報(bào)錯(cuò)信息:cannot use arr (type [5]int) as type []int in argument to sum

這是因?yàn)榭勺儏?shù)實(shí)際是個(gè) slice,... 運(yùn)算符是個(gè)語法糖,它把前面的 slice 直接復(fù)制給可變參數(shù),而不是先解包成獨(dú)立的 n 個(gè)參數(shù)再傳遞,這也是為什么我只說...運(yùn)算符看起來像 unpack 的原因。

第二個(gè)需要注意的地方是不能把獨(dú)立傳參和 ... 運(yùn)算符混用,再看個(gè)例子:

slice := []int{2, 3, 4, 5}

sum(1, slice.。.) // 無法通過編譯

這次你會(huì)見到一個(gè)比較長的報(bào)錯(cuò):

too many arguments in call to sum

have (number, []int.。.)

want (...int)

這是和前面所說的原因是一樣的,... 運(yùn)算符將不定參數(shù)直接替換成了 slice,這樣就導(dǎo)致前一個(gè)獨(dú)立給出的參數(shù)不再算入可變參數(shù)的范圍內(nèi),使得函數(shù)的參數(shù)列表從 (...int) 變成了 (int, ...int),最終使得函數(shù)類型不匹配編譯失敗。

正確的做法也很簡單,不要混合使用...運(yùn)算符給可變參數(shù)傳參即可。

讀了這篇文章,再加上一些簡單的聯(lián)系,我相信你們一定也能掌握 golang 可變參數(shù)的使用。

參考:

https://golang.org/ref/spec#Passing_arguments_to_.。._parameters

https://golang.org/doc/effective_go.html#append

轉(zhuǎn)自:

cnblogs.com/apocelipes/p/9861315.html

責(zé)任編輯:haq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 參數(shù)
    +關(guān)注

    關(guān)注

    11

    文章

    1869

    瀏覽量

    33945
  • 編碼
    +關(guān)注

    關(guān)注

    6

    文章

    1039

    瀏覽量

    56968

原文標(biāo)題:Go 可變參數(shù) ... parameters 讀這篇就夠了

文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    Go 語言高并發(fā)服務(wù)設(shè)計(jì)與性能調(diào)優(yōu)實(shí)戰(zhàn):從萬級(jí)到百萬級(jí)并發(fā)的演進(jìn)之路

    在2026年的今天,Go 語言已成為高并發(fā)后端服務(wù)的首選語言。根據(jù) Stack Overflow 最新開發(fā)者調(diào)查: 指標(biāo) 數(shù)據(jù) Go 語言
    發(fā)表于 02-18 19:19

    告別逆流罰款!西格電力防逆流方案,讓光伏并網(wǎng)零風(fēng)險(xiǎn)、收益最大化

    合規(guī)性的管控愈發(fā)嚴(yán)格,違規(guī)逆流不僅面臨經(jīng)濟(jì)處罰,還可能影響項(xiàng)目并網(wǎng)資格。西格電力防逆流柔性控制方案,精準(zhǔn)對(duì)標(biāo)政策要求,從源頭破解痛點(diǎn),實(shí)現(xiàn)光伏并網(wǎng)零合規(guī)風(fēng)險(xiǎn)、發(fā)電收益最大化的雙重目標(biāo)。
    的頭像 發(fā)表于 01-27 16:23 ?1799次閱讀
    告別逆流罰款!西格電力防逆流方案,讓光伏并網(wǎng)零風(fēng)險(xiǎn)、收益<b class='flag-5'>最大化</b>

    輕量級(jí)參數(shù)的管理框架(C語言)

    ;一次性完成操作(需要申請(qǐng)較大的內(nèi)存完成) 支持啟用鍵值對(duì)功能 每個(gè)參數(shù)都需要指定唯一的ID,在后期版本迭代對(duì)參數(shù)表刪除、插入或添加參數(shù)時(shí)也向下兼容,不會(huì)影響其他
    發(fā)表于 12-16 06:24

    FPG推出CheckMax,以AI洞察助力餐飲業(yè)利潤最大化

    -FPG推出CheckMax,F(xiàn)rontline Performance Group推出CheckMax,以AI洞察助力餐飲業(yè)利潤最大化 更高利潤、更優(yōu)服務(wù):CheckMax直擊餐廳頭號(hào)經(jīng)營挑戰(zhàn)
    的頭像 發(fā)表于 12-10 19:02 ?1045次閱讀
    FPG推出CheckMax,以AI洞察助力餐飲業(yè)利潤<b class='flag-5'>最大化</b>

    聚飛光電PLM系統(tǒng)升級(jí)推動(dòng)IPD全流程價(jià)值最大化落地

    研發(fā)全流程的規(guī)范化管控與高效協(xié)同,為產(chǎn)品創(chuàng)新提速、市場響應(yīng)提質(zhì)注入核心動(dòng)力,推動(dòng)IPD全流程價(jià)值最大化落地。
    的頭像 發(fā)表于 12-05 09:55 ?837次閱讀
    聚飛光電PLM系統(tǒng)升級(jí)推動(dòng)IPD全流程價(jià)值<b class='flag-5'>最大化</b>落地

    數(shù)據(jù)驅(qū)動(dòng)的 “不給糖就搗蛋”,讓你的萬圣節(jié)收獲最大化

    一年只有一次! 鑒于盡可能多收集糖果的時(shí)間窗口十分有限,我們希望為孩子們提供一個(gè)競爭優(yōu)勢 —— 當(dāng)然,這要借助 Minitab預(yù)測分析模塊的力量。為了直觀展示這一點(diǎn),我們模擬了一個(gè)場景:通過收集 “不給糖就搗蛋者”(即參與活
    的頭像 發(fā)表于 10-27 15:14 ?374次閱讀
    <b class='flag-5'>用</b>數(shù)據(jù)驅(qū)動(dòng)的 “不給糖就搗蛋”,讓你的萬圣節(jié)收獲<b class='flag-5'>最大化</b>

    天合光能解決方案如何助力光伏發(fā)電收益最大化

    近日,由天合光能攜手全球權(quán)威光伏媒體PV Magazine舉辦的光伏技術(shù)研討會(huì)于線上舉行。圍繞“電力市場化時(shí)代光伏資產(chǎn)價(jià)值最大化”這一主題,天合光能產(chǎn)品經(jīng)理李子軒同觀眾分享了最新的產(chǎn)品技術(shù)與市場趨勢
    的頭像 發(fā)表于 10-22 11:36 ?1273次閱讀
    天合光能解決方案如何助力光伏發(fā)電收益<b class='flag-5'>最大化</b>

    IP6163至為芯具備MPPT硬件算法的太陽光伏降壓DC-DC芯片

    英集芯IP6163是一款主要應(yīng)用于太陽電池板供電的光伏降壓DC-DC芯片。 具備最大功率點(diǎn)追蹤功能(MPPT),快速精準(zhǔn)定位太陽電池板的最大
    的頭像 發(fā)表于 09-19 17:50 ?1234次閱讀
    IP6163至為芯具備MPPT硬件算法的太陽<b class='flag-5'>能</b>光伏降壓DC-DC芯片

    普源示波器DS80000在太陽逆變器測試中的應(yīng)用

    :將光伏陣列輸出的直流電(DC)轉(zhuǎn)換為交流電(AC),滿足負(fù)載或并網(wǎng)需求。 最大功率點(diǎn)跟蹤(MPPT):動(dòng)態(tài)調(diào)整工作點(diǎn),確保在不同光照、溫度條件下最大化輸出功率。 電網(wǎng)同步:并網(wǎng)時(shí)與電網(wǎng)電壓、頻率、相位精準(zhǔn)匹配,避免電能質(zhì)量問題和安全隱患。
    的頭像 發(fā)表于 07-31 17:26 ?793次閱讀
    普源示波器DS80000在太陽<b class='flag-5'>能</b>逆變器測試中的應(yīng)用

    【VisionFive 2單板計(jì)算機(jī)試用體驗(yàn)】3、開源大語言模型部署

    , Gemma等開源大模型。當(dāng)然,一些閉源的(類似chatgpt, gemini)是不支持部署的。如下圖: 在端側(cè)部署大模型,個(gè)人認(rèn)為最大的好處:是可以避免因文本或圖片上傳而造成的信息泄露,因?yàn)橐磺形谋?/div>
    發(fā)表于 07-19 15:45

    光伏電站能源管理系統(tǒng)的技術(shù)應(yīng)用

    光伏電站的能源管理是指通過一系列技術(shù)手段和管理策略,對(duì)光伏電站的發(fā)電、儲(chǔ)、用電及并網(wǎng)過程進(jìn)行全面監(jiān)測、控制和優(yōu)化,以提高能源利用效率、確保電網(wǎng)穩(wěn)定運(yùn)行、降低運(yùn)維成本,并最大化電站的經(jīng)濟(jì)效益和環(huán)境
    的頭像 發(fā)表于 06-16 11:37 ?785次閱讀

    一個(gè)帶有CYPD3177的自定義COOLDIM_PRG_BOARD,當(dāng)翻轉(zhuǎn)時(shí),則沒有POWER_DRILL2GO,為什么?

    我有一個(gè)帶有 CYPD3177 的自定義COOLDIM_PRG_BOARD 。 當(dāng)插入時(shí),僅從POWER_DRILL2GO電源接收POWER_DRILL2GO信號(hào),并且 USB 電纜處于一個(gè)方向
    發(fā)表于 05-26 07:24

    光伏用戶必看!陽臺(tái)儲(chǔ)電表:余電存儲(chǔ)再利用,發(fā)電收益最大化

    系統(tǒng),屬于超小型分布式光伏系統(tǒng),也被稱為插入式光伏系統(tǒng)。用戶只需將光伏系統(tǒng)固定在陽臺(tái)欄桿上,將系統(tǒng)電纜插入家中插座,利用太陽發(fā)電產(chǎn)生電力供應(yīng)。陽臺(tái)光伏是指安裝在陽臺(tái)上的一種小型光伏系統(tǒng),通常由一到兩個(gè)光伏組件、一個(gè)?微型逆變器和一個(gè)儲(chǔ)
    的頭像 發(fā)表于 05-23 10:53 ?1274次閱讀
    光伏用戶必看!陽臺(tái)儲(chǔ)<b class='flag-5'>能</b>電表:余電存儲(chǔ)再利用,發(fā)電收益<b class='flag-5'>最大化</b>

    借助DFT技術(shù)實(shí)現(xiàn)競爭力最大化

    通過改進(jìn)和優(yōu)化設(shè)計(jì)與制造的各個(gè)方面,半導(dǎo)體行業(yè)已經(jīng)能夠?qū)崿F(xiàn) IC 能力的巨大進(jìn)步。可測試性設(shè)計(jì) (DFT)——涵蓋從在 RTL 中插入測試邏輯,到對(duì)現(xiàn)場退回產(chǎn)品進(jìn)行失效分析等全流程,是半導(dǎo)體企業(yè)獲得商業(yè)成功的關(guān)鍵環(huán)節(jié)。如果沒有有效的 DFT 策略,公司將難以滿足市場對(duì) DFT 集成、缺陷檢測以及制造工藝/良率改進(jìn)的巨大需求。
    的頭像 發(fā)表于 05-22 15:16 ?980次閱讀

    從 Java 到 Go:面向?qū)ο蟮木奕伺c云原生的輕騎兵

    Go 語言在 2009 年被 Google 推出,在創(chuàng)建之初便明確提出了“少即是多(Less is more)”的設(shè)計(jì)原則,強(qiáng)調(diào)“以工程效率為核心,極簡規(guī)則解決復(fù)雜問題”。它與 Java
    的頭像 發(fā)表于 04-25 11:13 ?644次閱讀