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

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

參數和返回值中的指針和值

參數和返回值中的指針和值

Go
慕碼人2483693 2019-06-29 15:00:41
參數和返回值中的指針和值在Go中,返回一個struct價值或其部分。對于我見過的個人:type MyStruct struct {     Val int}func myfunc() MyStruct {     return MyStruct{Val: 1}}func myfunc() *MyStruct {     return &MyStruct{}}func myfunc(s *MyStruct) {     s.Val = 1}我理解它們之間的區別。第一個返回結構的副本,第二個是指向在函數中創建的struct值的指針,第三個期望傳入一個現有的結構并重寫該值。我已經看到所有這些模式都在不同的環境中使用,我想知道關于這些模式的最佳實踐是什么。你什么時候會用它?例如,第一個可以用于小型結構(因為開銷最小),第二個可以用于較大的結構。第三,如果您想要非常高效的內存,因為您可以很容易地重用單個結構實例之間的調用。對于何時使用哪種方法,有什么最佳做法嗎?同樣,關于切片的相同問題:func myfunc() []MyStruct {     return []MyStruct{ MyStruct{Val: 1} }}func myfunc() []*MyStruct {     return []MyStruct{ &MyStruct{Val: 1} }}func myfunc(s *[]MyStruct) {     *s = []MyStruct{ MyStruct{Val: 1} }}func myfunc(s *[]*MyStruct) {     *s = []MyStruct{ &MyStruct{Val: 1} }}再說一遍:這里的最佳實踐是什么?我知道切片總是指針,所以將指針返回到片是沒有用的。但是,我是否應該返回一個struct值的片段,一個指向structs的指針片段,我是否應該將指向一個片段的指針作為參數傳遞(Go應用程序引擎API)?
查看完整描述

3 回答

?
慕絲7291255

TA貢獻1859條經驗 獲得超6個贊

簽名是Replace(s, old, new []byte, n int) []bytes、old和new各有三個單詞(切片頭是(ptr, len, cap))和n int是一個單詞,所以10個單詞,在8個字節/字是80個字節

查看完整回答
反對 回復 2019-06-29
  • 3 回答
  • 0 關注
  • 696 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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