jjzjj

embedding

全部标签

interface - 嵌入式结构的覆盖行为

我有一个XY类型,它有各种字段和方法(几十个)。typeXYstruct{NamestringSomeValueint...}func(xy*XY)Do1(){...}func(xy*XY)Do2(){...}func(xy*XY)Do3(){...}...现在我想定义嵌入XY的第二种类型,保留所有字段和方法。但我确实想修改一些功能。typeABstruct{XY}func(ab*AB)Do2(){...}到目前为止一切顺利。现在我想将AB传递给一个接受XY的函数。funcSomeFunc(xy*XY){...}这就是我绊倒的地方,没有多态性。我可以将*AB.XY传递给该函数,但这将不

go - Go中嵌入式私有(private)接口(interface)的可见性

如果我将一个小写名称(私有(private))的接口(interface)嵌入到另一个大写名称(公共(public))的接口(interface)中,我假设定义包之外的代码看不到嵌入的私有(private)接口(interface)。这个假设是否正确?typebinterface{G()int}typeAinterface{F()stringb}定义包之外的代码无法“看到”嵌入的b,对吗?外部代码不能通过A的实例调用G。 最佳答案 在界面中嵌入未导出的界面接口(interface)嵌入接口(interface)无非就是合并metho

go - Go中嵌入式私有(private)接口(interface)的可见性

如果我将一个小写名称(私有(private))的接口(interface)嵌入到另一个大写名称(公共(public))的接口(interface)中,我假设定义包之外的代码看不到嵌入的私有(private)接口(interface)。这个假设是否正确?typebinterface{G()int}typeAinterface{F()stringb}定义包之外的代码无法“看到”嵌入的b,对吗?外部代码不能通过A的实例调用G。 最佳答案 在界面中嵌入未导出的界面接口(interface)嵌入接口(interface)无非就是合并metho

scripting - 在 Go 中嵌入脚本语言

是否可以在Go中嵌入一种语言?我需要它来在我的应用程序中创建插件。 最佳答案 我在VirtualMachinesandLanguages上找到了列表.Gelo-可扩展、可嵌入的解释器GoForth-一个简单的Forth解析器GoLightly-具有运行时可配置指令集的灵活轻量级虚拟机Golog-Go中的Prolog解释器Minima-在Go中实现的语言。RubyGoLightly-TinyRbtoGo的实验端口forego-第四个虚拟机go-python-绑定(bind)CPythonC-APIGoEmPHP-这个包是为将PHP嵌入

scripting - 在 Go 中嵌入脚本语言

是否可以在Go中嵌入一种语言?我需要它来在我的应用程序中创建插件。 最佳答案 我在VirtualMachinesandLanguages上找到了列表.Gelo-可扩展、可嵌入的解释器GoForth-一个简单的Forth解析器GoLightly-具有运行时可配置指令集的灵活轻量级虚拟机Golog-Go中的Prolog解释器Minima-在Go中实现的语言。RubyGoLightly-TinyRbtoGo的实验端口forego-第四个虚拟机go-python-绑定(bind)CPythonC-APIGoEmPHP-这个包是为将PHP嵌入

reflection - 使用嵌入在结构中的接口(interface)进行反射 - 如何检测 "real"函数?

我现在遇到的情况与此线程中询问的情况相同:Meaningofastructwithembeddedanonymousinterface?typeAinterface{Foo()string}typeBstruct{Abarstring}习惯上,从OOP语言的背景来看,这个模式对我来说“试图说”的是B必须实现接口(interface)A。但我现在明白“Go是不同的”。所以,这不是我最初期望的编译时检查,而是很高兴编译有或没有func(B)Foo()string{....}现在。正如上面的问题所指出的(解释):“在结构中使用嵌入式接口(interface)非常适合您只想实现接口(inter

reflection - 使用嵌入在结构中的接口(interface)进行反射 - 如何检测 "real"函数?

我现在遇到的情况与此线程中询问的情况相同:Meaningofastructwithembeddedanonymousinterface?typeAinterface{Foo()string}typeBstruct{Abarstring}习惯上,从OOP语言的背景来看,这个模式对我来说“试图说”的是B必须实现接口(interface)A。但我现在明白“Go是不同的”。所以,这不是我最初期望的编译时检查,而是很高兴编译有或没有func(B)Foo()string{....}现在。正如上面的问题所指出的(解释):“在结构中使用嵌入式接口(interface)非常适合您只想实现接口(inter

json - 使用自定义 MarshalJSON() 方法嵌入结构的惯用方法

给定以下结构:typePersonstruct{Namestring`json:"name"`}typeEmployeestruct{*PersonJobRolestring`json:"jobRole"`}我可以按预期轻松地将Employee编码为JSON:p:=Person{"Bob"}e:=Employee{&p,"Sales"}output,_:=json.Marshal(e)fmt.Printf("%s\n",string(output))输出:{"name":"Bob","jobRole":"Sales"}但是当嵌入式结构具有自定义MarshalJSON()方法时...fu

json - 使用自定义 MarshalJSON() 方法嵌入结构的惯用方法

给定以下结构:typePersonstruct{Namestring`json:"name"`}typeEmployeestruct{*PersonJobRolestring`json:"jobRole"`}我可以按预期轻松地将Employee编码为JSON:p:=Person{"Bob"}e:=Employee{&p,"Sales"}output,_:=json.Marshal(e)fmt.Printf("%s\n",string(output))输出:{"name":"Bob","jobRole":"Sales"}但是当嵌入式结构具有自定义MarshalJSON()方法时...fu

戈朗 : Type assign with another struct

所以我这里有这个例子:GoPlaygroundpackagemainimport("fmt")typeCirclestruct{}func(cCircle)Something(){fmt.Println("something")}typeRectanglestruct{Circle}func(aRectangle)SomethingElse(){fmt.Println("SomethingElse")}typeFormRectanglefuncmain(){c:=Form{}c.Circle.Something()c.SomethingElse()}我不明白为什么我可以打电话Somet