本教程希望以詼諧幽默,誰都能理解的方式去學(xué)習(xí)Go語言层坠。大膽的嘗試何暮,希望編程是一個(gè)有血有肉的事情,而不是枯燥的代碼~
1.0 搭建環(huán)境
由于我們 Go官方網(wǎng)站 在我大天朝被和諧了撤师,所以我們只能去 Go語言中文網(wǎng) 來下載了。Go的安裝很簡單拧揽,不像Java還要配置一大堆的東西剃盾,選擇自己系統(tǒng)的對應(yīng)版本腺占,下載安裝,像安裝QQ一樣無腦痒谴。我們就不再介紹了如果真的有特別小白的朋友衰伯,也可以去百度看看圖文安裝教程
1.1. 第一個(gè)Go程序
每個(gè)編程語言的學(xué)習(xí),都是從一個(gè)"Hello, World."程序開始的积蔚,這個(gè)例子首次出現(xiàn)于1978年出版的C語言圣經(jīng)《The C Programming Language》意鲸。關(guān)于"Hello, World."還有一個(gè)很美好的故事,那就是所有的程序員期待著計(jì)算機(jī)有一天能擁有真正的智能尽爆,然后對創(chuàng)造他的人們"發(fā)自內(nèi)心"的說一句怎顾,Hello, World.
首先我們新建一個(gè)hello.go
文件,輸入下面的內(nèi)容并保存:
hello.go
package main
import "fmt"
func main(){
fmt.Println("Hello, World.")
}
打開命令行漱贱,找到hello.go
所在的目錄槐雾,輸入命令:
提示:本系列教程,以 $
符號來表示命令行提示符幅狮,看到以$
符號開頭的命令募强,說明是在命令行環(huán)境下執(zhí)行的,并非命令本身的符號崇摄。
$ go run hello.go
毫無疑問擎值,我們將會(huì)看到命令行輸出:
Hello, World.
恭喜你!已經(jīng)完成了第一個(gè)Go語言程序配猫,無論你是否理解,我都要祝賀你杏死,開啟了Go語言的大門泵肄,接下來讓我們來做一些更酷的事情吧。
大家加油~
1.2. 編譯可執(zhí)行文件
Go和Python最大的區(qū)別在于淑翼,Go是一門編譯型語言而Python是一門解釋型語言腐巢。
編譯型編程語言
簡單來說,編譯型編程語言并非簡單的寫好代碼然后就運(yùn)行玄括。他還需要經(jīng)過一個(gè)編譯的步驟冯丙,把寫好的代碼通過語言提供的編譯器,編譯成操作系統(tǒng)方便閱讀而人類幾乎無法閱讀的代碼遭京。這種語言的好處就是胃惜,運(yùn)行速度快。如:Go, Java, C/C++哪雕,都是編譯型編程語言船殉。
解釋型編程語言
解釋型編程語言就是,我們寫好的代碼斯嚎,無需經(jīng)過任何處理利虫,就可以直接運(yùn)行在操作系統(tǒng)之上挨厚。但是計(jì)算機(jī)并不能理解我們所寫的代碼,這個(gè)時(shí)候就需要一個(gè)叫做解釋器的東西糠惫。解釋器就相當(dāng)于一個(gè)翻譯官一樣疫剃,把我們寫的代碼一行一行的翻譯給計(jì)算機(jī),計(jì)算機(jī)從解釋器那里得到翻譯后的代碼硼讽,才能正常執(zhí)行我們的程序巢价。由于代碼是一句一句解釋執(zhí)行的,這中間有很多等待的過程理郑,而且還取決于解釋器的執(zhí)行速度蹄溉,所以解釋型編程語言的特點(diǎn)就是運(yùn)行速度慢。如:Python就是解釋型編程語言您炉。
還記得我們上一章所寫的hello.go
嗎柒爵,來回顧一下:
hello.go
package main
import "fmt"
func main(){
fmt.Println("Hello, World.")
}
既然我們知道Go是一門編譯型語言,我們能不能把hello.go進(jìn)行編譯赚爵,然后再來運(yùn)行呢棉胀?
答案當(dāng)然是可以的:
$ go build hello.go
如果你使用的是Windows系統(tǒng),你會(huì)發(fā)現(xiàn)在hello.go
文件所在的目錄下冀膝,出現(xiàn)了一個(gè)hello.exe
的可執(zhí)行文件唁奢,直接運(yùn)行它或者輸入下面的命令:
$ hello.exe
如果你使用的是Mac或者Linux,則會(huì)發(fā)現(xiàn)目錄下多了一個(gè)hello
的文件窝剖,輸入下面的命令來運(yùn)行:
$ ./hello
最終你都能看到麻掸,命令行輸出了:
Hello, World.
Go提供了很多命令給我們,其中最常用的兩個(gè)命令就是run
和build
:
go run xx.go
運(yùn)行指定的go文件
go build xx.go
編譯指定的go文件
1.3. 打開封印之門的鑰匙
有些同學(xué)看到我們這一節(jié)的名稱赐纱,可能會(huì)想脊奋,車神這是寫教程寫的大腦抽筋了吧,并不是那樣的疙描。我希望編程可以用一種更加簡單诚隙,更加方便新手接受和更加有趣的形式展現(xiàn)出來,而不是死板的函數(shù)起胰,變量久又。
我們想要進(jìn)入一棟房子,需要找到這個(gè)房子的大門才能進(jìn)去效五,那么計(jì)算機(jī)想要進(jìn)入我們做的程序地消,是不是也需要一個(gè)大門呢?答案是肯定的畏妖,那么我們Go語言的大門在哪里呢犯建?回顧第一章寫的hello.go
:
hello.go
package main
import "fmt"
func main(){
fmt.Println("Hello, World.")
}
很顯然,main()
就是我們這個(gè)程序的大門瓜客。package
說明我們這個(gè)文件屬于哪個(gè)包适瓦,可以簡單的把包理解為一個(gè)文件夾竿开。Go語言規(guī)定,程序的入口文件玻熙,必須輸入main
包否彩,而且這個(gè)文件必須包含一個(gè)main
方法。
那么究竟什么是方法呢嗦随?
方法
方法從字面我們可以理解為行為列荔,比如我們?nèi)顺燥垼X枚尼,走路贴浙,談戀愛,啪啪啪署恍。這都是方法崎溃,是人的行為。那么我們的程序也會(huì)有一些行為盯质,比如運(yùn)行的行為袁串,輸出一句話的行為,在屏幕上畫一個(gè)圓圈的行為呼巷,這些行為我們形象的稱它們?yōu)榉椒ɑ蛘呓泻瘮?shù)囱修。無論是方法還是函數(shù),指的都是我們程序的某一項(xiàng)行為王悍,那么這個(gè)行為或許是現(xiàn)實(shí)世界存在的破镰,或許是現(xiàn)實(shí)世界不存在的。當(dāng)你開始編程的時(shí)候压储,你就是造物主鲜漩,你可以給你的程序創(chuàng)建任何行為。由于Go是Google創(chuàng)造的渠脉,所以我們想在Go的世界當(dāng)一回造物主宇整,就要依靠Google給我們提供的各種超能力瓶佳。接下來我們就來看看芋膘,第一個(gè)超能力。
func 關(guān)鍵字
Go語言為我們提供了一個(gè)創(chuàng)建方法的關(guān)鍵字霸饲,這個(gè)關(guān)鍵字可以理解為我們的超能力为朋,有了它我們就能給程序創(chuàng)建各種各樣的方法,各種我們喜歡的方法厚脉。它的一個(gè)簡單的用法就是:
func 你喜歡的名字(){
具體的行為
}
從今天開始习寸,我們就來體驗(yàn)當(dāng)創(chuàng)世神的快感吧。
新建一個(gè)Go文件傻工,我把他叫做 yadang.go
霞溪。我們像上帝一樣創(chuàng)造了一個(gè)叫做亞當(dāng)?shù)娜耍?/p>
package main
import "fmt"
func main(){
fmt.Println("你好孵滞,我是亞當(dāng)。")
}
讓我們來運(yùn)行一下:
go run yadang.go
我們的亞當(dāng)可以說話了鸯匹,大家注意到我們的亞當(dāng)坊饶,只有一個(gè)main
方法,這個(gè)方法是Go語言規(guī)定的殴蓬,任何一個(gè)程序想要啟動(dòng)匿级,必須包含這個(gè)方法。大家可以思考一下染厅,我們的Go在給我們的亞當(dāng)賦予生命的時(shí)候痘绎,肯定需要找到main
才能啟動(dòng),main
就相當(dāng)于打開封印的鑰匙一樣肖粮,這個(gè)寫法是固定的孤页,也就是說,我們無論創(chuàng)造什么樣的生命或者是絢爛多姿的世界尿赚,都要有一個(gè)大門散庶,這個(gè)大門就是main
方法,main
方法只能存在于main
這個(gè)package
中凌净,package
就像一個(gè)世界悲龟,main
就是這個(gè)世界的中心大陸,而我們的一切生命都起源于這里冰寻。
1.4. 奔跑吧须教,亞當(dāng)
上節(jié)課我們一起創(chuàng)造了亞當(dāng),但是我們的亞當(dāng)還很低級斩芭,他只會(huì)說一句話轻腺,連走路都不會(huì),這節(jié)課我們就讓亞當(dāng)划乖,奔跑起來贬养。
來看一下我們的亞當(dāng),現(xiàn)在是什么樣子:
yadang.go
package main
import "fmt"
func main(){
fmt.Println("你好琴庵,我是亞當(dāng)误算。")
}
大家可能注意到 import "fmt"
,這其實(shí)是Go語言提供的包含一系列方法的一個(gè)工具迷殿。大家可以把它理解為插件儿礼,裝上這個(gè)插件,我們的亞當(dāng)才能使用這個(gè)插件里提供的各種功能庆寺,其中一個(gè)很重要的功能就是:
fmt.Println()
這個(gè)方法可以在屏幕上輸出一句話蚊夫,我們的亞當(dāng)就是依靠這個(gè)方法來跟大家問好的。
就像我們?nèi)祟愐粯优吵ⅲ?dāng)你想說話的時(shí)候知纷,總是你的大腦想起一句話壤圃,然后把這句話送給我們的嘴巴,由我們的嘴巴把這句話說出來琅轧。我們并不知道大腦的神經(jīng)元之間是如何傳遞的埃唯,我們并不是人體專家也不是神經(jīng)學(xué)的專家,我們不懂人到底是怎么說話的鹰晨,但是我們只需要知道墨叛,想說話就通過嘴巴就能說,我們的身體會(huì)自動(dòng)處理一切需要的東西模蜡。
同樣的漠趁,在我們編程的世界里也是一樣的,我們不懂怎么樣才能讓操作系統(tǒng)在屏幕上顯示一句話忍疾,我們不了解計(jì)算機(jī)的硬件之間是怎么通信的闯传,但是Go為我們做好了一切,它把一切復(fù)雜的東西做成一個(gè)個(gè)方便使用的方法卤妒,使得我們不需要成為計(jì)算機(jī)專家甥绿,也能在電腦屏幕上面輸出一句話。我們不用管背后有多么復(fù)雜的邏輯则披,只需要使用這簡簡單單的一個(gè)方法共缕,就能實(shí)現(xiàn)。
亞當(dāng)會(huì)說話了
事實(shí)上士复,我們的亞當(dāng)目前只有一個(gè)主方法图谷,他還沒有任何身為人的方法,那今天我們就給亞當(dāng)創(chuàng)造一些方法阱洪,讓他看上去更像一個(gè)人:
yadang.go
package main
import "fmt"
func main(){
speak()
run()
}
func speak(){
fmt.Println("哇哈哈便贵,我會(huì)說話了~")
}
func run(){
fmt.Println("我跑,我跑冗荸,我跑跑跑~")
}
可以看到承璃,我們的亞當(dāng)多了兩個(gè)方法,一個(gè)叫做speak
蚌本,一個(gè)叫做run
盔粹。當(dāng)然你可以把他們改成任何你喜歡的名字,比如叫 shuohua
, aaa
, hahaha
都可以魂毁。但是我們?nèi)祟愓f話的方法就叫說話玻佩,非常的便于理解出嘹,如果我們創(chuàng)造了一個(gè)亞當(dāng)席楚,我們把他說話的方法叫一個(gè)毫無意義的名字,那其他人看到亞當(dāng)?shù)臅r(shí)候税稼,就不知道這是一個(gè)什么方法了烦秩,比如下面的樣子:
yadang.go
package main
import "fmt"
func main(){
aaa()
bbb()
}
func aaa(){
fmt.Println("哇哈哈垮斯,我會(huì)說話了~")
}
func bbb(){
fmt.Println("我跑,我跑只祠,我跑跑跑~")
}
我們來運(yùn)行一下:
go run yadang.go
同樣我們能夠看到屏幕上輸出了:
哇哈哈兜蠕,我會(huì)說話了~
我跑,我跑抛寝,我跑跑跑~
但是我們的亞當(dāng)看上去是不是變得難以理解了熊杨,aaa
和 bbb
是什么方法?讓人捉摸不透盗舰,所以說晶府,大家在給我們的程序增加一些方法的時(shí)候,最好起一些有意義的名字钻趋,能夠表達(dá)這個(gè)方法含義的名字川陆,無論是用英語還是漢語拼音都是可以的,只要其他人和自己在閱讀代碼的時(shí)候能夠輕易的認(rèn)出這個(gè)方法是做什么的就可以了蛮位。
至此较沪,大家已經(jīng)掌握了如何讓我們的亞當(dāng)奔跑,但是我們的亞當(dāng)還缺少一項(xiàng)重要的東西失仁,那就是長相尸曼,下一節(jié)我們將一起來把我們的亞當(dāng)變成一個(gè)帥氣的猛男子吧~
1.5. 帥氣的猛男子
今天我們將繼續(xù)在Go語言大陸造人,上節(jié)課我們讓亞當(dāng)擁有了說話和奔跑的方法萄焦,但是我們的亞當(dāng)還沒有具體的身高骡苞,體重。那么這些東西也能通過方法來實(shí)現(xiàn)嗎楷扬?答案是否定的解幽,一個(gè)人的身高和體重,并不屬于一個(gè)人的行為烘苹,而是屬于這個(gè)人的屬性躲株。那么我們的程序也擁有一些屬性,接下來我們就一起看一下如何給程序定義屬性镣衡。
來看一下我們的亞當(dāng):
yadang.go
package main
import "fmt"
func main(){
speak()
run()
}
func speak(){
fmt.Println("哇哈哈霜定,我會(huì)說話了~")
}
func run(){
fmt.Println("我跑,我跑廊鸥,我跑跑跑~")
}
我們都知道望浩,自然界中的屬性有很多種,比如一個(gè)人的身高惰说,可能是180cm磨德,也可能是179.5cm,一個(gè)人的體重,可能是60kg典挑,也可能是75.8kg酥宴。一個(gè)人的胳膊數(shù)量,可能是0您觉,也可能是1或者2拙寡。一個(gè)人的外貌,可能是美麗琳水,可能是一般肆糕,可能是丑陋。一個(gè)人的是不是有錢在孝,那就只有兩種可能擎宝,是或者否。那么這些數(shù)據(jù)都擁有不同的類型浑玛,可能是整數(shù)類型绍申,也可能是小數(shù)類型,還可能是文字顾彰,負(fù)數(shù)极阅,和是否類型。
那么在我們的Go語言世界里涨享,也存在許許多多的數(shù)據(jù)類型筋搏。
布爾類型
bool
字符類型
string
整數(shù)類型
int int8 int16 int32 int64
無符號整數(shù)類型
uint uint8 uint16 uint32 uint64 uintptr
uint8 的別名
byte
int32 的別名(代表一個(gè)Unicode碼)
rune
浮點(diǎn)型
float32 float64
實(shí)數(shù)和虛數(shù)
complex64 complex128
我們可以看到,在Go語言的世界里存在這么多的數(shù)據(jù)類型厕隧,但是常用的也就是我們上面說的奔脐,小數(shù)類型(浮點(diǎn)型),整數(shù)類型吁讨,是否類型(布爾型)髓迎,文字類型(字符類型)。
那么比較特殊的是跟數(shù)字相關(guān)的建丧,因?yàn)槲覀兌贾琅帕洌瑪?shù)字是有范圍的,比如大于1000翎朱,大于10000橄维。在我們現(xiàn)實(shí)生活中,如果一個(gè)人的體重是100kg拴曲,那地球就要使用100kg對應(yīng)的那么大的空間來讓這個(gè)人生活争舞。如果一個(gè)人的體重是10000kg,那么地球就需要耗費(fèi)10000kg對應(yīng)的空間來給這個(gè)人澈灼。那么竞川,如果一個(gè)體重只有60kg的人,他卻被地球分配了一個(gè)能容納10000kg體重的空間,是不是就浪費(fèi)了我們地球有限的土地資源呢流译?
所以說,在Go語言的世界里者疤,為了節(jié)約我們寶貴的土地資源(內(nèi)存)福澡,我們需要在給程序定義屬性的時(shí)候,選擇合適的大小來分配驹马,這樣才不會(huì)浪費(fèi)我們計(jì)算機(jī)的內(nèi)存革砸。
有符號整數(shù)類型
int8 有符號的8位整數(shù),范圍 -128 到127
int16 有符號的16位整數(shù)糯累,范圍 -32768 到 32767
int32 有符號的32位整數(shù)算利,范圍 -2147483648 到 2147483647
int64 有符號的64位整數(shù),范圍 -9223372036854775808 到 9223372036854775807
int 有符號的32位或64位整數(shù)泳姐,范圍根據(jù)Go程序運(yùn)行的操作系統(tǒng)來決定效拭,如果是32位的操作系統(tǒng)就相當(dāng)于int32
,如果是64位的操作系統(tǒng)就相當(dāng)于int64
胖秒。那么今天我們大部分的計(jì)算機(jī)都是64位的缎患,所以如果直接使用int
,而你的電腦剛好是64位的操作系統(tǒng)阎肝,那他就等于int64
挤渔。
這里所說的位,并不是有幾位數(shù)字风题,而是我們計(jì)算機(jī)的一個(gè)容量單位判导,8位等于1個(gè)字節(jié),1024個(gè)字節(jié)等于1KB沛硅,1024KB就等于1兆眼刃。那么16位就是兩個(gè)字節(jié)。
那么假如我們要表示一個(gè)人的年齡摇肌,很顯然使用 int16
就足夠了鸟整,如果使用 int32
就會(huì)造成大量的空間浪費(fèi),因?yàn)?int32
最大可以表示21億多的數(shù)字朦蕴,很顯然人類的壽命是不可能有這么大的篮条。反之,如果我們制作一個(gè)網(wǎng)絡(luò)游戲吩抓,需要來表示人物的攻擊力涉茧,我們都知道有些游戲?yàn)榱俗屚婕殷w會(huì)到快感,把攻擊力設(shè)置的非常高疹娶。什么開局只有一條狗伴栓,一刀99億。那么很顯然,如果是這種變態(tài)游戲的攻擊力钳垮,我們用 int32
來表示就不合適了惑淳,因?yàn)?int32
無法容納我們的一刀99億,這時(shí)候我們就只能使用最大的 int64
來存儲饺窿。至于他最高能表示多大的數(shù)值歧焦,大家有興趣的可以數(shù)一下,反正如果換成錢的話肚医,車神大概可以把整個(gè)地球買下來绢馍。
我們可以看到int
類型無論多少位,都是包含負(fù)號的肠套,這種數(shù)據(jù)類型我們成為有符號整數(shù)類型舰涌。那么既然存在有符號整數(shù)類型,是不是還有一個(gè)無符號整數(shù)類型呢你稚?恭喜你答對了瓷耙,uint
就是無符號整數(shù)類型。
無符號整數(shù)類型
uint8 無符號8位整數(shù)刁赖,范圍 0 到 255
uint16 無符號16位整數(shù)哺徊,范圍 0 到 65535
uint32 無符號32位整數(shù),范圍 0 到 4294967295
uint64 無符號64位整數(shù)乾闰,范圍 0 到 18446744073709551615
uint 無符號的32位或64位整數(shù)落追,和 int
一樣,根據(jù)操作系統(tǒng)的位數(shù)來決定涯肩。
uintptr 無符號整數(shù)轿钠,用于存放一個(gè)指針。關(guān)于指針病苗,我們將在后面為大家詳細(xì)講解疗垛,這里僅作為了解即可,不需要理解硫朦。
聰明的同學(xué)可能已經(jīng)發(fā)現(xiàn)了贷腕,所謂的無符號整數(shù)類型,就是把原來存儲負(fù)數(shù)的那部分空間咬展,給取消了泽裳,此消彼長,這樣正數(shù)部分就能加上原來負(fù)數(shù)的那部分空間用來存儲更大的數(shù)字了破婆。
所以 uint8
的存儲范圍實(shí)際上就是 int8
的 -128 去掉負(fù)號然后加127涮总,結(jié)果就是255。有興趣的可以驗(yàn)證一下其他的幾個(gè)是不是都等于祷舀,有符號的整型去掉負(fù)號相加就是無符號整型的取值范圍瀑梗。
具體的取值范圍大家不需要記憶烹笔,只需要記住,100以內(nèi)用 int8
抛丽,3萬以內(nèi)用 int16
谤职,21億以內(nèi)用 int32
,大于這個(gè)范圍用 int64
亿鲜。如果不存在負(fù)數(shù)的情況允蜈,可以使用無符號整型。無符號整型只需要在有符號整型的范圍基礎(chǔ)上乘以2狡门,就是我們選擇的合適范圍了陷寝。如200以內(nèi)用 uint8
锅很,42億以內(nèi)用 uint32
其馏。
身高一米五?
讓我們來看看如何給亞當(dāng)一個(gè)身高的屬性
yadang.go
package main
import "fmt"
var height uint8 = 150
func main(){
hello()
}
func hello(){
fmt.Printf("我是亞當(dāng)爆安,身高 %v 米", height)
}
func speak(){
fmt.Println("哇哈哈叛复,我會(huì)說話了~")
}
func run(){
fmt.Println("我跑,我跑扔仓,我跑跑跑~")
}
運(yùn)行我們的亞當(dāng)褐奥,就會(huì)發(fā)現(xiàn)輸出了:
我是亞當(dāng),身高 150 米
首先我們來看如何使用我們的變量的翘簇,var 變量名 類型 = 值
撬码。等號和后面的值是可選的,如果不指定值版保,Go會(huì)給這個(gè)變量一個(gè)默認(rèn)的值呜笑。
另一個(gè)新的方法就是在我們 fmt
這個(gè)包里面的 Printf
。它可以讓我們在字符串里面寫一些占位符彻犁,什么叫占位符呢叫胁?大家可以認(rèn)為占位符就是替你排隊(duì)的,比如你買東西有事汞幢,你想讓一個(gè)人替你站在那里排隊(duì)驼鹅,等你回來了以后讓那個(gè)人出去,你站在他的位置上森篷,就叫占位符输钩。 %v
就是其中一個(gè)占位符。Printf
會(huì)拿著后面的 height
的值去替換 %v
仲智,如果有多個(gè)占位符张足,會(huì)按照從前往后的順序,以此替換坎藐,比如我們下面看到的为牍。
yadang.go
package main
import (
"fmt"
"reflect"
)
var height uint8 = 150
var weight = 20
func main(){
hello()
}
func hello(){
fmt.Printf("我是亞當(dāng)哼绑,身高 %v 米,體重 %v 噸碉咆。", height, weight)
fmt.Println(reflect.TypeOf(height), reflect.TypeOf(weight))
}
func speak(){
fmt.Println("哇哈哈抖韩,我會(huì)說話了~")
}
func run(){
fmt.Println("我跑,我跑疫铜,我跑跑跑~")
}
運(yùn)行以后發(fā)現(xiàn)結(jié)果是:
我是亞當(dāng)茂浮,身高 150 米,體重 20 噸壳咕。uint8 int
我們發(fā)現(xiàn)正常輸出了 我是亞當(dāng)席揽,身高 150 米,體重 20 噸谓厘。
下面的 reflect.TypeOf(height)
是Go給我們提供的另一個(gè)方便我們創(chuàng)造一切的工具幌羞,這個(gè)工具包叫做 reflect
里面有一個(gè)方法 TypeOf
他可以接收一個(gè)變量,然后告訴我們這個(gè)變量的類型是什么竟稳。
我們發(fā)現(xiàn)上面的體重 var weight = 20
我們并沒有指定類型属桦,這是因?yàn)镚o會(huì)自己根據(jù)等號后面的類型去判斷應(yīng)該給我們的變量一個(gè)什么默認(rèn)值,這里我們可以看到他爸,如果是整數(shù)的話聂宾,Go默認(rèn)是把它聲明成一個(gè) int
類型的變量了。我們都知道 int
是有符號的類型诊笤,根據(jù)操作系統(tǒng)位數(shù)的不同系谐,最低可以表示21億的正負(fù)數(shù),最高就是 int64
可以表示很大的正負(fù)數(shù)值讨跟。而我們的亞當(dāng)纪他,很顯然不會(huì)有這么重的,所以我們?yōu)榱斯?jié)約珍貴的資源许赃,就像節(jié)約我們的土地一樣止喷。就要給一些明知道一定不會(huì)超過這個(gè)范圍的變量一個(gè)合適的類型。
比如我們要做一個(gè)日歷系統(tǒng)混聊,其中表示年份的我們就可以使用 uint16
類型弹谁,最高可以表示 65535
,至少在我們有生之年是看不到那一年了句喜,或許只有我們的亞當(dāng)才能活這么多年吧~~當(dāng)然预愤,如果你們公司需要做一個(gè)未來日歷,要求可以查看幾百萬年以后咳胃,那就要根據(jù)需求使用其他的數(shù)據(jù)類型了植康。
(持續(xù)更新中~)
最后更新時(shí)間:2018年04月28日10:20:09
作者:秋名山車神
簡書提供版權(quán)保護(hù)