變量
概念:程序的基本組成單位
定義:
- 指定變量類型
- 根據值自行判斷變量類型(類型推導)
- 省略var,定義賦值
var i int
var i = 10
i, j := 20, 10
數據基本類型
基本數據類型:數值型、字符型、布爾型、字符串
派生數據類型:指針、數組、結構體、管道、函數、切片、接口、map
注意點
- 如果變量沒有賦值,會初始化值,int爲0,string爲空字符串
- 程序中的加法,如果兩值爲數值類型,則做加法,反之爲字符串類型,則做字符拼接
- 非同類型數值不能相加,比如1,1.2
- 定義字符變量要用雙引號
整型
- 整數區分有符號、無符號,int,uint的大小和系統有關
- golang的整數默認聲明爲int型
- unsafe.Sizeof(n2),查看變量字節大小和數據類型
- 儘量使用佔用空間小的數據類型
- bit:計算機中最小存儲單位
- byte:計算機中最基本的存儲單元 1byte = 8bit
浮點型
- 浮點型都是有符號的
- 尾數部分可能會丟失,造成精度丟失(-111.1234567)
- float64要比float32更精確
- 浮點型有固定的範圍和字段長度,不受系統影響
- 浮點型常量有2中表現方式(十進制形式:1.22|.22必須有小數點。科學計數法:5.1234e2=5.12*10的2次方|5.12E-1:5.12/10的2次方)
字符類型
- golang中沒有特意的字符類型,如果想存儲單個字符,一般用byte來存儲,傳統的字符串是由字符組成,而go是由字節byte組成
- 如果我們保存的字符在ASCII表中,可以只用byte
- 如果我們的字符對應碼值大於255,考慮用int來保存
- 如果需要按照我們輸入的格式輸出,需要格式話%c
- 字符串常量用‘’單引號括起來
- 字符的本質是數字,輸出是,是該字符串utf8的碼值
- 給變量賦值一個數字,按格式輸出,會輸出該數字對應的unicode字符
- 字符類型是可以運算的,整數+字符,會將字符轉換成碼值計算
字符串本質
- 存儲:字符-對應碼值-二進制-存儲
- 讀取:二進制-碼值-字符-讀取
- 字符和碼值的對應關係是通過字符編碼表來決定的
布爾類型
- 布爾值只有true和false
- 只佔一個字節
- 主要運用於邏輯運算
string類型
- 字符串就是由一串固定長度的字符拼接起來的字符序列
- 字符串一旦賦值,不可更改
- 字符串雙引號會識別轉義字符
- 字符串反引號原生格式輸出,可以防止攻擊、輸入源代碼等
- 一行拼接字符串太長,+號必須寫在上一行
數據類型基本轉換
- (數值轉換)轉換可以從範圍小到範圍大,也可以從範圍大到範圍小
- (數值轉換)從範圍大到範圍小,編譯不會報錯,只是轉換的結果按照溢出處理
- (任何類型-string)1、Sprintf 2.strconv.fommat
- (string—任意類型)strconv.Parse
指針
- 基本數據類型,存儲的是值,也叫值類型
- 獲取變量的地址用&i
- 獲取指針變量的值*i
- 值類型包括:int、float、bool、string、數組、結構體struct
- 引用類型:指針、slice切片、map、管道chan、interface
- 值類型內存通常在棧中分配
- 引用類型通常在堆上分配,當沒有任何變量引用這個地址時,該地址對應的數據空間就會成爲一個垃圾,由gc來回收
標識符
命名規範
- 由26個英文字母大小寫、0-9,‘_’組成
- 數字不可以開頭
- 嚴禁區分大小寫
- 不能包含空格
- 下劃線_本身就是個特殊的標識符,返回的值會被忽略
- 不能以系統保留關鍵字作爲標識符(if、break)
- 變量名採用駝峯
- 變量名、函數名、常量如果首字母大寫,可以被其他類使用,如果小寫,只能在本類中使用