草庐IT

big_method

全部标签

methods - 为什么 Go 中的方法只能声明在同一个包中定义的类型上?

GoTour说如下:Youcanonlydeclareamethodwithareceiverwhosetypeisdefinedinthesamepackageasthemethod.Youcannotdeclareamethodwithareceiverwhosetypeisdefinedinanotherpackage(whichincludesthebuilt-intypessuchasint).除了避免每个人都根据int和string构建自己的方法之外,还有其他原因吗?我用Google搜索了一下,但找不到任何引用它的内容。 最佳答案

go - 设计Go包: when I should define methods on types?

假设我有一个typeTint类型,并且我想定义一个对此类型进行操作的逻辑。我应该使用什么抽象?何时使用?在该类型上定义方法:func(Tt)someLogic(){//...}定义函数:funcsomelogic(Tt){//...} 最佳答案 在某些情况下,您倾向于使用方法:改变接收者:修改对象字段的事物通常是方法。对于您的用户,x.Foo会修改X而不是Foo(x)会令您感到惊讶。接收者的副作用:如果对象以微妙的方式对对象/通过对象具有副作用,则它们通常是某种类型的方法,例如写入struct的一部分的网络连接,或通过指针或slic

json - 出现错误 : math/big: cannot unmarshal into a *big. Int

我正在尝试将json字符串解码为golang中的大整数。我收到以下错误。还有另一种方法可以使它起作用吗?Therewasanerror:math/big:cannotunmarshal"\"82794247871852158897004947856472973914188862150580220767211643167985440428259\""intoa*big.Int代码:Playground:https://play.golang.org/p/F5RMehTau8epackagemainimport("fmt""math/big""encoding/json")typeSign

mongodb - 如何通过golang中的mgo在mongo中插入math/big.Int

我有一个包含math/big.Int字段的结构。我想使用mgo将结构保存在mongodb中。在我的情况下,将数字保存为字符串就足够了。我查看了可用字段的标签,没有任何接缝允许自定义序列化程序。我期待实现一个类似于encoding/json.Marshaler的接口(interface),但我在文档中找不到这样的接口(interface)。这是我想要我需要的一个简单例子。packagemainimport("labix.org/v2/mgo""math/big")typePointstruct{X,Y*big.Int}funcmain(){session,err:=mgo.Dial("l

methods - Go嵌入结构调用子方法而不是父方法

这里是带有一个接口(interface)、一个父结构和2个子结构的Go代码示例packagemainimport("fmt""math")//ShapeInterface:definesmethodstypeShapeInterfaceinterface{Area()float64GetName()stringPrintArea()}//ShapeStruct:standardshapewithanareaequalto0.0typeShapestruct{namestring}func(s*Shape)Area()float64{return0.0}func(s*Shape)GetN

Golang : Convert byte array to big. Int

我正在尝试从存储在字节数组中的模数和指数创建RSA公钥。经过一些实验后,我得到了以下结果:funcbytes_to_int(b[]byte)(accuint64){length:=len(b)iflength%4!=0{extra:=(4-length%4)b=append([]byte(strings.Repeat("\000",extra)),b...)length+=extra}varblockuint32fori:=0;i这似乎可行(尽管我不相信没有更好的方法)。我的下一步是将其转换为使用math/big以处理更大的数字。我可以看到一个Lsh函数来执行作为引用,我尝试导入的公钥

methods - golang区分T和*T上的方法集的原因是什么?

这是我学习围棋时最困惑的地方。我们都知道T上的方法只影响T的副本,*T上的方法会影响T上的实际数据。为什么T上的方法也可以被*T使用,反之则不行?那么,你能给我一个例子(或理由)说明为什么他们不允许T使用*T上的方法吗?这种设计的优缺点是什么? 最佳答案 这里有很多答案,但没有一个能回答为什么会这样。首先让我们假设您有一个*T并想调用一个接受T的方法。要做到这一点,您需要做的就是将*yourT(其中*用于取消引用指针)传递给功能。这保证是可能的,因为您只是在已知位置复制内存块。现在假设您有一个T并且想要一个*T。您可能认为您可以只执

methods - Go 中的方法图

在某些情况下(如添加、删除等),我调用了几种方法。然而,随着时间的推移,案例数量在增加,我的switch-case也越来越长。所以我想我会创建一个方法图,比如Gomapoffunctions;这里函数的映射是微不足道的。但是,是否可以在Go中创建方法的映射?当我们有一个方法时:func(f*Foo)Add(astring,bint){}下面的语法会产生编译时错误:actions:=map[string]func(a,b){"add":f.Add(a,b),}是否可以在Go中创建方法映射? 最佳答案 是的。目前:actions:=ma

去划分大量的数字(big.Int)

我正在尝试对两个大数进行除法(例如,尝试将50!除以18!)并且我设置了两个big.Int变量。first.MulRange(1,50)second.MulRange(1,18)我如何划分数字(最好是整数除法)?谢谢! 最佳答案 HowcanIdividethenumbers通过调用Div()Int(在本例中)数据类型的方法。(“数学/大”包)first:=new(big.Int).MulRange(1,50)second:=new(big.Int).MulRange(1,18)fmt.Printf("First:%s\n",fir

git - 将 big bzr 存储库转换为 git,会发生什么?

我正在尝试将一些旧的Bazaar存储库转换为git,虽然一切似乎都进行得很顺利,但我有点不确定它是否真的像它声称的那样顺利。我的Bazaar存储库的结构如下:repo中继产品功能/功能分支X功能/功能分支我正在使用快速导出/快速导入方法在bzr和git之间进行迁移。最初,我使用--export-marks迁移“主干”,如下所示:bzrfast-export--export-marks=../$1/marks.bzr../$1/trunk|gitfast-import--export-marks=../$1/marks.bzr--export-marks=../$1/marks.git$