草庐IT

C++:在指针集中查找

全部标签

networking - 如何使用go编程语言在给定IP地址的情况下在网络上查找主机名

使用go编程语言,我能够找到给定主机名的IP地址,但我正在寻找的是找到给定ip地址的主机名。我尝试研究“net”包,但没有成功。这在golang中可行吗?请指教。 最佳答案 LookupAddr应该做你正在寻找的东西:LookupAddrperformsareverselookupforthegivenaddress,returningalistofnamesmappingtothataddress. 关于networking-如何使用go编程语言在给定IP地址的情况下在网络上查找主机名

Go type assert nil 到指针类型

这个问题在这里已经有了答案:ConvertnilinterfacetopointerofsomethinginGolang?(1个回答)关闭7年前。为什么我不能将nil类型断言为指针类型?这背后的逻辑是什么?packagemainfuncmain(){varsinterface{}=nilvarp*string=nilvarq*string=s.(*string)_=q_=p}

reflection - 查找对象支持的所有导入接口(interface)

我有一个类似os.Stdout的对象,我想知道它是否支持我平台上的io.WriteCloser。我可以获得我的对象的类型,但它没有告诉我任何关于接口(interface)的信息。packagemainimport("fmt";"reflect";"os")funcmain(){fmt.Println(reflect.TypeOf(os.Stdout))}此代码将*os.File打印到控制台。如果os.File匹配io.WriteCloser方法,我可以手动查找,但我很想知道该对象支持的所有接口(interface)。 最佳答案 这不

arrays - 传递 slice 而不是指针

我在读一本书时偶然发现了有关传递参数的主题。书上说将数组的一部分传递给函数需要24个字节。并且它声明最好传递slice,因为不会复制底层数组。但是传递一个指针不是只需要8个字节吗?书:行动起来开销是否如此之小以至于传递slice是可行的方法?与传递指针相比 最佳答案 复制任何小于缓存行(在大多数常见CPU上通常为128字节)的内容基本上需要相同的时间,因此8字节和24字节之间没有真正的区别。通常更多的时间花在取消引用指针上而不是复制任何东西上小的。由于通过指针操作数组的默认方法是在slice中,因此使用slice而不是指向数组的指针

http - Golang,零指针取消引用或无效内存地址

我的代码运行完美,直到我想使用许多并发调用来扩展它。它通过向客户端询问Get请求来工作。这是我得到的:panic:runtimeerror:invalidmemoryaddressornilpointerdereference[signal0xbcode=0x1addr=0x0pc=0x400da9]goroutine125[running]:runtime.panic(0x697480,0x850d13)/usr/lib/go/src/pkg/runtime/panic.c:279+0xf5main.concurrent(0x25e5)/home/maker/go/src/GoBot

pointers - 无法反射(reflect)不返回指针,编译器在转换时出现 panic ?

围绕这样的东西编写的代码导致了一个问题:funcCreateNewItemOfType(returnTypereflect.Type)(interface{}){returnreflect.New(returnType).Interface();}...如何实际返回returnType的结构而不是指向结构的指针,如reflect在这里创建的那样?编译器可以很好地构建它,但在运行时会出现panic,但不会在此处的return调用前接受星号,以便实际返回结构而不是指针。 最佳答案 reflect.New()创建指定类型的新值,并返回re

unit-testing - Golang中Stubb接口(interface)指针参数

假设我有一个将客户端ID映射到net.Conns(接口(interface))的存储。为了简单起见,它只是在其中隐藏了一个map并将map键作为参数。我想消除对值复制的需求,而且我来自Java领域,因此映射应该将id映射到net.Conn指针似乎是合乎逻辑的。typeStoragestruct{connsmap[int]*net.Conn}func(s*Storage)Add(idint,conn*net.Conn){s.conns[id]=conn}...methodsforinitialisingnewstorage,getting,deleting,maybegivinglist

pointers - 将 reflect.AppendSlice 的结果分配给指针

我在将这段代码(实际上是在slice上左旋转)翻译成接受interface{}作为输入参数的更通用的版本时遇到了麻烦。funcrotate(a*[]int,iint){x,b:=(*a)[:i],(*a)[i:]*a=append(b,x...)}我在期末作业上遇到了麻烦:funcrotateSlice(ainterface{},iint){v:=reflect.ValueOf(a)x,b:=v.Elem().Slice(0,i),v.Elem().Slice(i,v.Elem().Len())*a=reflect.AppendSlice(b,x)}错误信息是invalidindire

arrays - 如何从指向单个对象的指针重新转换指向数组的指针

我尝试在我的porogram中找到方法,使用interface{}作为特定函数的参数,将beetwen类型指针解析为指向单个对象的数组形式的指针。这次我使用以下方式得到这个结果:funcobject(vinterface{}){ifstrings.HasPrefix(reflect.TypeOf(v).String(),"*[]"){//pointertoarray}else{//pointertosingleobject}}以上方法可行,但对我来说这不是干净的代码。我认为存在一些更好的方法来使用golang包作为类型来解决这个问题,但现在我不知道如何解决这个问题,所以请您提出建议。附

pointers - 如何在 go 中获取字符串变量的数据指针?

我想获取一个字符串变量的数据指针(如c++中的string::c_str())以传递给一个c函数,但我发现这不起作用:packagemain/*#includevoidPrintln(constchar*str){printf("%s\n",str);}*/import"C"import("unsafe")funcmain(){s:="hello"C.Println((*C.char)(unsafe.Pointer(&(s[0]))))}编译错误信息是:“无法获取s[0]的地址”。这没问题,但我怀疑它会导致不必要的内存应用。有没有更好的方法获取数据指针?C.Println((*C.ch