bro*_*oun 3 if-statement go revel
我最近开始学习golang和Revel.我试图了解下面的if语句究竟是什么.似乎它正在进行类型检查,但我不知道条件实现了什么.感谢是否有人能告诉我这里发生了什么.谢谢
if str, ok := obj.(string); ok {
return len(str) > 0
}
Run Code Online (Sandbox Code Playgroud)
它试图将obj(可能是某个抽象接口)转换为字符串,检查是否有效,只有在结果好的情况下才进入.
写得更稀疏,它可以被视为:
// do a type assertion/conversion of obj to a string.
// If obj isn't really a string, ok will be false
str, ok := obj.(string)
// this will only run if we're talking about a string
if ok {
return len(str) > 0
}
Run Code Online (Sandbox Code Playgroud)
从一些界面到真实类型的安全铸造是做什么的.如果你在没有该ok部分的情况下这样做,如果obj不是一个字符串,你的程序将会惊慌失措.即如果obj不是字符串,则此代码将使程序崩溃:
str := obj.(string)
return len(str) > 0
Run Code Online (Sandbox Code Playgroud)
您可以在文档中阅读有关类型断言的更多信息:
http://golang.org/ref/spec#Type_assertions
| 归档时间: |
|
| 查看次数: |
2017 次 |
| 最近记录: |