goLang斷言簡單使用

2021-10-10 21:27:57 字數 1797 閱讀 4973

go作為一門強型別語言,對資料型別有著嚴格的區分。當我們嘗試封裝乙個方法時,有時候返回的是inte***ce{}型別。這時,就要對inte***ce型別進行斷言操作了

package main

import

"fmt"

func

main()

//斷言is_collect

iscollect, ok := data[

"is_collect"].

(bool

)//斷言data["is_collect"]的值是bool型別

if ok

//斷言days

days, ok := data[

"days"].

(int64

)//data["days"]的值的型別是int64一維陣列

if ok

}//斷言like

like, ok := data[

"like"].

(map

[string

]inte***ce

)//data["like"]的值的型別為map[string]inte***ce{}

if ok

}//斷言inte***ce

inte***cedata, ok := data[

"inte***ce"].

(inte***ce

)//斷言data["inte***ce"]的值為inte***ce{}

if ok

}//斷言異常測試:這個data["name"]的值是string型別

//我們在這裡斷言為bool型別,程式報錯:panic: inte***ce conversion: inte***ce {} is string, not bool

//這個inte***ce{}是string型別,不是bool型別

errorname := data[

"name"].

(bool

) fmt.

print

(errorname)

}//自定義資料:用於斷言

func

getdata()

map[

string

]inte***ce

)//定義待返回的資料結構

//string

data[

"name"]=

"張三"

//bool型別

data[

"is_collect"]=

true

//int64型別,星期1-星期7,

days :=

int64

data[

"days"

]= days

//愛好,map[string]inte***ce型別

like :=

map[

string

]inte***ce,}

data[

"like"

]= like

//inte***ce{}型別

golang 型別斷言

型別斷言是乙個使用在介面值上的操作 有時候,我們可能需要知道某個介面型別的實際型別,比如某個方法需要接收多種型別的資料並需做分別處理時,我們可以把形參設為空介面型別以接收任意型別的值,但是我們怎麼反向知道裡面實際儲存了的是哪個型別的物件呢?一種常用的方法是 comma ok 斷言 value,ok ...

Golang 型別斷言

需要的知識 inte ce x.t 檢查x的動態型別是否是t,其中x必須是介面值。直接使用 func main x 100 value1,ok x.int if ok value2,ok x.string if ok 需要注意如果不接收第二個引數也就是ok,這裡失敗的話則會直接panic,這裡還存在...

NSAssert斷言的簡單使用

斷言 保證某乙個條件一定滿足,如果不滿足,就崩潰,並且列印自定義的崩潰資訊。用法 1 引數1 條件表示式,yes 程式繼續執行 no 應用崩潰並列印2 引數2 自定義的崩潰資訊,通常為nsstring,控制台會列印 3 nsassert condition,desc,示例 1 urlstring為n...