一、前言
- 由于掌握的开发技能多种多样(Node、Lua、Golang、PHP、C#、Python),导致公司基础平台项目一直难以开展。
- 终于再三取舍之下选择了 'Golang' 这个新秀语种,因为 'Golang' 非常契合本人的简洁风格,所以日后除了'Laravel' 相关的教程以外,'Golang' 的教学将会成为最主要输出。
二、说明
- 本文的主题是 接口类型断言 (assert),阅读后文的必要前提是你已经对 'Golang' 有了一定了解。
- 后文同样假设你已经搭建好了 'Golang' 的开发环境。
二、开始
- 接口类型断言 (assert) 的基本语法如下:
# x:任意一个interface
# y:断言结果类型名称
# z:用y类型断言x接口后结果
z := x.(y)
- 显然,上面看起来和 OOP 中的 基类转换 十分相似,那么让我们实际运用一下吧:
package main
import "fmt"
// 表示上面的x
type C interface {}
// 表示上面的y
type M map[string]string
type Test struct {
c C
name string
}
func main() {
m := newM()
t := Test {m,"struct name\n"}
// 正常打印出 'struct name' 没有上面问题
fmt.Print(t.name)
// 如果直接 fmt.Print(t.c.["key"]) 会报错
// 只能通过断言后才能访问 map 中的 key
assert, ok := t.c.(M)
if !ok {
fmt.Print("error")
}
fmt.Print(assert["t"])
}
func newM() M {
ret := M{"key":"i am map"}
return ret
}
- 接着在命令行中运行脚本,成功输出:
> struct name
> i am map
四、结语
- 本教程面向新手,更多教程会在日后给出。
- 欢迎联系在下,讨论建议都可以,之后会发布其它的教程。
- 同时本人也在紧锣密鼓地准备 Laravel业务篇 系列的教程,敬请期待。
有疑问加站长微信联系(非本文作者)