map 可以:
value, present := m["key"]
value := m["key"]
type assertion 可以
var i interface{} = "hello"
s := i.(string)
fmt.Println(s)
s, ok := i.(string)
fmt.Println(s, ok)
我自己创建一个 func
func hello() (string, error) {
return "world", nil
}
when invoke the func:
v, ok := hello() // valid
v := hello() // invalid
刚通过 golang tour 看了一天 golang 的语法,这里不太理解,想问下 map 和 type assertion 是怎么实现这种优雅的方式的。
1
tidezyc 2016-03-27 16:23:36 +08:00 via iPhone 1
语言就是这么设计的,你可以认为是语法糖,具体编译器会判断返回一个还是两个,而且只针对特定类型,比如 map , chan , range 和断言
|
2
datou552211 2016-03-27 16:57:55 +08:00 via iPhone
返回一个值的时候,没有会 panic
|
3
tidezyc 2016-03-27 17:17:51 +08:00 via iPhone
@datou552211 断言会 panic , map 不会
|