新手上路,本人由C/C++轉向Java開發,現在開始轉向Go開發,由于java開發習慣,通常為物件撰寫get、set方法。當我學完Go的基本語法后開始研讀一些開源產品時發現,基本很少見有人為struct物件撰寫get、set方法。在這里想請教大家,Go開發中是否有必要增加get、set方法,如果有,什么情況下需要。此外還有個關于包路徑的問題
```
---a
-----b
-------bb.go
-----c
-------cc.go
---aa.go
```
a路徑中有一個aa.go檔案,同時a路徑下有b、c兩個子路徑,他們中分別含有bb.go和cc.go檔案
像這樣的包路徑是否允許?如果允許,那么aa.go中如何使用b包中和c包中的內容?
非常感謝回答的朋友,
uj5u.com熱心網友回復:
1. 個人覺得隨意,更推薦使用go的大小寫來控制2. 可以這這樣搞。通過完整路徑或者相對路徑訪問,例如 /a/b/bb或者 ./b/bb - 如果bb.go的package是bb的話。
uj5u.com熱心網友回復:
成員屬性最好要像C#那樣靠編譯器來支持或者優化,否則自己去定義那么多get set方法等全是垃圾代碼,開發和執行效率都低,golang的函式呼叫就意味著引數和回傳值的一次值拷貝。uj5u.com熱心網友回復:
謝謝!uj5u.com熱心網友回復:
謝謝!請問如果是指標傳遞是否有值拷貝的問題。go有像spring一樣的框架嗎?uj5u.com熱心網友回復:
指標本身也是變數,引數傳遞時是拷貝的指標本身,理解為其它語言里所說的淺拷貝吧uj5u.com熱心網友回復:
基本可以理解為指標傳遞為淺拷貝,不過和 C 的指標傳遞有一定的區別,參見:
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/113482.html
標籤:其他技術討論專區
上一篇:國產GPU目前對于OpenGL、OpenCL的支持都如何?
下一篇:使用hive從另外一張表加載資料,另外一張表已經使用lzo壓縮的了,提示Invalid LZO header,請問如何解決呀?
