數(shù)據(jù)類型:
數(shù)據(jù)類型的出現(xiàn)是為了把數(shù)據(jù)分成所需內(nèi)存大小不同的數(shù)據(jù),編程的時候需要用大數(shù)據(jù)的時候才需要申請大內(nèi)存,可以充分利用內(nèi)存调塌,使程序執(zhí)行效率提升;
go語言中的基本類型:
布爾型:bool惠猿,bool類型表示一個布爾值羔砾,值為true或false
數(shù)值類型:
- 有符號整型:
int8:8位有符號整型(-128~127)
int16:16位有符號整型(-32768~32767)
int32:32位有符號整型(-2147483648~2147483647)
int64:64位有符號整型(-9223372036854775808~9223372036854775807)
int:根據(jù)系統(tǒng)不同,表示32位或64位有符號整型(32位系統(tǒng)下偶妖,-2147483648~2147483647姜凄;64位系統(tǒng)下,-9223372036854775808~9223372036854775807) - 無符號整型:
uint8:8位無符號整型(0~255)
uint16:16位無符號整型(0~65535)
uint32:32位無符號整型(0~4294967295)
uint64:64位無符號整型(0~18446744073709551615)
uint:根據(jù)系統(tǒng)不同趾访,表示32位或64位無符號整型(32位系統(tǒng)下态秧,0~4294967295;64位系統(tǒng)下扼鞋,0~18446744073709551615) - 浮點型:
float64的精度要比float32的要準(zhǔn)確
float32:32位浮點數(shù)
float64:64位浮點數(shù) - 復(fù)數(shù)類型:
complex64:實部和虛部都是 float32 類型的的復(fù)數(shù)
complex128:實部和虛部都是 float64 類型的的復(fù)數(shù) - 其他數(shù)字類型:
type:uint8 的別名(type byte = uint8)
rune:int32 的別名(type rune = int32)
字符串類型:
string:一串固定長度的字符連接起來的字符序列屿聋,go 中的字符串是不可變的空扎。一旦一個字符串被創(chuàng)建,那么它將無法被修改
go語言中的派生類型:
指針類型润讥,數(shù)組類型,結(jié)構(gòu)化類型盘寡,channel類型楚殿,函數(shù)類型,切片類型竿痰,接口類型脆粥,Map類型
類型轉(zhuǎn)換:
類型轉(zhuǎn)換用于把一種類型的變量轉(zhuǎn)換成另一種類型的變量,go語言中只有顯式轉(zhuǎn)換影涉,類型轉(zhuǎn)換只能發(fā)生在兩種兼容類型之間变隔,轉(zhuǎn)換方式如下:
類型名稱(需要被轉(zhuǎn)換的變量或表達(dá)式)
例如:
package main
import "fmt"
func main() {
var a = 1//int類型變量a
var b = 0.1//float64類型變量b(因為系統(tǒng)是64位的)
var sum = a + int(b)//int(b)把float64類型轉(zhuǎn)換成int類型
fmt.Println(sum)//sum的值為1
}
go中再給變量賦值時也需要注意類型轉(zhuǎn)換,如下的代碼沒有進行數(shù)據(jù)轉(zhuǎn)換就會報錯cannot use a (type int) as type float64 in assignment
package main
import "fmt"
func main() {
var a = 1//int類型變量a
var b float64 = a//float64類型變量b(因為系統(tǒng)是64位的)蟹倾,沒有進行數(shù)據(jù)轉(zhuǎn)換匣缘,會報錯
fmt.Println(b)
}
正確的給變量b賦值的語句是
var b float64 = float64(a)
類型零值與別名:
類型零值是指某個變量聲明后該變量所屬類型的默認(rèn)值,一般數(shù)值類型默認(rèn)值為0鲜棠,布爾類型默認(rèn)值為false肌厨,字符串類型默認(rèn)值為空字符串;
類型別名是對某一類型進行別名設(shè)置豁陆,設(shè)置別名后的類型和原類型不同柑爸,設(shè)置類型別名方式如下:
type 類型別名 類型名
例如:
package main
type integer int
func main() {
var a int = 1//int類型變量a
var b integer = a//未進行類型轉(zhuǎn)換,會報錯盒音,類型integer和int不同
var c integer = integer(a)//進行類型轉(zhuǎn)換后不會報錯
}