一、基本數據類型
在 Go 編程語言中,數據類型用于聲明函數和變量。
數據類型的出現是為了把數據分成所需內存大小不同的數據,編程的時候需要用大數據的時候才需要申請大內存,就可以充分利用內存。
Go 基本數據類型
類別 | 類型 | 描述 | 零值 | 示例 | 取值范圍 |
---|---|---|---|---|---|
布爾型 | bool | 邏輯值,表示真或假 | false | true , false | true 或 false |
整數型 | int | 平臺相關有符號整數(32位系統=32位,64位系統=64位) | 0 | 42 , -10 | 32位系統:-231 ~ 231-1 64位系統: -2?3 ~ 2?3-1 |
int8 | 8位有符號整數 | 0 | 127 , -128 | -128 ~ 127 | |
int16 | 16位有符號整數 | 0 | 32767 , -32768 | -32768 ~ 32767 | |
int32 | 32位有符號整數(別名 rune ) | 0 | 2147483647 | -2147483648 ~ 2147483647 | |
int64 | 64位有符號整數 | 0 | 9223372036854775807 | -9223372036854775808 ~ 9223372036854775807 | |
uint | 平臺相關無符號整數(大小同 int ) | 0 | 100 | 32位系統:0 ~ 232-1 64位系統: 0 ~ 2??-1 | |
uint8 | 8位無符號整數(別名 byte ) | 0 | 255 , 0x0A | 0 ~ 255 | |
uint16 | 16位無符號整數 | 0 | 65535 | 0 ~ 65535 | |
uint32 | 32位無符號整數 | 0 | 4294967295 | 0 ~ 4294967295 | |
uint64 | 64位無符號整數 | 0 | 18446744073709551615 | 0 ~ 18446744073709551615 | |
uintptr | 無符號整數,用于存儲指針地址 | 0 | 系統內存地址 | 足夠存儲指針值的整數 | |
浮點型 | float32 | IEEE-754 32位單精度浮點數 | 0.0 | 3.14 , -0.001 | 約 ±1.18e?3? ~ ±3.4e3? ,精度約6位小數 |
float64 | IEEE-754 64位雙精度浮點數(默認浮點類型) | 0.0 | 3.1415926535 , -2.5e10 | 約 ±2.23e?3?? ~ ±1.8e3?? ,精度約15位小數 | |
復數型 | complex64 | 由兩個 float32 組成(實部+虛部) | (0+0i) | 1+2i , 3i | 實部/虛部范圍同 float32 |
complex128 | 由兩個 float64 組成(實部+虛部) | (0+0i) | 1.5+3.2i | 實部/虛部范圍同 float64 | |
字符串型 | string | 不可變的 UTF-8 字符序列 | "" | "Hello" , "世界" | 任意字節序列(支持 Unicode) |
字節別名 | byte | uint8 的別名,用于二進制數據 | 0 | 'a' , 0x41 | 同 uint8 (0 ~ 255 ) |
字符別名 | rune | int32 的別名,表示 Unicode 碼點 | 0 | '中' , '\u4e2d' | 同 int32 (支持所有 Unicode 字符) |
同其它編程語言一樣,go的數據類型基本覆蓋人類文化內容,數字、字符串、布爾、復數
二、常量
在go的國度中,根據上邊的劃定的范圍,可以進行創建常量和變量了。先來看下常量…
// 常量定義格式
const 常量名 [常量類型] = 值
學了其它編程語言的,看到這感覺不適應的,你的感覺沒錯,新的知識正在占領大腦!
從上邊的定義格式,可以看到:
- const: 定義常量使用的是“const”關鍵詞
- 常量名: 以后使用常量的話,盡量使用大寫進行命名,并使用下劃線分詞
- 常量類型:只可以是布爾型、數字型(整數型、浮點型和復數)和字符串型
- []中括號:可以進行省略,自動根據值進行類型推導
- 值:聲明過后,不能被修改
// 常量// 顯式聲明// const LENGTH int = 10// 隱式聲明 根據值 進行推導出數據類型const Length = 10// 不能進行修改Length = 20fmt.Println(Length)
另外,對于多個相同類型的聲明可以簡寫為:
const Length, WIDTH = 10, 20
三、變量
變量怎么比喻呢?
我這邊為了更好的理解,使用了上邊的老中醫藥材柜圖片,如果把各種各樣的數據看作是各種藥材的話!
每個抽屜代表go開辟的內存空間,進行儲存藥材(變量值),而外邊的名稱就是變量名(見名識意)!
變量來源于數學,是計算機語言中能儲存計算結果或能表示值抽象概念。變量可以通過變量名訪問。
聲明變量的一般形式是使用 var 關鍵字:
var 變量名 變量類型
可以了解到:
- var:聲明變量使用“var”關鍵詞
- 變量名:由字母、數字、下劃線組成,其中首個字符不能為數字
- 變量類型:基本數據類型和符合類型
- 值:上邊沒有賦值,后續進行賦值操作。如果聲明的時候進行賦值,可以省略變量類型,原因是go可以進行類型推導
// 變量// 變量聲明// 第一種 聲明后賦值var length intlength = 10// 第二種 聲明時賦值//var width int = 20// 也可以去掉 變量類型 使用類型推導var width = 20// 第三種 省略var 注意 := 左側的變量名 是沒有聲明過的,否則編輯報錯height := 30fmt.Println(length, width, height)
多個變量同時聲明
// 多個變量聲明 省略類型 進行類型推導var a, b, c = 10, 20.8, "hello"fmt.Println(a, b, c)
四、關鍵字
什么是關鍵字,就是go語言已經使用過的關鍵詞,我們不能再使用了,命名包名、文件名、聲明變量名、函數名等,為了避免沖突不能使用!
下面列舉了 Go 代碼中會使用到的 25 個關鍵字或保留字:
break | default | func | interface | select |
---|---|---|---|---|
case | defer | go | map | struct |
chan | else | goto | package | switch |
const | fallthrough | if | range | type |
continue | for | import | return | var |
除了以上介紹的這些關鍵字,Go 語言還有 36 個預定義標識符:
append | bool | byte | cap | close | complex | complex64 | complex128 | uint16 |
---|---|---|---|---|---|---|---|---|
copy | false | float32 | float64 | imag | int | int8 | int16 | uint32 |
int32 | int64 | iota | len | make | new | nil | panic | uint64 |
println | real | recover | string | true | uint | uint8 | uintptr |
程序一般由關鍵字、常量、變量、運算符、類型和函數組成。
附
本次作業
- 熟練知道go的數據類型,說一個值,要立即反應出該值的數據類型
- 會聲明常量/變量的
- 了解有哪些關鍵字,避免后續命名沖突