Go語(yǔ)言作為類C語(yǔ)言,支持常規(guī)的基礎(chǔ)數(shù)據(jù)類型的的同時(shí),支持常用的高級(jí)數(shù)據(jù)類型。他們是:
為永定等地區(qū)用戶提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及永定網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為網(wǎng)站制作、成都做網(wǎng)站、永定網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!本篇相當(dāng)于一個(gè)類型索引。包含了Go語(yǔ)言中的全部類型。具體每種類型的操作,請(qǐng)參見(jiàn)具體章節(jié)!
支持的整型分類很細(xì),主要差異是占用的存儲(chǔ)空間不同。基于有無(wú)符號(hào)列出為:
有符號(hào)的:int,int8,int16,int32,int64
無(wú)符號(hào)的:uint,uint8,uint16,uint32,uint64
其中int, unit是基于處理器架構(gòu)的。意味著會(huì)根據(jù)處理器來(lái)確定是32bit還是64bit。
使用時(shí),常常使用int。或者使用int32保證兼容。
在類型推導(dǎo)時(shí),推導(dǎo)的整型為int,其他長(zhǎng)度整型需要在定義變量時(shí)強(qiáng)制聲明。
示例:
42
1024
-36整型的默認(rèn)值為0。
支持IEEE-754標(biāo)準(zhǔn)浮點(diǎn)數(shù)。支持32bit和64bit的浮點(diǎn)數(shù)float32和float64。
在類型推導(dǎo)時(shí),推導(dǎo)的浮點(diǎn)型為float64。float32需要在定義變量時(shí)強(qiáng)制聲明。
示例:
1.0
3.14
0.618
4.2E10 // 4.2*10^10浮點(diǎn)數(shù)的默認(rèn)值為0。
原生支持復(fù)數(shù)。
支持32bit+32bit復(fù)數(shù)complex64,和64bit+64bit的復(fù)數(shù)complex128。
使用單引號(hào)定義字符型數(shù)據(jù),字符指的是單個(gè)字符。有兩種byte和rune:
byte:?jiǎn)巫止?jié)字符,是uint8的別名。用于存儲(chǔ)ASCII字符集字符
rune:多字節(jié)字符,是int32的別名。用于存儲(chǔ)unicode字符集字符。
在類型推導(dǎo)時(shí),推導(dǎo)的字符型為rune。byte需要在定義變量時(shí)強(qiáng)制聲明。
示例:
'c'
'康'字符的默認(rèn)值是0。字符的本質(zhì)就是整數(shù)型,根據(jù)字符集得到對(duì)應(yīng)的字符。
原生支持字符串。使用雙引號(hào)("")或反引號(hào)(``)定義,內(nèi)部是utf-8編碼。
雙引號(hào):"", 用于單行字符串。
反引號(hào):``,用于定義多行字符串,內(nèi)部會(huì)原樣解析。
示例:
// 單行
"心有猛虎,細(xì)嗅薔薇"
// 多行
`
大風(fēng)歌
大風(fēng)起兮云飛揚(yáng)。
威加海內(nèi)兮歸故鄉(xiāng)。
安得猛士兮守四方!
`字符串支持轉(zhuǎn)義字符,列表如下:
布爾型的值只可以是常量 true 或者 false。
示例:
var (
isFinished = false
)指針類型用于存儲(chǔ)變量地址。使用運(yùn)算符&,*完成操作。
使用運(yùn)算符p:=&v可以獲取v變量的地址。p中的數(shù)據(jù)格式類似0xc0000b9528,是一個(gè)內(nèi)存地址的16進(jìn)制表示。
使用運(yùn)算符*p可以獲取指針p指向變量v的值。
如圖所示:

