草庐IT

interface-design

全部标签

go - 返回它自身的接口(interface)(可克隆)

我正在尝试创建一个可克隆的接口(interface),但在获取结构来实现该接口(interface)时遇到了一些问题。看来这是一个限制,在许多其他语言中都没有。我试图了解此限制的理由。var_Cloneable=test{}typeCloneableinterface{Clone()Cloneable}typeteststruct{}func(t*test)Clone()*test{c:=*treturn&c}Playground:https://play.golang.org/p/Kugatx3Zpw后续问题,因为它对我来说仍然很奇怪。这也不编译var_Cloneable=&test

go - 如何在 golang 中原子存储和加载接口(interface)?

我想写一些这样的代码:varmyValueinterface{}funcGetMyValue()interface{}{returnatomic.Load(myValue)}funcStoreMyValue(newValueinterface{}){atomic.Store(myValue,newValue)}似乎我可以在原子包中使用LoadUintptr(addr*uintptr)(valuintptr)和StoreUintptr(addr*uintptr,valuintptr)来实现这个,但我不知道如何在uintptr、unsafe.Pointer和interface{}之间转换。

go - 如何在 golang 中原子存储和加载接口(interface)?

我想写一些这样的代码:varmyValueinterface{}funcGetMyValue()interface{}{returnatomic.Load(myValue)}funcStoreMyValue(newValueinterface{}){atomic.Store(myValue,newValue)}似乎我可以在原子包中使用LoadUintptr(addr*uintptr)(valuintptr)和StoreUintptr(addr*uintptr,valuintptr)来实现这个,但我不知道如何在uintptr、unsafe.Pointer和interface{}之间转换。

performance - 当函数参数是接口(interface)时复制什么

假设:在go中,所有函数参数都是按值传递的。为了获得按引用传递的语义/性能,Go程序员通过指针传递值。Go仍然会复制这些参数,但它会复制指针,这有时比复制实际参数的内存效率更高。问题:传递一个接口(interface)是怎么回事?即,在这样的程序中packagemainimport"fmt"typeMessagesstruct{hellostring}funcmain(){sayHelloOne(Messages{"helloworld"});sayHelloTwo(&Messages{"helloworld"});sayHelloThree(Messages{"helloworld"

performance - 当函数参数是接口(interface)时复制什么

假设:在go中,所有函数参数都是按值传递的。为了获得按引用传递的语义/性能,Go程序员通过指针传递值。Go仍然会复制这些参数,但它会复制指针,这有时比复制实际参数的内存效率更高。问题:传递一个接口(interface)是怎么回事?即,在这样的程序中packagemainimport"fmt"typeMessagesstruct{hellostring}funcmain(){sayHelloOne(Messages{"helloworld"});sayHelloTwo(&Messages{"helloworld"});sayHelloThree(Messages{"helloworld"

go - 如何在遵守接口(interface)上的 golang CodeReviewComments 规则的同时执行正确的构造?

Interfaces官方GoCodeReviewComments文档中的规则说包应该返回具体类型而不是接口(interface)。这样做的动机是:...newmethodscanbeaddedtoimplementationswithoutrequiringextensiverefactoring.我认为这可能是一件好事。但是,如果我正在编写的类型具有依赖性,没有它就无法达到目的怎么办?如果我导出具体类型,开发人员将能够在没有该依赖性的情况下实例化实例。为了针对缺失的依赖项进行防御性编码,我必须在每个方法实现中检查它,如果不存在则返回错误。如果开发人员在我的文档中遗漏了任何不要执行此操

go - 如何在遵守接口(interface)上的 golang CodeReviewComments 规则的同时执行正确的构造?

Interfaces官方GoCodeReviewComments文档中的规则说包应该返回具体类型而不是接口(interface)。这样做的动机是:...newmethodscanbeaddedtoimplementationswithoutrequiringextensiverefactoring.我认为这可能是一件好事。但是,如果我正在编写的类型具有依赖性,没有它就无法达到目的怎么办?如果我导出具体类型,开发人员将能够在没有该依赖性的情况下实例化实例。为了针对缺失的依赖项进行防御性编码,我必须在每个方法实现中检查它,如果不存在则返回错误。如果开发人员在我的文档中遗漏了任何不要执行此操

inheritance - golang 中字段的接口(interface)

假设我有一个应该用作上传结果的结构:typeuploadResultstruct{Filenamestring`json:"filename"`Codestring`json:"code"`Reasonstring`json:"reason"`}还有其他类似的结构,都有一个字段Code和另一个名为Reason的字段。因此,拥有类似通用接口(interface)的东西会很有趣(伪代码;这个不起作用):typeapiResultinterface{Codestring`json:"code"`Reasonstring`json:"reason"`}因为我想调用一个提取一些公共(public

inheritance - golang 中字段的接口(interface)

假设我有一个应该用作上传结果的结构:typeuploadResultstruct{Filenamestring`json:"filename"`Codestring`json:"code"`Reasonstring`json:"reason"`}还有其他类似的结构,都有一个字段Code和另一个名为Reason的字段。因此,拥有类似通用接口(interface)的东西会很有趣(伪代码;这个不起作用):typeapiResultinterface{Codestring`json:"code"`Reasonstring`json:"reason"`}因为我想调用一个提取一些公共(public

memory - Go 中的接口(interface)是如何表示的?

我现在正在阅读两篇文章,有点困惑。本文-http://blog.golang.org/laws-of-reflection说>varrio.Readertty,err:=os.OpenFile("/dev/tty",os.O_RDWR,0)iferr!=nil{returnnil,err}r=ttyrcontains,schematically,the(value,type)pair,(tty,*os.File).Noticethatthetype*os.FileimplementsmethodsotherthanRead;eventhoughtheinterfacevalueprov