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

我爱余倩 · · 649 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

一、前言

  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教学】一、断言

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

649 次点击  
加入收藏 微博
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传