部落格289 Go定義變數時為什麼型別放後面

2021-10-06 23:59:20 字數 1027 閱讀 2272

內容:go語言在定義變數的時候,型別是放在名字後面的,雖然彆扭,但是是有好處的

一、不容易引起多變數定義時的型別錯誤

* 避免出現c語言中那樣含糊不清的宣告形式:int

* a, b;

---其中只有 a 是指標而 b 不是。

如果你想要這兩個變數都是指標,則需要分開寫成:int

* a;

int* b;

* 而go中將型別放後面,則可以都宣告為指標型別:

var a, b *

int

二、當定義情況簡單時,則c更加直觀

c:

int a;

int*a;

int a[3]

;go:

a int

a *int

a [3

]int

相比之下:c更易於理解

三、當定義情況複雜時,go更加直觀,而c除非非常熟悉,否則不經過分析,難以直接看出

比如:函式指標

c:int

(*fp)

(int a,

int b)

;int

(*fp)

(int

(*ff)

(int x,

int y)

,int b)

go:f func

(func

(int

,int

)int

,int

)int

f func

(func

(int

,int

)int

,int

)func

(int

,int

)int

相比之下:go的清晰易懂!而c的確層層巢狀,難以直接看出是什麼型別的指標

為什麼在定義hashcode時要使用31這個數呢?

public int hashcode hash h return h 該函式是我看的函式介面原始碼,為什麼要使用31這個數呢?其實上面的實現也可以總結成數數裡面下面這樣的公式 s 0 31 n 1 s 1 31 n 2 s n 1 原因如下 a.31是乙個素數,素數作用就是如果我用乙個數字來乘以這...

為什麼在定義hashcode時要使用31這個數呢?

public int hashcode hash h return h 該函式是我看的函式介面原始碼,為什麼要使用31這個數呢?其實上面的實現也可以總結成數數裡面下面這樣的公式 s 0 31 n 1 s 1 31 n 2 s n 1 原因如下 a.31是乙個素數,素數作用就是如果我用乙個數字來乘以這...

C 靜態成員變數為什麼在類外部定義?

c 中靜態成員變數要在類外部再定義,否則產生link2001錯誤.class testclass 類外部定義,若不寫會產生 error lnk2001 unresolved external symbol public static int testclass m i m i testclass 2...