## 8.1\. 概念差異
* Go沒有支持構造和析構的class類型,也沒有繼承和虛函數的概念。但是go提供接口interfaces 支持,我們可以把接口看作是C++中模板類似的技術。
* Go提供垃圾內存回收支持。我們沒有必要顯式釋放內存,go的運行時系統會幫我們收集垃圾內存。
* Go中有指針,但是沒有指針算術。因此,你不可能通過指針以字節方式來遍歷一個字符串。 數組一個普通類型變量。當用數組作為參數調用函數時,將會復制整個數組。當然,Go語言中一般用切片 (slices)代替數組作為參數,切片是建立在底層數組地址之上的,因此傳遞的是數組的 地址。切片在后面會詳細討論。
* 內建對字符串的支持。并且字符串創建后就不能修改。
* 內建hash表支持,術語叫字典(map)。
* 語言本身提供并發和管道通訊功能,細節在后面會討論。
* 有少數類型是通過引用傳遞(字典和管道,將在后面討論)。也就是說,將字典傳遞給一個 函數不會復制整個字典,而且函數對字典的修改會影響到函數調用者的字典數據。這和C++中引用 概念類似。
* Go不使用頭文件。每個源文件都被定義在特定的包package中,在包中以大寫 字母定義的對象(例如類型,常量,變量,函數等)對外是可見的,可以被別的代碼導入使用。
* Go不會作隱式類型轉換。如果在不同類型之間賦值,必須強制轉換類型。
* Go不支持函數重載,也不支持運算符定義。
* Go不支持const和volatile 修飾符。
* Go使用nil表示無效的指針,C++中使用NULL或0 表示空指針。
- 1. 關于本文
- 2. Go語言簡介
- 3. 安裝go環境
- 3.1. 簡介
- 3.2. 安裝C語言工具
- 3.3. 安裝Mercurial
- 3.4. 獲取代碼
- 3.5. 安裝Go
- 3.6. 編寫程序
- 3.7. 進一步學習
- 3.8. 更新go到新版本
- 3.9. 社區資源
- 3.10. 環境變量
- 4. Go語言入門
- 4.1. 簡介
- 4.2. Hello,世界
- 4.3. 分號(Semicolons)
- 4.4. 編譯
- 4.5. Echo
- 4.6. 類型簡介
- 4.7. 申請內存
- 4.8. 常量
- 4.9. I/O包
- 4.10. Rotting cats
- 4.11. Sorting
- 4.12. 打印輸出
- 4.13. 生成素數
- 4.14. Multiplexing
- 5. Effective Go
- 5.1. 簡介
- 5.2. 格式化
- 5.3. 注釋
- 5.4. 命名
- 5.5. 分號
- 5.6. 控制流
- 5.7. 函數
- 5.8. 數據
- 5.9. 初始化
- 5.10. 方法
- 5.11. 接口和其他類型
- 5.12. 內置
- 5.13. 并發
- 5.14. 錯誤處理
- 5.15. Web服務器
- 6. 如何編寫Go程序
- 6.1. 簡介
- 6.2. 社區資源
- 6.3. 新建一個包
- 6.4. 測試
- 6.5. 一個帶測試的演示包
- 7. Codelab: 編寫Web程序
- 7.1. 簡介
- 7.2. 開始
- 7.3. 數據結構
- 7.4. 使用http包
- 7.5. 基于http提供wiki頁面
- 7.6. 編輯頁面
- 7.7. template包
- 7.8. 處理不存在的頁面
- 7.9. 儲存頁面
- 7.10. 錯誤處理
- 7.11. 模板緩存
- 7.12. 驗證
- 7.13. 函數文本和閉包
- 7.14. 試試!
- 7.15. 其他任務
- 8. 針對C++程序員指南
- 8.1. 概念差異
- 8.2. 語法
- 8.3. 常量
- 8.4. Slices(切片)
- 8.5. 構造值對象
- 8.6. Interfaces(接口)
- 8.7. Goroutines
- 8.8. Channels(管道)
- 9. 內存模型
- 9.1. 簡介
- 9.2. Happens Before
- 9.3. 同步(Synchronization)
- 9.4. 錯誤的同步方式
- 10. 附錄
- 10.1. 命令行工具
- 10.2. 視頻和講座
- 10.3. Release History
- 10.4. Go Roadmap
- 10.5. 相關資源