您现在的位置是:亿华云 > 数据库
Golang 语言编程使用接口有哪些好处?
亿华云2025-10-08 21:09:47【数据库】3人已围观
简介01介绍在 Golang 语言中,接口类型定义了一组方法签名,接口类型的值可以保存实现了这些方法的任何值。Golang 语言的接口是隐式实现的,它不像其他某些编程语言,使用 implements 关键
01介绍
在 Golang 语言中,语言有好接口类型定义了一组方法签名,编程接口类型的使用值可以保存实现了这些方法的任何值。
Golang 语言的接口接口是隐式实现的,它不像其他某些编程语言,语言有好使用 implements 关键字显式实现接口,编程Golang 语言没有 implements 关键字,使用一个类型只要实现接口定义的接口所有方法,就等于实现了该接口,语言有好所以也称为 Duck typing。编程
if something looks like a duck,使用 swims like a duck and quacks like a duck then it’s probably a duck.
关于 Golang 语言接口的使用,我们已经在前面的接口文章中介绍过,感兴趣的语言有好读者朋友可以翻阅一下。本文我们介绍一下使用接口有哪些好处?编程
02使用接口的好处
在 Golang 语言中,我们使用结构体和方法可以很完美的使用实现需求。为什么还要使用接口呢?实际上,接口是一个工具,是否选择使用接口,服务器租用取决于我们自己,它可以使我们的代码更优雅,更简洁,更具可读性。下面我们通过一个简单示例来说明接口的这些好处。
示例代码:
type Cat struct { } func (c Cat) Say() string { return "miaow" } type Dog struct { } func (d Dog) Say() string { return "woof woof" } func TestSay(t *testing.T) { c := Cat{ } t.Log("Cat say:", c.Say()) d := Dog{ } t.Log("Dog say:", d.Say()) }阅读上面这段代码,我们定义了两个结构体 Cat 和 Dog,并分别为其实现了 Say 方法。读者朋友们是否感觉到代码有些重复,因为 Cat 和 Dog 都有相同的签名的方法 Say,所以我们可以使用接口重构一下这段代码。
示例代码:
type Sayer interface { Say() string } type Cat struct { } func (c Cat) Say() string { return "miaow" } type Dog struct { } func (d Dog) Say() string { return "woof woof" } type Horse struct { } func (h Horse) Say() string { return "neigh" } func TestSay(t *testing.T) { c := Cat{ } // t.Log("Cat say:", c.Say()) // d := Dog{ } // t.Log("Dog say:", d.Say()) h := Horse{ } animals := []Sayer{ c, d, h} for _, a := range animals { t.Log("say:", a.Say()) } }阅读上面这段代码,我们定义了一个接口 Sayer,该接口只有一个方法签名 Say。并且我们又新定义了一个结构体 Horse,和未使用接口的代码不同的是,我们不需要使用 h.Say() 调用 Horse 结构体的 Say 方法。
03接口编程案例
在 Golang 语言项目开发中,为了更加方便操作 MySQL,我们通常会选择开源 ORM,但是站群服务器社区有很多 ORM,可能在项目后期会遇到更换 ORM 的需求,我们可以使用接口使 ORM 尽量少的侵入业务代码,为以后替换 ORM 做准备。
type DBOrm interface { Insert(param ...interface{ }) } type XormDB struct { db *xorm.Session } func (x *XormDB) Insert(param ...interface{ }) { _, err := x.db.Insert(param) if err != nil { log.Println(err) } } // type GormDB struct { // db *gorm.DB // } // // func (g *GormDB) Insert(param ...interface{ }) { // g.db.Create(param) // } type User struct { orm DBOrm Id int64 Name string } func (u *User) DB() DBOrm{ u.orm = new(XormDB) // 数据库实例注入接口 // u.orm = new(GormDB) return u.orm } func TestOrm(t *testing.T) { user1 := new(User) user1.Name = "lucy" user1.DB().Insert(user1) }阅读上面这段代码,我们创建了一个接口 DBOrm,创建了两个 ORM 结构体,并分别实现了接口 DBOrm 的签名方法,在业务结构体 User 中,包含的不是某个 ORM 结构体,而是 DBOrm 接口。
04总结
本文我们主要介绍在 Golang 语言项目开发中,为什么使用接口,以及使用接口的好处,并通过示例代码证明接口带来的好处。
最后,通过使用接口调用 ORM 的案例,介绍在实际项目开发中,接口为项目开发带来的好处。
高防服务器很赞哦!(31261)
相关文章
- 尽量不要在域名中出现特殊字符,这样的域名很容易导致访问者输入错误,同时给人留下不专业的印象,降低网站的可信度,并流失大量潜在客户。
- 并非一个好米任何人都会给你一个好的价格。那你该如何用以有的好米卖出最理想的价格呢?
- 便宜域名使用如何?小白可以买到便宜域名吗?
- 为了避免将来给我们的个人站长带来的麻烦,在选择域名后缀时,我们的站长最好省略不稳定的后缀域名,比如n,因为我们不知道策略什么时候会改变,更不用说我们将来是否还能控制这个域名了。因此,如果站长不是企业,或者有选择的话,如果不能选择域名的cn类,最好不要选择它。
- 域名不仅仅是一个简单的网站。对于有长远眼光的公司来说,在运营网站之前确定一个优秀的域名对有长远眼光的公司来说是非常重要的。这对今后的市场营销、产品营销和企业品牌建设都具有十分重要的意义。优秀的域名是企业在市场竞争中获得持久优势的利器。
- ICANN 规章禁止转移已经被记录或者在60天前内转移的域名。
- 如果你的潜在终端必须是这个米(域名),那么潜在终端并不多,也没有硬通货,那么你的域名应该在终端有兴趣购买时出售。否则,你可能得自己留着吃。
- 小白注册网站域名该怎么办?有什么步骤?
- 第三,.cc域名域名也有很多优势资源域名,从整体注册基数也可以由此推断;
- 互联网其实拼的也是人脉,域名投资也是一个时效性很强的东西,一个不起眼的消息就会引起整个域名投资市场的动荡,因此拓宽自己的人脉圈,完善自己的信息获取渠道,让自己能够掌握更为多样化的信息,这样才更有助于自己的域名投资。
热门文章
站长推荐
cm域名有什么独特之处?新人要了解cm域名哪些?
域后缀首选.com,.net,然后是.cn。后缀选择不当,导致流量损失。域名是企业与互联网网址之间的链接,关键是企业在网络上存在的标志。因此,选择好域名是开展网上工作的首要重要条件。
为了避免将来给我们的个人站长带来的麻烦,在选择域名后缀时,我们的站长最好省略不稳定的后缀域名,比如n,因为我们不知道策略什么时候会改变,更不用说我们将来是否还能控制这个域名了。因此,如果站长不是企业,或者有选择的话,如果不能选择域名的cn类,最好不要选择它。
4、待所有域名查询结束后可在右侧点击导出结果,即可以excel的文件方式将查询到的结果导出。
第五步:重复第四步,直到找到正确的纪录。
.net 适用于从事Internet相关的网络服务的机构或公司
什么是im域名?新手需要了解im域名哪些?
付款完成后,您只需耐心等待,如果您注册成功,系统会提示您。这里需要注意的是,域名是一个即时产品,只有在最终付款成功时才能预订,注册成功后不能更改。