草庐IT

go-mocket

全部标签

go - 如何分配常驻内存?

我发现在b:=make([]byte,4096000000)之后,分配的内存是虚拟内存,我想将它们标记为RES(物理内存使用情况,如top所示),如何做这个?rand.Read(b)非常慢。 最佳答案 每一页至少使用一个字节。例如,packagemainimport("fmt""time")funcmain(){b:=make([]byte,2*1024*1024*1024)fmt.Println(len(b))pagesize:=os.Getpagesize()fori:=0;i输出:2147483648顶部:RES2.1g

go - 在 map[string]interface{} 中检查多个键时使用 OR 逻辑

我有一个名为mapped的map[string]interface{}:mappedmap[stringinterface{}我想遍历它以检查这些键是否存在:专栏行数如果是这样,我想将行或列附加到一段名为:列或行数组我知道如果我只需要在映射中查找列,例如列,我可以这样做:varcolumnOrRowArray[]stringifcolumnsOrRows,ok:=mapped["columns"].([]interface{});ok{for_,columnOrRow:=rangecolumnsOrRows{ifcolumnOrRowValueIsString,ok=columnOrR

go - 使用相同的包会污染编译后的二进制文件吗?

长话短说:在包中编写的测试最终会出现在最终导出的包中吗?他们会向编译后的二进制文件添加任何垃圾或重量吗?更长的版本:假设我有一个fooGo包:pkg/foo/bar.gobar_test.go我知道blackboxvswhitebox在go中进行测试的方法。简短回顾一下,我可以:让bar_test.go声明一个foo_test包,或者让它成为主要foo包的一部分。方法1提供了更好的隔离,因为它允许专注于包的公共(public)API,因为它只访问foo的导出标识符。此外,当应用程序代码使用import"pkg/foo"导入foo包时,仅编译包含主要foo包的文件。那很好。[1]但是,在

regex - 查找字符串中是否存在反斜杠 Go

关闭。这个问题需要debuggingdetails.它目前不接受答案。编辑问题以包含desiredbehavior,aspecificproblemorerror,andtheshortestcodenecessarytoreproducetheproblem.这将有助于其他人回答问题。关闭3年前。Improvethisquestion我有这样一个字符串:id=PS\\Old\\Gen我会构建一个正则表达式来查明它是否包含反斜杠;一个接一个地。所以在这种情况下,正则表达式应该找到2次出现,因为有2个\\。我尝试构建查询,但找不到正确的方法。我需要与Go兼容的正则表达式。

string - 在go中遍历字符串字符的最正确方法是什么

我是Go的新手,我想迭代字符串中的字符packagemainimport("fmt")funcmain(){varastring="abcd"fori,c:=rangea{fmt.Printf("%d%s\n",i,c)}}我想要的输出是0a1b2c3d但事实并非如此。我做错了什么? 最佳答案 修复govet和packagefmt格式错误消息(类型rune是类型int32的别名):10:Printfformat%shasargcofwrongtyperune0%!s(int32=97)1%!s(int32=98)2%!s(int32

go - 将结构 B(继承自结构 A) append 到结构 A 的一片中

我有一个继承自结构A的结构B。我有另一个结构C(其中包含一部分结构A),我想将Bappend到C。packagemaintypeAstruct{targetstring}typeBstruct{Avalues[]int}typeCstruct{Cols[]*A}funcmain(){varvalues=[]int{1,2,3}varcol1=C{}varcol2=&B{A:A{target:"txt",},values:values,}col1.Cols=append(col1.Cols,col2)}运行此代码时,会产生错误:不能将col2(type*B)用作append中的type*

go - 为什么存在 sync.Mutex?

为什么sync.Mutex存在,而我们有sync.RWMutex?我可以锁定/解锁rw互斥量。它们之间的主要区别是什么? 最佳答案 确实可以使用sync.RWMutex每当你需要sync.Mutex.我认为两者都存在,因为有很多情况下一个sync.Mutex就足够了(你不需要读写级别的锁),而sync的实现。Mutex更简单:需要更少的内存,而且很可能更快。sync.Mutex只有8个字节:typeMutexstruct{stateint32semauint32}虽然sync.RWMutex是8+16=24字节(它包括一个sync.

go - 如何使用 Go 编程语言对文件名进行排序?

在我的Go项目中,我需要对.json文件进行排序,并在终端上运行此命令时在终端上显示它们的名称gorunmain.go.我编写了一个显示文件夹中所有文件的程序,但我需要对.json文件进行排序。我的代码如下:packagemainimport("fmt""log""os""bytes""io")funcmain(){ifos.Args[1]=="display-json-name"{//readsthedirectorynameandreturnsalistofdirectoryentriesdirname:="."f,err:=os.Open(dirname)iferr!=nil{l

go - 为什么 Go 常量中不允许使用 `math.Sin`?

根据EffectiveGo,函数math.Sin不能用于定义常量,因为该函数必须在运行时发生。此限制背后的原因是什么?浮点一致性?Sin实现的怪癖?还有别的吗?其他语言也支持这种事情。在C中,例如:从版本4.3开始,GCCsupportscompile-timecalculationofthesinefunction.(请参阅“常规优化器改进”部分)。但是,如thisblogpostbyBruceDawson中所述,这可能会导致意想不到的问题。(请参阅“编译时与运行时sin”部分)。这是Go中的一个相关问题吗?还是由于其他原因限制了这种使用? 最佳答案

go - type interface {} 不支持索引

这个问题在这里已经有了答案:typeinterface{}doesnotsupportindexingingolang(3个答案)关闭4个月前。我想从bid中获取值。我已经尝试过data.(map[string]interface{})但它没有用。当我尝试时,它说:"interfaceconversion:interface{}is[]interface{},notmap[string]interface{}"请帮帮我...这是我的代码。url:="https://api.binance.com/api/v1/depth?symbol=RENBTC"a,_:=http.Get(url)