美文网首页GolangGolang 入门资料+笔记
【低门槛Golang教学】一、断言

【低门槛Golang教学】一、断言

作者: 我爱余倩 | 来源:发表于2019-03-16 17:00 被阅读1次

    一、前言

    1. 由于掌握的开发技能多种多样(Node、Lua、Golang、PHP、C#、Python),导致公司基础平台项目一直难以开展。
    2. 终于再三取舍之下选择了 'Golang' 这个新秀语种,因为 'Golang' 非常契合本人的简洁风格,所以日后除了'Laravel' 相关的教程以外,'Golang' 的教学将会成为最主要输出。

    二、说明

    1. 本文的主题是 接口类型断言 (assert),阅读后文的必要前提是你已经对 'Golang' 有了一定了解。
    2. 后文同样假设你已经搭建好了 'Golang' 的开发环境。

    二、开始

    1. 接口类型断言 (assert) 的基本语法如下:
    # x:任意一个interface
    # y:断言结果类型名称
    # z:用y类型断言x接口后结果
    z := x.(y)
    
    1. 显然,上面看起来和 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
    }
    
    1. 接着在命令行中运行脚本,成功输出:
    > struct name
    > i am map
    

    四、结语

    1. 本教程面向新手,更多教程会在日后给出。
    2. 欢迎联系在下,讨论建议都可以,之后会发布其它的教程。
    3. 同时本人也在紧锣密鼓地准备 Laravel业务篇 系列的教程,敬请期待。

    相关文章

      网友评论

        本文标题:【低门槛Golang教学】一、断言

        本文链接:https://www.haomeiwen.com/subject/evbbuqtx.html