限制一:go的指標不能進行數**算
。
來看乙個簡單的例子:
a := 5p := &a
p++p = &a + 3
上面的**將不能通過編譯,會報編譯錯誤:invalid operation
,也就是說不能對指標做數**算。
限制二:不同型別的指標不能相互轉換
。
例如下面這個簡短的例子:
func main()
也會報編譯錯誤:
cannot use &a (type *int) as type *float64 in assignment
限制三:不同型別的指標不能使用==或!=比較
。
只有在兩個指標型別相同或者可以相互轉換的情況下,才可以對兩者進行比較。另外,指標可以通過==
和!=
直接和nil
作比較。
限制四:不同型別的指標變數不能相互賦值
。
這一點同限制三。
參考
深度解密Go語言之map
1 實現map最主要的資料結構有兩種 雜湊查詢表 hashtable 搜尋樹 searchtree go語言的map採用雜湊查詢表實現。2 雜湊查詢表一般會存在 碰撞 的問題。有兩種常用解決辦法 鍊錶法和開放位址法。go語言採用的是鍊錶法。3 自平衡搜尋樹法的最差搜尋效率是 o logn 而雜湊查詢...
go語言之陣列的深度理解
陣列指標和指標陣列 陣列指標 我們可以宣告乙個指標變數,指向乙個陣列 arr int 陣列指標 var ptr int arr 簡寫 ptr arr指標陣列 就是乙個陣列裡面存放的都是指標 x,y 1,2var arrptr 5 int 沒有手動初始化的元素,已經自動初始化指標型別對應的零值 nil...
Go語言之GO 語言常量
相對於變數,常量是恆定不變的值,多用於定義程式執行期間不會改變的那些值。常量的宣告和變數宣告非常類似,只是把var換成了const,常量在定義的時候必須賦值。const pi 3.1415 const e 2.7182宣告了pi和e這兩個常量之後,在整個程式執行期間它們的值都不能再發生變化了。多個常...