`
JArcher
  • 浏览: 27593 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

golang-利用Embedding和interface实现多态

    博客分类:
  • go
go 
阅读更多

go没有继承,但有个Embedding,这个东西有点类似于组合,写了个小例子,实现多态的效果

 

 

 

package main

import "fmt"

type IMessage interface{
	Print()
}

type BaseMessage struct{
	msg string
}

func (message *BaseMessage) Print(){
	fmt.Println("baseMessage:msg",message.msg)
}

type SubMessage struct{
	BaseMessage
}

func main() {
	var message IMessage
	baseMessage := new(BaseMessage)
	baseMessage.msg = "a"
	message = baseMessage
	message.Print()
	SubMessage := new(SubMessage)
	SubMessage.msg = "b"
	message = SubMessage
	message.Print()
	
	
}

 

输出:

baseMessage:msg a

baseMessage:msg b

 

 

分享到:
评论

相关推荐

    Go-weixin-golang-sdk微信golang工具包

    weixin-golang-sdk 微信golang工具包

    golang-linux-arm64-sdk

    本文将详细探讨“golang-linux-arm64 SDK”,揭示其核心特性和使用方法,帮助开发者更好地理解和利用这个强大的工具。 一、golang-linux-arm64 SDK简介 golang-linux-arm64 SDK是Go语言针对Linux操作系统和ARM64...

    golang-1.15.5集合

    1. **golang-src-1.15.5-1.el7.noarch**: 这个文件包含了Go语言的源代码,允许开发者查看和修改语言的实现,或者在没有预编译二进制的情况下构建Go环境。"noarch" 表示这个包是架构无关的,可以在任何支持的平台上...

    golang-odbc 驱动

    总的来说,golang-odbc 驱动为 Go 开发者提供了一种途径,让他们能够利用 ODBC 标准来连接多种数据库系统,从而实现跨平台的数据库访问。不过,使用时应权衡其性能和兼容性,根据实际需求选择最适合的解决方案。

    go-toolset-7-golang-bin-1.8.3-4.el7.x86_64.rpm

    官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装

    golang-cross:使用CGO的golang交叉编译器

    构建基础映像(可选) docker build -f Dockerfile_builder -t goreng/golang-cross-builder:1.15.1 . 请先按照指南 建立跨语言的图像docker build --build-arg GO_VERSION=1.16.2 --build-arg GOLANG_DIST_SHA=542...

    Go-golang-set-Go的线程安全的和非线程安全的高性能集

    `golang-set`库提供了一种实现,包括线程安全和非线程安全的高性能集,非常适合在Go的并发环境中使用。 首先,我们要理解什么是线程安全和非线程安全。线程安全指的是在多线程环境下,一个函数或方法在同一时刻可以...

    Golang-磁力链接和 BT 种子的搜索引擎.zip

    Golang-磁力链接和 BT 种子的搜索引擎

    开源项目-johnnadratowski-golang-neo4j-bolt-driver.zip

    johnnadratowski的golang-neo4j-bolt-driver项目正是利用Go语言特性,为Go开发者提供了与Neo4J数据库通信的接口。 四、golang-neo4j-bolt-driver特性 1. **简单易用**:库的API设计简洁,使得Go开发者能够快速上手...

    开源项目-golang-net.zip

    在golang-net项目中,你可以看到如何利用Go的goroutine和channel实现并发控制,从而高效利用多路复用。 5. 二进制分帧(Binary Framing): HTTP/2的二进制分帧层将HTTP消息划分为可独立处理的数据帧,简化了协议...

    golang-stats-api-handler, Golang cpu,内存,gc等信息api处理程序.zip

    golang-stats-api-handler, Golang cpu,内存,gc等信息api处理程序 golang-stats-api-handlerGolang cpu,内存,gc等信息api处理程序。 安装go get github.com/fukata/golang-stats-api-handler示

    goLang-v1.23.2

    goLang-v1.23.2

    golang-asm:来自Go编译器的汇编器,采用库形式

    golang-asm Go编译器的汇编器镜像,其中导入路径被重写,以使汇编器可用作独立的库。 按照Go项目的许可。地位工作,但希望挖掘到汇编godoc是制定出什么来设置不同的参数obj.Prog得到它产生的具体说明。例子演示在x86...

    开源项目-NanXiao-golang-101-hacks.zip

    开源项目NanXiao-golang-101-hacks.zip是一款专为Go语言初学者和爱好者设计的资源包,它提供了丰富的实践教程和技巧,帮助用户快速掌握Go语言的核心知识。Golang,又称为Go语言,是Google在2009年推出的一种静态类型...

    golang-bin-1.17.2-2.module_el8.6.0+963+7827afaa.x86_64.rpm

    官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装

    golang-常用的压缩算法golang-常用的压缩算法

    golang-常用的压缩算法golang-常用的压缩算法

    golang-misc-1.16.1-3.module_el8.5.0+762+a2d12c29.noarch.rpm

    官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装

    开源项目-skx-golang-metrics.zip

    开源项目-skx-golang-metrics.zip,Automatically submitting golang-system metrics to a remote carbon/graphite server

    开源项目-golang-go.zip

    总之,"开源项目-golang-go.zip"为学习和研究Go语言提供了一个宝贵的资源,无论是初学者还是经验丰富的开发者,都能从中受益匪浅。通过探索go-master分支,我们可以更深入地理解Go语言的设计哲学,提高我们的编程...

Global site tag (gtag.js) - Google Analytics