golang中的联合体
发布时间:2022-03-05 编辑:jiaochengji.com
教程集为您提供golang中的联合体等资源,欢迎您收藏本站,我们将为您提供最新的golang中的联合体资源
昨天使用protobuf中的oneof发现编译出来的代码挺奇怪的,详细看看发现golang中使用联合体是这样用的
定义一个接口类型,这个接口类型就一个方法,实现了这个方法就可以赋值了。
<pre><code class="lang-go">type msgPayload interface { msgPayload() }</code></pre>要使用联合体的地方使用接口代替
<pre><code class="lang-go">type Message struct { Payload msgPayload }</code></pre>然后就可以分别定义各个结构了,只需要添加定义的空接口就行了
<pre><code class="lang-go">type MsgA struct { A uint32 } func (*MsgA) msgPayload() {}</code></pre>同样使用的时候,定义结构体
<pre><code class="lang-go">msgA := Message{Payload:&MsgA{A: 000}}</code></pre>读取时候使用
<pre><code class="lang-go">switch msgB.Payload.(type) { case *MsgA: fmt.Println("*MsgA") ...... }</code></pre>
您可能感兴趣的文章:
golang中的联合体
Go核心编程-面向对象 [OOP]
golang中的nil
Golang 编辑器
PHP7 Swoole/Nginx/Golang 数字货币交易所通信方式
golang学习之结构体,方法,接口
golang channel传递map
golang之抽象类实现
golang 结构体的嵌入类型和接口
golang map集合合并
上一篇:在Go中使用正则表达式
下一篇:go那些事儿|defer必掌握知识
[关闭]