常量聲明
常量是程序在編譯時就肯定的值,程序在執行時不能修改常量的值。聲明常量使用關鍵字const。在聲明常量時,須要對常量賦值。
const 名稱 類型 = 值 或
const 名稱 = 值 自動作類型推斷html
const aa int = 123 //正確 const aa = 123 //正確 const aa int //錯誤
枚舉
go語言沒有提供枚舉類型,能夠藉助常量來定義, iota默認值是0,在一組const定義中每次+1,編程
const ( E int = iota // 東 0 W // 西 1 S // 南 2 N // 北 3 ) const ( E1 int = iota + 3 // 東 3 W1 // 西 4 S1 // 南 5 N1 // 北 6 )
變量是編程語言的重要組成元素,變量至關於內存空間的一個別名,在程序執行時,根據聲明的變量,會在內存中開闢這樣的一塊存儲單元。
變量聲明
變量聲明定義了內存中存儲的規則和規範,如,var aa int8
的意思是請在內存中給我一塊1byte的長度的存儲單元,我要用來存儲數字的轉化後的補碼,這裏的聲明,至關於定義,至關於蓋房子畫的圖紙,在初始化時,真正的落實和執行。可是在基本類型聲明時,會直接對其作初實化,也就是說,對於基本類型,在使用var聲明時,聲明和初始化是一塊兒作的。
聲明的語法
直接聲明式
var 變量名 類型
類型推斷式
var 變量名 = 值
簡短聲明(該種方式只能用於局部變量)
變量名 := 值編程語言
變量初始化
變量初始化是剛在上文說的開闢內存空間,符初值,整型類型默認的初值爲0,也能夠在聲明時對其設定
例:函數
var aa int8 = 8 var bb = 11 cc := 3
在基本類型中,變量的聲明和初始化其實是一步,這裏之因此分開闡述是爲了說明實際上這是兩步操做
變量賦值
在聲明瞭變量後,就能夠修改變量的值
變量的賦值很簡單,使用=
進行賦工具
注意
已經聲明瞭的變量不能對其再次聲明
如:ui
var aa int = 8 var aa int8
當咱們要把一個值變成計算機能夠識別的處理,須要肯定兩點編碼
對於整型數據,在計算機內部是以補碼的方式,存儲長度,go語言的提供的多種長度不一樣的整型數據類型。以下:spa
類型 | 長度 |
---|---|
int8 | 1byte |
int16 | 2byte |
int32 | 4byte |
int64 | 8byte |
int | 根據系統位數,4byte或8byte |
uint8 | 1byte |
uint16 | 2byte |
uint32 | 4byte |
uint64 | 8byte |
uint | 根據系統位數,4byte或8byte |
byte | 1byte |
rune | 4byte |
根據以上的內存單元的規範和咱們已知的補碼知識,能夠獲得每種類型的存儲範圍
在位計算中再作詳細的展開。調試
go語言支持的浮點型有兩種float32,float64兩種數據類型,它們的算術規範由IEEE754浮點數國際標準定義。
float32在內存分配4byte用於存儲,float64內存中分配8byte用於存儲。那麼怎麼分配這些存儲單元,也就是編碼規範。
看下它的國際標準是怎麼定義的,參考阮一峯博客
code
存儲的編碼規範又是怎麼定義的呢?
[](https://liushaobo-image-bk.os...
以上對浮點型數據的編碼規範和存儲作了說明。
go語言提供了複數數據類型complex64和complex128,這個在平時的代碼中不多用的到,在此不作展開
在一些編程語言中,沒有bool類型使用0或1來標示go語言中的bool類型佔一個存儲單元
那個在內存中存儲的是什麼樣?
經過gdb調試工具,進入內存中,一探究竟。
一臺標準的馮諾伊曼模型計算機,有cpu,寄存器, 內存,I/O設備組成,cpu和積存器組成了計算單元,內存是數據的存儲單元,I/O設備是和做爲計算機的入口和出口同外部進行交互。
數值計算的基本運算符有加,減,乘,除,模運算,在go語言中分別對應,+,-,*,/,%
在計算機內部是怎麼完成運算的?該篇幅將單獨做爲一個專題作後文中詳細展開。在此咱們只須要知道,經過計算符鏈接的變量最終都會被轉化爲cpu的邏輯運算。
上文分別介紹了內存和計算符,那麼怎麼將計算的結果打印出來,也就是將內存中值,經過I/O設備輸出?
go語言中內置的語言包中提供了這樣的函數,咱們只須要調用該函數,便可完成I/O操做。
在fmt包下有Scanln()用於輸入,Println()用於輸出。
以上介紹了go語言的常量及變量的聲明,及基本類型的內存存儲方式作了總結和實驗
喜歡請關注"雲端漫記", 持續爲你更新