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...