亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在函數調用上定義 golang 結構的成本

在函數調用上定義 golang 結構的成本

Go
藍山帝景 2023-06-01 16:57:22
我偶然發現了一個定義自己的請求和響應類型的函數。func doSomething() {    type request struct {        resourceID string    }    type response struct {        resourceContents *Data    }    request := initializeRequest()    result := dispatchRequest(request)    ...}我認為這有很大的優勢,可以在函數主體中記錄請求和響應的結構。當許多這樣的函數在同一個文件中并且它們的請求和響應結構都具有不同的類型時,這樣做的便利性尤其明顯:在函數外部定義類型意味著我必須以不同的方式命名它們。不過,我擔心這樣做的成本:讓函數調用聲明自己的類型與在包范圍內聲明該類型相比要昂貴得多嗎?另外,這種方法是慣用的嗎?
查看完整描述

1 回答

?
蠱毒傳說

TA貢獻1895條經驗 獲得超3個贊

類型是一個編譯時概念,它們的作用域(通常)不會影響運行時速度,因為編譯器在這些情況下生成的代碼沒有注意到原始類型(閱讀更多關于類型擦除和具體化的內容),反射是離群值,但你在這里沒有反映。


也就是說,我覺得這段代碼有點可疑:

request?:=?initializeRequest()

在哪里initializeRequest定義的?它必須知道類型request,所以我假設它也是函數內部的?否則代碼將無法編譯。在許多情況下,這些考慮因素限制了局部函數結構的實用性,但如果您確實擁有局部的所有內容,我認為盡可能隱藏類型是一個很好的做法。

在更大規模的項目中,測試問題也會發揮作用。如果它們隱藏在作用域中,您如何測試作用于它們的類型和函數?


查看完整回答
反對 回復 2023-06-01
  • 1 回答
  • 0 關注
  • 121 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號