Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Golang中的最小化接口_Java_Go_Interface_Type Narrowing - Fatal编程技术网

Java Golang中的最小化接口

Java Golang中的最小化接口,java,go,interface,type-narrowing,Java,Go,Interface,Type Narrowing,在golang中,接口对于解耦和编写代码非常重要,因此,高级go程序可以轻松定义1000个接口 我们如何随着时间的推移发展这些接口,以确保它们保持最小 是否有常用的go工具用于检查未使用的功能 对于使用类似于java的@Override的东西来注释go函数,是否有最佳实践,以确保声明的函数正确地实现了预期的契约 通常在java语言中,很容易将代码紧密绑定到接口规范,因为高级工具允许我们查找和删除根本没有引用的函数(通常在任何公共IDE中都会自动突出显示) 是否有常用的go工具用于检查未使用的

在golang中,接口对于解耦和编写代码非常重要,因此,高级go程序可以轻松定义1000个接口

我们如何随着时间的推移发展这些接口,以确保它们保持最小

  • 是否有常用的go工具用于检查未使用的功能

  • 对于使用类似于java的
    @Override
    的东西来注释go函数,是否有最佳实践,以确保声明的函数正确地实现了预期的契约

通常在java语言中,很容易将代码紧密绑定到接口规范,因为高级工具允许我们查找和删除根本没有引用的函数(通常在任何公共IDE中都会自动突出显示)

是否有常用的go工具用于检查未使用的功能

有点,但很难确定导出的接口。可以用于查找对类型或方法的引用,但前提是在gopath上有所有引用的代码

你能确保一个类型实现一个契约吗

如果试图使用类型作为接口,编译器将在没有所有方法的情况下发出抱怨。我通常通过导出接口(而不是实现)和构造构造函数来实现这一点:

type MyInterface interface{
    Foo()
}
type impl struct{}
func (i *impl) Foo(){}
func NewImpl() MyInterface{
    return &impl{}
}
如果impl没有实现所有必需的函数,则不会编译该函数

在go中,不需要声明您实现了一个接口。这允许您实现一个接口,而无需引用其中定义的包。这与“紧密绑定到接口规范”几乎完全相反,但它允许一些有趣的使用模式

是否有常用的go工具用于检查未使用的功能

有点,但很难确定导出的接口。可以用于查找对类型或方法的引用,但前提是在gopath上有所有引用的代码

你能确保一个类型实现一个契约吗

如果试图使用类型作为接口,编译器将在没有所有方法的情况下发出抱怨。我通常通过导出接口(而不是实现)和构造构造函数来实现这一点:

type MyInterface interface{
    Foo()
}
type impl struct{}
func (i *impl) Foo(){}
func NewImpl() MyInterface{
    return &impl{}
}
如果impl没有实现所有必需的函数,则不会编译该函数


在go中,不需要声明您实现了一个接口。这允许您实现一个接口,而无需引用其中定义的包。这与“紧密绑定到接口规范”几乎完全相反,但它确实允许一些有趣的使用模式。

您所要求的并不是Go的一部分。对于注释函数满足接口没有最佳实践。我个人认为,唯一明确的最佳实践是记录类型实现的接口,以便人们了解。如果您想显式地(在编译时)测试一个类型是否实现了一个接口,您可以使用赋值进行测试,请查看我在这个主题上的答案

如果您只是想清点代码库以进行清理,我建议您对所有类型使用该赋值方法来生成编译时错误,这些错误与它们没有实现的内容有关,请缩小声明的规模,直到编译完成。在这样做的过程中,您应该意识到可能实现的内容与实际实现的内容之间的差异


Go也缺少IDE选项。因此,像“查找所有引用”这样的一些友好特性就不存在了。您可以使用文本搜索技巧来解决此问题,例如搜索
func TheName
仅获取声明和
.TheName(
获取所有调用。我相信如果您继续使用此工具,您会很快习惯的。

您所要求的并不是Go的一部分。没有最佳实践来说明函数满足接口。我个人认为,唯一明确的最佳实践是记录您需要的类型的接口如果你想显式地(在编译时)测试一个类型是否实现了一个接口,你可以使用赋值进行测试,请查看我在这个主题上的答案

如果您只是想清点代码库以进行清理,我建议您对所有类型使用该赋值方法来生成有关它们未实现的内容的编译时错误,缩小声明的规模,直到它编译。这样做时,您应该意识到可能实现的内容之间的差异d和实际情况


Go还缺少IDE选项。因此,一些友好的功能(如“查找所有引用”)不存在。您可以使用文本搜索技巧来解决此问题,例如搜索
func TheName
仅获取声明和
。TheName(
获取所有调用。如果您继续使用此工具,我相信您会很快习惯的。

我想我们可以使用死代码查找器查找不再需要的“旧接口impls”。我想我们可以使用死代码查找器查找“旧接口impls”不再需要。可能值得注意的是,采用单一方法
接口
的API可以重新编写为采用函数类型。请参阅。可能值得注意的是,采用单一方法
接口
的API可以重新编写为采用函数类型。请参阅。