golang 類型本質

? 在聲明一個新類型之后,聲明一個該類型的方法之前需要先回答一個問題:這個類型的本質是什么。如果這個類型增加或者刪除某個值,是要創建新值還是要更改當前的值?如果是要創建一個新值,該類型的方法就是使用值傳遞者。如果是修改當前的值就使用指針接受者這個答案會影響程序內部傳遞這個類型的值得方式:是按照值傳遞還是按照指針傳遞。保持傳遞的一致性很重要。這個背后的原則是,不要只關注某個地方是如何處理的這個值,而是要關注這個值得(本質是什么)?。

5.3.1內置類型

內置類型是由語言提供的一組類型。我們已經見過這些類型,分別是數值類型,字符串類型和布爾類型。這些類型本質上都是(原始的類型)?。因此黨對這些值進行增加或者刪除的時候,會創建一個新的值。基于這個結論把這些類型的值傳遞給方法或者函數時,應該傳遞一個(對應的值得副本)?。

5.3.2引用類型

go語言里的類型有一下幾個:切片、映射、通道、接口和函數類型。當聲明上述類型的變量的時候,創建的變量被稱作(標頭值)?。從技術細節上說(字符串也是一種引用類型)?。每個引用類型創建的標頭值是一個包含指向底層數據結構的指針。每個引用類型還包括一組特殊的字段,(用于管理底層數據結構)?{管理方式}。因為標頭值是為復制而設計的,所以永遠不需要共享一個引用類型的值。標頭值包含一個指針,因此通過復制來傳遞一個引用類型的值得副本,本質上就是在共享底層數據。

5.3.3

結構類型可以用來描述一組數據值,這組值的本質既可以是(原始的,也可以是非原始的)?。如果決定在某寫東西需要刪除或者添加某個接口類型的值時該結構的值不應該被改變,那么需要遵守之前提到的內置類型和引用類型的規范。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy閱讀 9,541評論 1 51
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,991評論 19 139
  • 第5章 引用類型(返回首頁) 本章內容 使用對象 創建并操作數組 理解基本的JavaScript類型 使用基本類型...
    大學一百閱讀 3,270評論 0 4
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,532評論 25 708
  • 關于“擇一城終老,遇一人白首”的出處說法不一。一種說法是源于孔子語錄,另一種說法是源于馮驥才的文章。而我偏愛孔子語...
    once從前慢閱讀 776評論 2 0