Go对于接口和其实现的命名规范是什么?
假设整个Web项目都依赖于接口,比如service:
type UserService interface { SignupByEmail(ctx *gin.Context, user domain.User) error LoginByEmail(ctx *gin.Context, user domain.User) (domain.User, error)}type UserServiceImp struct { userRepo repo.UserRepository}func NewUserServiceImp(userRepo repo.UserRepository) *UserServiceImp { return &UserServiceImp{userRepo: userRepo}}
但是好像对于GO来说一般不像在Java一样在后面加interface或者Imp来标识,之前看到有人是直接以大小写的UserService和userService来区分接口和实现,但是这样的话构造函数就只能返回接口不能返回具体实现了。
对于repository也有相同的疑问,对于dao和cache我是直接接口UserDao然后实现UserMysqlDao用具体的dao实现来区别的。
有其他更优雅的符合Go的命名吗?
推荐一个谷歌的 go best practices
网站: best-practices, 希望对你有用。
主要内容:接口被实现的条件一:接口的方法与实现接口的类型方法格式一致,接口被实现的条件二:接口中所有方法均被实现如果一个任意类型 T 的方法集为一个接口类型的方法集的超集,则我们说类型 T 实现了此接口类型。T 可以是一个非接口类型,也可以是一个接口类型。 实现关系在Go语言中是隐式的。两个类型之间的实现关系不需要在代码中显式地表示出来。Go语言中没有类似于 implements 的关键字。 Go编译器将自动在需要的时候检查两个类型之间的实现关系。 接口定义后,需要实现接口,调用方才能正确编译通
Go 语言提供了另外一种数据类型即接口,它把所有的具有共性的方法定义在一起,任何其他类型只要实现了这些方法就是实现了这个接口。 实例 /* 定义接口 */ type interface_name interface { method_name1 [return_type] method_name2 [return_type] method_name3 [return_type]
主要内容:error 基本用法,自定义错误类型错误处理在每个编程语言中都是一项重要内容,通常开发中遇到的分为异常与错误两种,Go语言中也不例外。本节我们主要来学习一下Go语言中的错误处理。 在C语言中通过返回 -1 或者 NULL 之类的信息来表示错误,但是对于使用者来说,如果不查看相应的 API 说明文档,根本搞不清楚这个返回值究竟代表什么意思,比如返回 0 是成功还是失败? 针对这样的情况,Go语言中引入 error 接口类型作为错误处理
主要内容:结构体实现接口,函数体实现接口,HTTP包中的例子函数和其他类型一样都属于“一等公民”,其他类型能够实现接口,函数也可以,本节将对结构体与函数实现接口的过程进行对比。 首先给出本节完整的代码: 有如下一个接口: 这个接口需要实现 Call() 方法,调用时会传入一个 interface{} 类型的变量,这种类型的变量表示任意类型的值。 接下来,使用结构体进行接口实现。 结构体实现接口 结构体实现 Invoker 接口的代码如下: 代码说明如下:
本文向大家介绍Go语言接口用法实例,包括了Go语言接口用法实例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Go语言接口用法。分享给大家供大家参考。具体分析如下: 接口类型是由一组方法定义的集合。 接口类型的值可以存放实现这些方法的任何值。 希望本文所述对大家的Go语言程序设计有所帮助。
主要内容:将值保存到空接口,从空接口获取值,空接口的值比较空接口是接口类型的特殊形式,空接口没有任何方法,因此任何类型都无须实现空接口。从实现的角度看,任何值都满足这个接口的需求。因此空接口类型可以保存任何值,也可以从空接口中取出原值。 提示 空接口类型类似于 C# 或 Java 语言中的 Object、C语言中的 void*、 C++ 中的 std::any。在泛型和模板出现前,空接口是一种非常灵活的数据抽象保存和使用的方法。 空接口的内部实现保存了对