国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

WebGL+Three.js入門與實(shí)戰(zhàn) 系統(tǒng)學(xué)習(xí) Web3D 技術(shù)-塞下秋來(lái)風(fēng)景異留意

2023-02-20 12:56 作者:山觀那恭喜囧昂貴的  | 我要投稿


PHP 都有,Go 憑什么不支持命名參數(shù)調(diào)用函數(shù)?

WebGL+Three.js入門與實(shí)戰(zhàn) 系統(tǒng)學(xué)習(xí) Web3D 技術(shù)

download:https://www.51xuebc.com/thread-534-1-1.html


“為什么 Go 不能像 PHP、Python 一樣,在調(diào)用函數(shù)時(shí),直接帶上參數(shù)名和值一同傳入。這樣就不用特意去看這個(gè)函數(shù)的形參的命名、類型等。明明 PHP8 都支持了?”

今天針對(duì)命名參數(shù)這個(gè)特性展開(kāi)考慮,看看 Go 怎樣回事。

命名參數(shù)
假如有了命名參數(shù)這個(gè)功用特性,在我們調(diào)用函數(shù)/辦法時(shí),傳入函數(shù)的參數(shù)不需求固定位置,位置能夠隨意調(diào)整,名字對(duì)就行。以至有的工具會(huì)基于此,做自動(dòng)化的文檔等自描繪的場(chǎng)景。


PHP8 的例子:

function hello(string $name, int $age) {
echo $name, $age;
}
// 兩次調(diào)用的參數(shù)位置不一樣
hello(name:'煎魚(yú)', age:18);
hello(age:18, name:'煎魚(yú)');
理想中 Go 的例子:

package main
func sum(a int, b int) int {
return a + b
}
func main() {
resp := sum(a=7, b=28)
println(resp)
}
由于不支持,運(yùn)轉(zhuǎn)編譯就會(huì)報(bào)錯(cuò):

./prog.go:8:15: syntax error: unexpected = in argument list; possibly missing comma or )
Go 必需是如下代碼:

func sum(a int, b int) int {
return a + b
}
func main() {
resp := sum(7, 28)
println(resp) // 輸出結(jié)果:35
}
也就是按函數(shù)所聲明的參數(shù)位置傳入,才干運(yùn)轉(zhuǎn)勝利。

設(shè)計(jì)哲學(xué)
Go 言語(yǔ)在錯(cuò)誤處置、函數(shù)重載以及缺省參數(shù)等社區(qū)議題討論時(shí),總會(huì)祭出其的設(shè)計(jì)理念是:“顯式大于隱喻”,追求明白,顯式,要不就是 “l(fā)ess is more”。

每次看到只需不滿足這個(gè)理念的提案、討論,根本 Go 團(tuán)隊(duì)能夠盤繞這個(gè)論據(jù)給出一堆理由后回絕掉。

本文提到的帶命名參數(shù)傳入函數(shù),看起來(lái)十分顯式,很明白了。似乎很契合 Go 的設(shè)計(jì)哲學(xué)理念,覺(jué)得不應(yīng)該沒(méi)有才對(duì)?


考慮
在群組的多年討論中,觸及到以下幾類論據(jù)作為支撐:

這是一個(gè)言語(yǔ)設(shè)計(jì)和可讀性問(wèn)題,“命名參數(shù)” 和 “缺省參數(shù)” 根本是成配套呈現(xiàn)在言語(yǔ)設(shè)計(jì)中,需求一并考量適宜與否。會(huì)呈現(xiàn)一加就相當(dāng)于要引入許多新語(yǔ)法特性了,能玩出騷操作。
引入這類特性會(huì)給 Go 帶來(lái)新語(yǔ)法復(fù)雜度,假如函數(shù)參數(shù)名修正了,那是不是毀壞兼容性?是不是調(diào)用方全都得改一遍?假如呈現(xiàn)同名的參數(shù)名,誰(shuí)先誰(shuí)后?怎樣掩蓋?過(guò)長(zhǎng)的話,函數(shù)調(diào)用會(huì)不會(huì)過(guò)于難承受?組合構(gòu)造體掩蓋辦法時(shí),辦法參數(shù)名需不需求堅(jiān)持分歧?會(huì)產(chǎn)生一大堆新問(wèn)題。
引入后會(huì)產(chǎn)生大量的函數(shù)可選參數(shù)(命名參數(shù)+缺省參數(shù)),本來(lái)只需求曉得函數(shù)形參是什么,結(jié)果引入后需求查看名字、缺省值以及對(duì)應(yīng)的缺省邏輯等,會(huì)加大程序員心智擔(dān)負(fù)。
編譯器自身不需求關(guān)注這些信息,為這個(gè)特性加大編譯器的各項(xiàng)開(kāi)支是不用要的,沒(méi)有理由讓編譯器在編譯代碼中存儲(chǔ)函數(shù)的參數(shù)稱號(hào)(需求詳細(xì)講究深意)。
顯然官方態(tài)度是,增加命名參數(shù)特性的弊大于利,貿(mào)然增加會(huì)影響到 Go 自身標(biāo)榜的優(yōu)勢(shì)(簡(jiǎn)約)。以為大可不用加,工具的問(wèn)題需求讓工具本人處理。

總結(jié)
在這篇文章中,我們針對(duì)其他編程言語(yǔ)既有的 “命名參數(shù)” 特性停止了剖析和闡明。顯然 Go 團(tuán)隊(duì)在討論中,以為該項(xiàng)特性關(guān)于靜態(tài)言語(yǔ),特別關(guān)于 Go 團(tuán)隊(duì)來(lái)講,似乎益處太少,加了會(huì)影響本人的作風(fēng)(less is more),還可能會(huì)影響性能,真是大可不用。

各言語(yǔ)間的功用特性比照,是個(gè)老大難的問(wèn)題。假如都一樣,那豈不是搞個(gè)大單體編程言語(yǔ)算了?這顯然是不理想的。

WebGL+Three.js入門與實(shí)戰(zhàn) 系統(tǒng)學(xué)習(xí) Web3D 技術(shù)-塞下秋來(lái)風(fēng)景異留意的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
海口市| 蒙自县| 和硕县| 烟台市| 博白县| 惠来县| 景洪市| 林周县| 井研县| 双峰县| 永城市| 青田县| 丽江市| 大埔县| 灵宝市| 霍邱县| 交口县| 华池县| 揭阳市| 漳平市| 红桥区| 仪陇县| 泰来县| 镇原县| 长治县| 英山县| 阳高县| 长寿区| 章丘市| 墨江| 湟源县| 济宁市| 连山| 无为县| 且末县| 车险| 沂源县| 梁山县| 泾阳县| 枣强县| 定陶县|