go語(yǔ)言中的if語(yǔ)句和其他語(yǔ)言中的類似,都是根據(jù)給定的條件表達(dá)式運(yùn)算結(jié)果來(lái),判斷執(zhí)行流程。
泉港網(wǎng)站建設(shè)公司成都創(chuàng)新互聯(lián),泉港網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為泉港上1000+提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站建設(shè)要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的泉港做網(wǎng)站的公司定做!
注意:在go語(yǔ)言中 布爾表達(dá)式不用使用括號(hào)。
根據(jù)布爾值flag判斷
程序運(yùn)行結(jié)果
初始變量可以聲明在布爾表達(dá)式里面,注意它的作用域
程序運(yùn)行結(jié)果
注意:不能使用0或非0表示真假
go語(yǔ)言if語(yǔ)句使用提示:
go語(yǔ)言中的if else語(yǔ)句可以根據(jù)給定條件二選一。
比較兩個(gè)數(shù)的大小
運(yùn)行結(jié)果
判斷一個(gè)數(shù)是奇數(shù)還是偶數(shù)
運(yùn)行結(jié)果
判斷一個(gè)人是否成年
運(yùn)行結(jié)果
特殊寫法,在if前面添加執(zhí)行語(yǔ)句
運(yùn)行結(jié)果
go語(yǔ)言if語(yǔ)句使用提示:
go語(yǔ)言if語(yǔ)句可以進(jìn)行多重嵌套使用,進(jìn)行多重判斷。
根據(jù)分?jǐn)?shù)判斷等級(jí)
運(yùn)行結(jié)果
同樣也可以寫成這樣
運(yùn)行結(jié)果
輸入星期幾的第一個(gè)字母來(lái)判斷一下是星期幾,如果第一個(gè)字母一樣,則繼續(xù)判斷第二個(gè)字母
運(yùn)行結(jié)果
go語(yǔ)言if語(yǔ)句可以嵌套多級(jí)進(jìn)行判斷。
判斷三個(gè)數(shù)的大小
運(yùn)行結(jié)果
判斷男生還是女生,還有是否成年
運(yùn)行結(jié)果
數(shù)組是一個(gè)由 固定長(zhǎng)度 的 特定類型元素 組成的序列,一個(gè)數(shù)組可以由零個(gè)或多個(gè)元素組成。 數(shù)組是值類型
數(shù)組的每個(gè)元素都可以通過(guò)索引下標(biāo)來(lái)訪問(wèn),索引下標(biāo)的范圍是從0開始到數(shù)組長(zhǎng)度減1的位置,內(nèi)置函數(shù) len() 可以返回?cái)?shù)組中元素的個(gè)數(shù)。
2.類型的打印,結(jié)果的第二種打印方式
3.對(duì)元素的修改或者賦值
4.判斷數(shù)組是否相等:長(zhǎng)度、類型
4.數(shù)組的地址:連續(xù)存儲(chǔ)的空間
5.數(shù)組的賦值、地址、取值
6.數(shù)組的默認(rèn)值
7.數(shù)組的初始化
8.數(shù)組的逆置
9.求數(shù)組的最大值、最小值、平均值
10.對(duì)數(shù)組字符串進(jìn)行連接
11.冒泡排序法的實(shí)現(xiàn)
12.數(shù)組做函數(shù)的參數(shù)
13.二維數(shù)組:賦值和地址
14.二維數(shù)組:打印和輸出
15. 指針數(shù)組,每一個(gè)元素都是地址
17.數(shù)組的內(nèi)存分配
大家經(jīng)常用"=="來(lái)比較兩個(gè)變量是否相等。但是golang中的"=="有很多細(xì)節(jié)的地方,跟php是不一樣的。很多時(shí)候不能直接用"=="來(lái)比較,編譯器會(huì)直接報(bào)錯(cuò)。
golang中基本類型的比較規(guī)則和復(fù)合類型的不一致,先介紹下golang的變量類型:
golang中的基本類型
比較的兩個(gè)變量類型必須相等。而且,golang沒(méi)有隱式類型轉(zhuǎn)換,比較的兩個(gè)變量必須類型完全一樣,類型別名也不行。如果要比較,先做類型轉(zhuǎn)換再比較。
復(fù)合類型是逐個(gè)字段,逐個(gè)元素比較的。需要注意的是, array 或者struct中每個(gè)元素必須要是可比較的,如果某個(gè)array的元素 or struct的成員不能比較(比如是后面介紹的slice,map等),則此復(fù)合類型也不能比較。
逐個(gè)成員比較類型和值。每個(gè)對(duì)應(yīng)成員的比較遵循基本類型變量的比較規(guī)則。
但是如果struct中有不可比較的成員類型時(shí):
可以看到,struct中有slice這種不可比較的成員時(shí),整個(gè)struct都不能做比較,即使沒(méi)有對(duì)slice那個(gè)成員賦值(slice默認(rèn)值為nil)
slice和map的比較規(guī)則比較奇怪,我們先說(shuō)普通的變量引用類型val和channel的比較規(guī)則。
引用類型變量存儲(chǔ)的是某個(gè)變量的內(nèi)存地址。所以引用類型變量的比較,判斷的是這兩個(gè)引用類型存儲(chǔ)的是不是同一個(gè)變量。
上面看起來(lái)比較廢話,但是得理解引用類型的含義。不然對(duì)判斷規(guī)則還是不清楚。
slice類型不可比較,只能與零值nil做比較。
關(guān)于slice類型不可比較的原因,后面會(huì)專門寫文章做討論。
map類型和slice一樣,不能比較,只能與nil做比較。
接口類型的變量,包含該接口變量存儲(chǔ)的值和值的類型兩部分組成,分別稱為接口的動(dòng)態(tài)類型和動(dòng)態(tài)值。 只有動(dòng)態(tài)類型和動(dòng)態(tài)值都相同時(shí),兩個(gè)接口變量才相同:
而且接口的動(dòng)態(tài)類型必須要是可比較的,如果不能比較(比如slice,map),則運(yùn)行時(shí)會(huì)報(bào)panic。因?yàn)榫幾g器在編譯時(shí)無(wú)法獲取接口的動(dòng)態(tài)類型,所以編譯能通過(guò),但是運(yùn)行時(shí)直接panic:
golang的func作為一等公民,也是一種類型,而且不可比較
上面說(shuō)過(guò),map和slice是不可比較類型,但是有沒(méi)有特殊的方法來(lái)對(duì)slice和map做比較呢,有
reflect.DeepEqual函數(shù)可以用來(lái)比較兩個(gè)任意類型的變量
對(duì)map類型做比較:
對(duì)slice類型做比較:
對(duì)struct類型做比較:
可以發(fā)現(xiàn),只要變量的類型和值相同的話,reflect.DeepEqual比較的結(jié)果就為true
直接看用例:
結(jié)果為:
1, golang的類型再定義和類型別名
2,golang的slice和map為什么不可以比較
1,
2,
3,
1、基本數(shù)據(jù)類型
bool
string
int int8 int16 int32 int64
uint uint8 uint16 uint32 uint64 uintptr
byte // alias for int8
rune // alias for int32,represents a Unicode code point
float32 float64
complex64 complex128
常量定義
2、類型轉(zhuǎn)換
(1)Go語(yǔ)言不允許隱式類型轉(zhuǎn)換(不支持小位數(shù)類型向大位數(shù)類型轉(zhuǎn))
(2)別名和原有類型也不能進(jìn)行隱式類型轉(zhuǎn)換(type MyInt int64 = int64)
3、類型的預(yù)定義值
1.math.MaxInt64
2.math.MaxFloat64
3.math.MaxUInt32
4、指針類型
(1)不支持指針運(yùn)算
(2)string是值類型,其默認(rèn)的初始化值為空字符串,而不是nil
5、算術(shù)運(yùn)算符
+ - * / % ++ --(不支持前置++ --)
6、比較運(yùn)算符
#== != = =
(1)比較數(shù)組
相同維數(shù)且含有形同個(gè)數(shù)元素的數(shù)組才可以比較
每個(gè)元素都相同的才相等
7、位運(yùn)算符
| ^
^ (按位置零) a (^b)
1 ^ 0 1
1 ^ 1 0
0 ^ 1 0
0 ^ 0 0
8、條件與循環(huán)
(1)循環(huán)
Go 語(yǔ)?僅?持循環(huán)關(guān)鍵字 for
(2)條件
9、數(shù)組和切片
數(shù)組截取,索引下標(biāo)從0開始計(jì)數(shù)
a[開始索引(包含), 結(jié)束索引(不包含)]
a := [...]int{1, 2, 3, 4, 5}
a[1:2] //2
a[1:3] //2,3
a[1:len(a)] //2,3,4,5
a[1:] //2,3,4,5
a[:3] //1,2,3
切片內(nèi)部結(jié)構(gòu)
9、Map
9、字符串
Unicode UTF8
常?字符串函數(shù)