草庐IT

interface-design

全部标签

inheritance - 非结构类型中的接口(interface)继承

我目前正在学习Go中的接口(interface),但我被这段代码卡住了:packagemainimport("fmt""math")//CommonMathisacommoninterfaceformathtypestypeCommonMathinterface{Abs()float64}//Float64isacustomfloat64typetypeFloat64float64//AbsreturnsthemodulusofobjectsimplementingCommonMathfunc(fFloat64)Abs()float64{iff事实证明,它无法编译,因为newFloat

inheritance - 非结构类型中的接口(interface)继承

我目前正在学习Go中的接口(interface),但我被这段代码卡住了:packagemainimport("fmt""math")//CommonMathisacommoninterfaceformathtypestypeCommonMathinterface{Abs()float64}//Float64isacustomfloat64typetypeFloat64float64//AbsreturnsthemodulusofobjectsimplementingCommonMathfunc(fFloat64)Abs()float64{iff事实证明,它无法编译,因为newFloat

go - 覆盖接口(interface)的函数回调参数

我正在使用一个具有Router接口(interface)的包,并且我已经创建了我自己的应用程序特定的Router接口(interface)来包装第三方包。一切正常,但其中一种方法抛出编译错误:controllers/auth.go:52:17:cannotusefuncliteral(typefunc(router.Router))astypefunc(chi.Router)inargumenttoc.router.Group这是第三方包(chi)的界面:typeRouterinterface{//...//Groupaddsanewinline-Routeralongthecurre

go - 覆盖接口(interface)的函数回调参数

我正在使用一个具有Router接口(interface)的包,并且我已经创建了我自己的应用程序特定的Router接口(interface)来包装第三方包。一切正常,但其中一种方法抛出编译错误:controllers/auth.go:52:17:cannotusefuncliteral(typefunc(router.Router))astypefunc(chi.Router)inargumenttoc.router.Group这是第三方包(chi)的界面:typeRouterinterface{//...//Groupaddsanewinline-Routeralongthecurre

go - 在整个包中扩展接口(interface)

TL;DR:有没有办法扩展一个接口(interface),或者是否有一种关于如何处理多个“数据存储”功能(一个包下的许多模型)的思想流派,同时创建一个可以正确模拟的接口(interface)Controller测试。长话短说:我刚刚实现完AlexEdward'sblogonorganizingdatabaseaccessinGo,并且允许我创建模拟的更好的解决方案之一涉及创建数据存储接口(interface)。在模型包下我有类似下面的代码typeDatastoreinterface{AllPosts()([]Post,error)CreatePost(pPost)error}typeD

go - 在整个包中扩展接口(interface)

TL;DR:有没有办法扩展一个接口(interface),或者是否有一种关于如何处理多个“数据存储”功能(一个包下的许多模型)的思想流派,同时创建一个可以正确模拟的接口(interface)Controller测试。长话短说:我刚刚实现完AlexEdward'sblogonorganizingdatabaseaccessinGo,并且允许我创建模拟的更好的解决方案之一涉及创建数据存储接口(interface)。在模型包下我有类似下面的代码typeDatastoreinterface{AllPosts()([]Post,error)CreatePost(pPost)error}typeD

json - 解码 JSON 时指向接口(interface)的指针与持有指针的接口(interface)

考虑以下结构和接口(interface)定义。typeFoointerface{Operate()}typeBarstruct{Aint}func(bBar)Operate(){//...}现在,如果我们尝试执行以下(playground):varxFoo=Bar{}err:=json.Unmarshal([]byte("{\"a\":5}"),&x)fmt.Printf("x:%+v\nerr:%s\n",x,err)我们得到以下输出:x:{A:0}err:json:cannotunmarshalobjectintoGovalueoftypemain.Foo但是,通过将基础数据替换为

json - 解码 JSON 时指向接口(interface)的指针与持有指针的接口(interface)

考虑以下结构和接口(interface)定义。typeFoointerface{Operate()}typeBarstruct{Aint}func(bBar)Operate(){//...}现在,如果我们尝试执行以下(playground):varxFoo=Bar{}err:=json.Unmarshal([]byte("{\"a\":5}"),&x)fmt.Printf("x:%+v\nerr:%s\n",x,err)我们得到以下输出:x:{A:0}err:json:cannotunmarshalobjectintoGovalueoftypemain.Foo但是,通过将基础数据替换为

pointers - 如何将接口(interface)实现指针转换为接口(interface)指针?

我有一个界面:typeDatastoreinterface{InsertString(strstring)error}我有这个接口(interface)的PostgreSql实现:typeDBstruct{session*sql.DB}func(db*DB)InsertString(strstring)error{returnnil}funcNewDB(user,password,dbNamestring)(*DB,error){dbinfo:=fmt.Sprintf("user=%spassword=%sdbname=%ssslmode=disable",user,password,

pointers - 如何将接口(interface)实现指针转换为接口(interface)指针?

我有一个界面:typeDatastoreinterface{InsertString(strstring)error}我有这个接口(interface)的PostgreSql实现:typeDBstruct{session*sql.DB}func(db*DB)InsertString(strstring)error{returnnil}funcNewDB(user,password,dbNamestring)(*DB,error){dbinfo:=fmt.Sprintf("user=%spassword=%sdbname=%ssslmode=disable",user,password,