go語言數值類型及布爾類型

常量

常量聲明
常量是程序在編譯時就確定的值,程序在執行時不能修改常量的值。聲明常量使用關鍵字const。在聲明常量時,需要對常量賦值。
const 名稱 類型 = 值 或
const 名稱 = 值 自動做類型推斷

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

在基本類型中,變量的聲明和初始化實際上是一步,這裏之所以分開闡述是爲了說明實際上這是兩步操作
變量賦值
在聲明瞭變量後,就可以修改變量的值
變量的賦值很簡單,使用=進行賦

注意
已經聲明瞭的變量不能對其再次聲明
如:

var aa int = 8
var aa int8

整型

當我們要把一個值變成計算機可以識別的處理,需要確定兩點

  1. 存儲的編碼方式
  2. 存儲的長度

對於整型數據,在計算機內部是以補碼的方式,存儲長度,go語言的提供的多種長度不同的整型數據類型。如下:

類型 長度
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用於存儲。那麼怎麼分配這些存儲單元,也就是編碼規範。
看下它的國際標準是怎麼定義的,參考阮一峯博客

存儲的編碼規範又是怎麼定義的呢?
[](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語言的常量及變量的聲明,及基本類型的內存存儲方式做了總結和實驗

喜歡請關注"雲端漫記", 持續爲你更新
圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章