对 Golang 简洁架构实战的理解,以及 Golang 开源项目包定义的解惑
2022/1/5 23:04:52
本文主要是介绍对 Golang 简洁架构实战的理解,以及 Golang 开源项目包定义的解惑,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
前言
我们在查看 Golang 代码的时候往往跳转到一个 interface{}
就终止了,这个时候你看不到代码的实现,其实这就是面向接口设计的一种巧妙之处,其实这里是为了让组合代替面向对象的复杂嵌套,或者说简化父子类形成的对象树。intreface{}
和 struct
的组合,interface{}
中定义方法名,入参,返回值,struct
中定义对应的类的变量,从而解耦方法与变量的绑定关系。
实操
我们来看我写的一个简单例子:
对于 interface{}
用法的一个讲解:
一个 interface{}
类型的数据作为返回值得时候是可以返回包内的 struct
的,这个 struct
内的方法实现了 interface{}
中的方法。
当你在 main()
或其他函数中调用 New*()
方法的时候 interface{}
被返回到对应变量中。随后调用 interface{}
中的方法,我们执行跳转定义,就会调到 interface{}
定义的文件中。
package main import ( spwlt "dcos-webshell/studypkgs/wlt" spxm "dcos-webshell/studypkgs/xiaoming" "fmt" ) func main() { tmp := spxm.NewXM("wang") fmt.Println("your name => ") tmp.Speak("9527") fmt.Println(tmp.Say("sober")) wlt := spwlt.NewWlt() wlt.Say("sober.wang") wlt.Speak("wangshen") }
这个时候你需要像下面这样定义你的包
└── studypkgs ├── stady_pkgs.go // 这里定义接口 ├── wlt │ └── wlt.go // 这里实现接口的不同方式 └── xiaoming └── xiaoming.go
社区中的例子
一个非常棒的值得学习的项目:
https://github.com/abronan/valkeyrie
公众号_Golang简洁架构实战
博客_Golang简洁架构实战
这篇关于对 Golang 简洁架构实战的理解,以及 Golang 开源项目包定义的解惑的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-15SendGrid 的 Go 客户端库怎么实现同时向多个邮箱发送邮件?-icode9专业技术文章分享
- 2024-11-15SendGrid 的 Go 客户端库怎么设置header 和 标签tag 呢?-icode9专业技术文章分享
- 2024-11-12Cargo deny安装指路
- 2024-11-02MongoDB项目实战:从入门到初级应用
- 2024-11-01随时随地一键转录,Google Cloud 新模型 Chirp 2 让语音识别更上一层楼
- 2024-10-25Google Cloud动手实验详解:如何在Cloud Run上开发无服务器应用
- 2024-10-24AI ?先驱齐聚 BAAI 2024,发布大规模语言、多模态、具身、生物计算以及 FlagOpen 2.0 等 AI 模型创新成果。
- 2024-10-20goland工具下,如修改一个项目的标准库SDK的版本-icode9专业技术文章分享
- 2024-10-17Go学习:初学者的简单教程
- 2024-10-17Go学习:新手入门完全指南