在Go語(yǔ)言中,指針主要用于:
p := 42
pv := &p
*pv ++
// p == 43數(shù)組是一段固定長(zhǎng)度的連續(xù)內(nèi)存區(qū)域。是具有相同類型數(shù)據(jù)元素序列。元素類型支持任意內(nèi)置類型。
數(shù)組從聲明時(shí)就確定長(zhǎng)度,可以修改數(shù)組元素,但是數(shù)組不可修改長(zhǎng)度。
使用[長(zhǎng)度]類型進(jìn)行數(shù)組的聲明。
示例:
// 默認(rèn)值初始化
var nums [4]int // [0 0 0 0]
// 指定初始值
var position = [4]string{"east", "south", "west", "north"}
// 自動(dòng)確定長(zhǎng)度
var position = [...]string{"east", "south", "west", "north"}會(huì)使用類型默認(rèn)值初始化元素。
數(shù)組不是引用類型,變量間為值傳遞。
可以使用range配合循環(huán)結(jié)構(gòu)完成遍歷,示例如下:
for k, v := range position {
fmt.Println(k, v)
}
// 結(jié)果
0 east
1 south
2 west
3 northnil,可以理解為未初始化引用。是以下類型的默認(rèn)初始值:
切片是一個(gè)擁有相同類型元素的可變長(zhǎng)度的序列。與數(shù)組的固定長(zhǎng)度不同,切片也被稱之為動(dòng)態(tài)數(shù)組。
Go提供了4中方案定義切片:
make ( []Type ,length, capacity )
make ( []Type, length)
[]Type{}
[]Type{value1 , value2 , ... , valueN }或者從數(shù)組或切片生成新切片:
slice [開(kāi)始索引:結(jié)束索引]
var arr = [4]string{"a", "b", "c", "d"}
var sli = arr[1:3] // ["b", "c"]以從數(shù)組創(chuàng)建切片為例,理解切片,定義語(yǔ)法如上所示,下圖為slice:

