草庐IT

SCAN_POINTER_START

全部标签

go - scanner.Scan() 在 Linux 但不是 Windows 上阻塞直到退出

我正在开发一个devtool,该工具的功能之一是生成一个子进程并读取该进程的标准输出流。我需要将每一行输出读入内存以便以某种方式处理它(该工具的future功能之一将涉及处理日志并将它们发送到外部位置,例如日志管理器和仪表板等)所以这就是我不这样做的原因不要简单地做cmd.Stdout=os.Stdout)它运行良好,已经运行了一段时间,但显然只在Windows上运行。我有一个相当困惑的bugreport最近有用户报告输出不是“实时”的,在Linux上进行测试后,我发现这是真的,并且输出仅在进程退出时转储到控制台。这是扫描阅读器的代码,在Windows上按预期工作,但在Linux上或在

go 函数 - panic : runtime error: invalid memory address or nil pointer dereference

在此先感谢大家的帮助。我已经在问题发生的第41、42和58行做了标记。我无法追踪引发错误的原因。似乎所有变量都已正确分配。我使用命令:gorunfile.go'command''ipaddress'ex.-gorunfile.gouptime8.8.8.8错误是:panic:runtimeerror:invalidmemoryaddressornilpointerdereference[signalSIGSEGV:segmentationviolationcode=0x1addr=0x0pc=0x54fb36]goroutine20[running]:golang.org/x/cryp

pointers - 时间.时间 : pointer or value

Godocssay(强调):Programsusingtimesshouldtypicallystoreandpassthemasvalues,notpointers.Thatis,timevariablesandstructfieldsshouldbeoftypetime.Time,not*time.Time.ATimevaluecanbeusedbymultiplegoroutinessimultaneously.最后一句话(关于同时在多个goroutine中使用时间值)是它们“通常”应该作为值而不是指针存储和传递的唯一原因吗?这对其他结构也很常见吗?我尝试在time.Timede

Go:将 unsafe.Pointer 转换为函数指针,反之亦然

在C中,您可以将函数指针放入void指针数组中,然后将它们转换回任何类型的函数指针:externint(*fn1)(void);externvoid(*fn2)(int);voidfoo(void){void*array[2];inti;/*implicitcastfromfunctionpointertovoidpointer*/array[0]=fn1;array[1]=fn2;for(i=0;i我需要在Go中使用unsafe.Pointers做同样的事情。问题是:可以将Go函数指针转换为unsafe.Pointer吗?能否将unsafe.Pointer转换为与原始函数指针类型不同

go - exec.start 中的这部分代码是什么意思?

我看了exec.Start的代码,有些地方让我很困惑。[]F中的(*Cmd).stdin/out/err,(*Cmd).stdXX是什么意思?291typeFfunc(*Cmd)(*os.File,error)292for_,setupFd:=range[]F{(*Cmd).stdin,(*Cmd).stdout,(*Cmd).stderr}{293fd,err:=setupFd(c)294iferr!=nil{295c.closeDescriptors(c.closeAfterStart)296c.closeDescriptors(c.closeAfterWait)297return

go - sql : Scan error on column index 38: destination not a pointer

使用Golang和内置的database/sql库和postgreslib/pq库,我试图从一个数据库中读取一些空值一些记录。代码可以编译,但是当我尝试运行它时出现以下错误。sql:Scanerroroncolumnindex38:destinationnotapointer这是我的代码:rows,err:=db.Query(`SELECT*FROMobservationsWHEREprofile_id=$1ANDyear=$2ANDmonth=$3`,id,date.Year(),int(date.Month()))iferr!=nil{log.Fatal(err)}deferrow

postgresql - panic : sql: expected 1 destination arguments in Scan, 不是 <number> golang、pq、sql

我正在使用db.QueryRow获取数据。使用Postgresql创建的数据类型为jsonb的表。下面是golang中的代码m:=Message{}err:=db.QueryRow("SELECTdataFROMmessageWHEREdata->>'id'=$1",id).Scan(m.Id,m.Type,m.Title)panic:sql:扫描中预期有1个目标参数,而不是3个。根据row.Scan可以传递n个目标参数。这段代码有什么问题? 最佳答案 查询每行返回一个字段。代码正在扫描三个。也许你想要这样的东西:err:=db.Q

pointers - 戈朗 Cgo : panic: runtime error: cgo argument has Go pointer to Go pointer

我正在使用一个C库,与下面不同,我无法控制它。我需要将指向也包含指针的数组的指针传递给C函数。packagemain/*#includetypedefint*pInt;voidfoo(pIntp[]){printf("foo()\n");}*/import"C"import"unsafe"funcmain(){variC.intvarp1C.pInt=(*C.int)(unsafe.Pointer(&i))varp2C.pInt=(*C.int)(unsafe.Pointer(&i))varps[]C.pInt=[]C.pInt{p1,p2}C.foo(unsafe.Pointer(&

google-app-engine -/_ah/start 在 AppEngine 上的 Go 中从未被调用

当我将我的Go应用程序部署到GAE时,永远不会调用/_ah/start端点。当我运行以下代码时,日志不包含“STARTING”条目并且/没有设置X。我错过了什么?server.go:packagemainimport("net/http""google.golang.org/appengine""google.golang.org/appengine/log")varXstringfuncinit(){http.HandleFunc("/_ah/start",start)http.HandleFunc("/",meh)}funcstart(whttp.ResponseWriter,r*

c - 当C库使用不透明结构指针时,如何解决cgo中的 "bad pointer in write barrier"panic

我目前正在围绕C库编写Go包装器。该C库使用不透明的结构指针来隐藏界面中的信息。但是,底层实现将size_t值存储在那里。这会导致生成的程序出现运行时错误。重现问题的最小工作示例如下所示:main.go:packagemain/*#include"stddef.h"//Createanopaquetypetohidethedetailsoftheunderlyingdatastructure.typedefstructHandlePrivate*Handle;//Inreality,theimplementationusesatypederivedfromsize_tfortheHan