教程集 www.jiaochengji.com
教程集 >  Golang编程  >  golang教程  >  正文 golang中的联合体

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集合合并

[关闭]
~ ~