切片的實(shí)現(xiàn)是由一個(gè)底層數(shù)組以及其上面的動(dòng)態(tài)位置,尺寸來(lái)實(shí)現(xiàn)。由內(nèi)部由指向起始元素的指針、元素?cái)?shù)量length和容量capacity組成。其中:
切片為引用類型。
切片的默認(rèn)初始值為nil。
切片支持: len()尺寸, cap()容量, append()追加元素等操作。詳見(jiàn)切片的使用。
Go語(yǔ)言中的鍵值對(duì)(key->value)集合,稱之為映射map。
創(chuàng)建語(yǔ)法:
var m = map[key_type]value_type{key1: value1, key2: value2}
var m = make(map[key_type]value_type)
示例,字符串型下標(biāo),字符串型值:
var m = make(map[string]string) //make()會(huì)分配內(nèi)存空間,初始化。
m["east"] = "東"
m["west"] = "西"
fmt.Println(m["east"]) // 東
fmt.Println(m["west"]) // 西
// map演示
var m = map[string]string{"east": "東", "west": "西"}支持遍歷操作,使用range:
for k, v := range mapVar {
fmt.Println(k, v)
}映射是引用類型。
詳見(jiàn)切片操作。
Go語(yǔ)言使用結(jié)構(gòu)體來(lái)描述現(xiàn)實(shí)業(yè)務(wù)邏輯中實(shí)體。是自定義類型。結(jié)構(gòu)體是由一系列數(shù)據(jù)構(gòu)成的數(shù)據(jù)集合,一系列數(shù)據(jù)類型可以不同。
定義結(jié)構(gòu)體,使用struct關(guān)鍵字:
type 結(jié)構(gòu)體名 struct {
成員1 類型
成員2 類型
…
}
示例:
// 定義Product結(jié)構(gòu)
type Product struct {
// 兩個(gè)成員
name string
price float64
}
// 構(gòu)造函數(shù)
func newProduct(name string, price float64) *Product {
return &Product{name, price}
}
// 成員方法,接收器方式
func (p *Product) getName() string {
return "《" + p.name + "》"
}
// 方法2
func (p *Product) setPrice(price float64) *Product {
p.price = price
return p
}
func main() {
// 構(gòu)造Product型數(shù)據(jù)p1
var p1 = newProduct("BlockChain", 42.5)
// 訪問(wèn)成員
fmt.Println(p1.name)
// 通過(guò)接收器訪問(wèn)方法
fmt.Println(p1.getName())
var p2 = newProduct("GoLang", 30.5)
p2.setPrice(44.5)
fmt.Println(p2.price)
}詳見(jiàn)結(jié)構(gòu)體操作。
接口是一種協(xié)議,用來(lái)規(guī)范方法的調(diào)用和定義的協(xié)議,目的是保證設(shè)計(jì)的一致性,便于模塊化開(kāi)發(fā)以及通訊。Go語(yǔ)言中,也視為一種類型。
定義語(yǔ)法:
type 接口名 interface {
方法1( 參數(shù)列表 ) 返回值類型列表
方法2( 參數(shù)列表 ) 返回值類型列表
…
}
可以理解成沒(méi)有方法體的方法。
示例:
// 定義Product結(jié)構(gòu)
type Product struct {
// 兩個(gè)成員
name string
price float64
// say func()
}
// 構(gòu)造函數(shù)
func newProduct(name string, price float64) *Product {
return &Product{name, price}
}
// 成員方法,接收器方式
func (p *Product) getName() string {
return "《" + p.name + "》"
}
// 方法2
func (p *Product) setPrice(price float64) *Product {
p.price = price
return p
}
// 定義接口
type ProductInterface interface {
getName() string
setPrice(price float64) *Product
}
func main() {
// 構(gòu)造Product型數(shù)據(jù)p1
var p1 = newProduct("BlockChain", 42.5)
// pi為接口,為其賦值p1,就意味著使用接口規(guī)范p1,若p1不滿足接口定義則出錯(cuò)
var pi ProductInterface = p1
// 利用接口調(diào)用方法
fmt.Println(pi.getName())
}詳見(jiàn)接口操作
Go語(yǔ)言中,函數(shù)可以作為數(shù)據(jù)存儲(chǔ)變量中,此時(shí)變量為函數(shù)類型func()。可以通過(guò)該變量訪問(wèn)到這個(gè)函數(shù)。可以用在結(jié)構(gòu)體成員定義上。
語(yǔ)法示例:
func sayHello(name string) {
fmt.Println("Hello, ", name)
}
func main() {
// 函數(shù)本身就是函數(shù)類型
fmt.Printf("%T(%v)\n", sayHello, sayHello) // func(string)(0x48fe20)
// 賦值給變量
var f = sayHello
fmt.Printf("%T(%v)\n", f, f) // func(string)(0x48fe20)
// 匿名函數(shù)也是函數(shù)類型
var af = func() {
}
fmt.Printf("%T(%v)\n", af, af) // func()(0x490080)
}參見(jiàn)函數(shù)使用。
完!
原文出自:小韓說(shuō)課
微信關(guān)注:小韓說(shuō)課
創(chuàng)新互聯(lián)www.cdcxhl.cn,專業(yè)提供香港、美國(guó)云服務(wù)器,動(dòng)態(tài)BGP最優(yōu)骨干路由自動(dòng)選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡(luò)助力業(yè)務(wù)部署。公司持有工信部辦法的idc、isp許可證, 機(jī)房獨(dú)有T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確進(jìn)行流量調(diào)度,確保服務(wù)器高可用性。佳節(jié)活動(dòng)現(xiàn)已開(kāi)啟,新人活動(dòng)云服務(wù)器買多久送多久。
當(dāng)前題目:Go語(yǔ)言的數(shù)據(jù)類型-創(chuàng)新互聯(lián)
鏈接分享:http://chinadenli.net/article6/cogpog.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站、云服務(wù)器、靜態(tài)網(wǎng)站、App設(shè)計(jì)、面包屑導(dǎo)航、品牌網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容