1
iRiven 2021-09-30 10:38:02 +08:00 via Android
结构体不添加任何描述,接口添加 Ifc 后缀
|
2
czyt 2021-09-30 10:39:15 +08:00
没有看懂想要问的是啥。接口可以嵌套。这些可以自由组合。
|
3
index90 2021-09-30 10:43:26 +08:00 1
type Auth interface
type XXAuth struct auth := XXAuth{} |
4
dcalsky 2021-09-30 11:05:05 +08:00 2
```
type IFoo interface {} type Foo struct {} var foo Foo ``` 我觉得“I”大法蛮好的! |
5
masterclock 2021-09-30 11:15:40 +08:00 4
楼主要么再组织一下语言?
这一段文字,从头到尾没看懂 |
6
chaleaoch OP @masterclock
@czyt 一楼四楼看懂了. 大概是这个意思. ``` type authInterface interface { } type authStruct struct { } var authS authStruct = authStruct{} var authI authInterface = authS ``` 我的问题是 这些接口结构体和指向接口结构体的变量如何命名? |
7
qq1340691923 2021-09-30 13:57:29 +08:00
type AuthInterface interface {
} type Auth struct { } auth := Auth {} var authInterface AuthInterface = auth |
8
chaleaoch OP @qq1340691923 大佬想法和我差不多.
但是如果接口定义成 私有的就麻烦了. |
9
index90 2021-09-30 14:59:31 +08:00
在 go 里面,interface 才是面向对象里的“对象”
|
10
Jwyt 2021-10-01 02:42:55 +08:00
感觉楼主的问题 Java 写多了就信手拈来了
|
11
janxin 2021-10-02 08:13:51 +08:00 1
虽然不是完全 Get 到了 LZ 的点,但是也尝试回答一下
比如接口可以尝试叫做 Auther,那么对应的结构体可以叫做 UserAuth,OpenAPIAuth (这个需要看情况,一般情况这不一定是最佳实践)。变量名则可以是 userAuth,openapiAuth 。当然变量名命名在各种语言都一样,以标记为主,能够直观表达即可,叫做 auth,只要大家理解也无不可。即便循环里大家常用的 i,j,k,约定俗称也就如此用了。 另外关于接口定义的私有化问题多少有点暧昧,一般这种情况下可能是无需定义接口或者接口定义存疑,不如重新思考是否确实需要接口。另外是之前提到的未必最佳实践是指的下面一种关于 Java-esque 的写法的问题就是下面的一种情况: type IFoo interface{ ... } type Foo struct{ ... } 这是一种非常 Java-Style 的写法,实际上 Go 中的最佳实现是根据使用者需求定义最小化接口。往往 Javaer 的写法是在结构体旁边声明一个非常庞大的接口,这个结构体是完全实现了这个接口的。 转换成具体的例子可以这样理解: // 定义时 type Animal interface { Name() string Speaks() string } // implementation of Animal type Dog struct{} func (a Dog) Name() string { return "Bobby" } func (a Dog) Speaks() string { return "woof" } // 使用时 func Perform(a animals.Animal) string { return a.Speaks() } |
12
lostsquirrelX 2021-10-02 09:51:28 +08:00
编程思想没转变
|
16
mcfog 2021-10-03 23:10:10 +08:00 1
因为 go 的风格是把接口放在调用侧而非实现侧的,所以多数情况接口和实现是在不同 package 中,可以直接用相同的名字
多个方法如果紧密相关可以放一起,起一个整体名字,如果并没有太大相关,可以分开多个接口,go proverb 如是说: “The bigger the interface, the weaker the abstraction.” |