天天看點

​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

整型

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

存儲的編碼方式

存儲的長度

對于整型資料,在計算機内部是以補碼的方式,存儲長度,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用于存儲。那麼怎麼配置設定這些存儲單元,也就是編碼規範。

看下它的國際标準是怎麼定義的,參考阮一峰部落格

存儲的編碼規範又是怎麼定義的呢?

以上對浮點型資料的編碼規範和存儲做了說明。

複數型

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語言的常量及變量的聲明,及基本類型的記憶體存儲方式做了總結和實驗

喜歡請關注微信公衆号"雲端漫記", 持續為你更新