五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(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ó)家法律
乌什县| 舟山市| 石嘴山市| 延长县| 穆棱市| 玉树县| 辛集市| 厦门市| 新和县| 武陟县| 长宁县| 肇东市| 吴忠市| 德清县| 洞头县| 晋江市| 南康市| 申扎县| 秦皇岛市| 乐业县| 大名县| 白城市| 绍兴市| 潍坊市| 怀宁县| 武冈市| 博湖县| 葫芦岛市| 嘉义市| 隆安县| 仁化县| 儋州市| 重庆市| 宁安市| 庆城县| 白城市| 乳山市| 宾川县| 泰兴市| 阿城市| 讷河市|