常量與運算子
常量的定義
-
常量的值在編譯時已經確定
-
常量的定義格式與變數的基本相同
-
等號的右側必須是常量或者常量表示式
-
規範: 常量定義時建議都使用大寫,單詞之間使用大寫
- 便於包的外部呼叫
-
如果只限於包內部使用在常量開頭使用
_
或者使用小寫c
//常量賦值 package main import "fmt" const a int = 1 //常規寫法:宣告型別 const b = `A` //自動判斷型別 const( c = a d = a + 1 e = a + 2 ) const ( //常量組定義方法2 a2, b2, c2 = 1, "2", "c" ) const a3, b3, c3 = 1, "2", "c" //簡單寫法,多個定義 const ( //常量組特性:如果常量沒有賦值,下面預設使用了之前的常量表示式 a4 = 1 b4 c4 d4 ) func main() { fmt.Println(a4) fmt.Println(b4) fmt.Println(c4) fmt.Println(d4) } /*output 1 1 1 1 */
常量與全域性變數的區別
-
常量表示式裡面必須使用常量表示式的變數和內建函式,不能使用執行時才能獲得的變數和值
package main import "fmt" var sss = 123 const ( //a = len(sss) //這種寫法是錯誤的,無法使用全域性變數 b = "123" c = len(b) d,f = 1,"abc" j //這種方式也是錯誤的,初始化的個數必須相同 ) func main() { //fmt.Println(a) fmt.Println(b) fmt.Println(c) fmt.Println(d) } /*output 123 3 3 */
列舉結合常量組使用,用於計數
-
常量組中每定義一個常量,計數就遞增1,第一個常量預設為0
-
當組中常量出現關鍵字
iota
時,說明此時需要使用該組常量的計數//常量&列舉(計數) package main import "fmt" const ( B1 = "ssss" A = "a" B = iota E F = iota ) func main() { fmt.Println(B1) fmt.Println(A) fmt.Println(B) fmt.Println(E) fmt.Println(F) } /*output ssss //iota =0 a //iota=1 2 //iota =2 3 4 */
運算子
- go中運算子均時從左到右
小練習:嘗試結合常量的iota
與<<
運算子實現計算機儲存單位的列舉***
- expt:
```go
/*實現計算機儲存單位常量的列舉
*/
package main
import "fmt"
const (
B float64 = 1 << (iota * 10) //此時iota =0 ,KB
KB // 此時計數為1,MB
MB // iota為2
GB
TB
PB
)
func main() {
fmt.Println(B)
fmt.Println(KB)
fmt.Println(MB)
fmt.Println(TB)
fmt.Println(PB)
}
/*output
1
1024
1.048576e+06
1.099511627776e+12
1.125899906842624e+15
*/
```