我在Golang中找不到“克隆”方法约定,但似乎必须要有一个。
我只看到了内置方式*clonedObj = *obj
,但是它太底层了,无法处理(必要时)类似struct { member *CompositionObj }
我怀疑“ func(obj ClassA)Clone()interface {} interface”原型是否可以工作,因为调用obj2 := obj.Clone()
将“松散”为ClassA设置的方法,并且需要像obj2.(*ClassA)
随后那样的显式代码。
请告知工作方向。
好的,虽然没有其他人可以给我适当的参考,但我找到了一些参考示例,介绍了如何克隆自己的Go和想要共享。
(如果这个答案对您有用,请只给我几个投票。我不是要赢得选票。欢迎其他更好的答案和评论)
我在“ github.com/jinzhu/gorm”包(数据库的ORM库)中找到了该原型,以供参考:
func (s *DB) clone() *DB {
db := &DB{
...
}
...
return db
}
软件包“ golang.org/x/net/html/atom”中的相似模式:
func (n *Node) clone() *Node {
m := &Node{
Type: n.Type,
...
}
...
return m
}
如果Clone()的调用方在克隆时始终知道您的对象类型,那么上述原型就足够了。(并且您需要大写Clone()
以使该方法成为“ public”)
但是,如果您希望变量可以包含类似基本接口的任何对象的高级功能,这是我的示例:
func (t *T) Clone() YourBaseInterface
YourBaseInterface在哪里:
type YourBaseInterface interface {
Clone() YourBaseInterface
OtherMethod1()
...
}
或者可以只使用interface{}
代替而不是YourBaseInterface
返回,然后像obj2 := obj.Clone().(*YourBaseType)
克隆后一样进行类型转换。
这种原型有一个缺点。becase的Golang不支持此原型内置的,该Clone()
方法不会在一些语言的功能调用,例如,当你copy(dest, src)
一个[]YourTypeWithClone
切片。相反,它仍然执行简单的*elem2 = *elem1
结构复制。解决方案可能不使用这些内置函数,或者您可能会回过头来设计类struct成员,以便在可能的情况下进行纯复制就足以实现其复制目的。
当我编译以下代码时,我看到了与哈希相关的错误。 /tmp/ccCQFQ4N.o: 在函数“标准::__detail::_Hash_code_base ,标准::矢量 然后,我介绍了下面自己的Hash,问题就解决了。 问题 1 警告:基类“结构”std::unary_function,无符号整型 问题2 非常感谢。
问题内容: 我想用 具有要求构造函数参数的Exception类型。像这样: 有没有一种方法可以创建一个将我的参数值传入的供应商? 问题答案: 当然。
当我在中包含LoginViewModelProviderModule时,我无法使用LoginViewModelProviderModule提供LoginViewModel,但当我在ActivityBuilderModule类的@Module注释中包含它时,它可以工作。 BaseApplicationComponent ActivityBuilderModule LoginViewModelProv
我想用 使用请求构造函数参数的异常类型。类似这样的事情: 有没有一种方法可以创建一个供应商来传递我的参数值?
如果我创建一个提供者并将其绑定到一个类,就像这样 然后
我想在汇流提供的连接器上进行一些定制。有人能指导我怎么做吗?在我的用例中,我使用的是Http接收器连接器(https://www.confluent.io/hub/confluentinc/kafka-connect-http). 我找不到相同的git代码。