草庐IT

go-admin

全部标签

go - 对为什么这个 cgo 代码 panic 感到困惑

我想写一个使用golang调用c函数的demo,写了这个文件,发现会出现panic,不知道为什么。首先是一个c头文件p.h:voidoutput(char*str,ints);voidcc(char*str);二、一个c文件p.c:#include#include#includevoidoutput(char*str,ints){fflush(stdout);sleep(s);printf("%s",str);}voidcc(char*str){printf("%s",c_ccB(str));}很简单,go代码一个output函数,go代码一个cc函数调用c_ccB,最后一个go代码文

go - 通过 SetDeadline() 为 TCP 监听器设置超时

我正在尝试实现非阻塞Accept(),目前为止最好的是以下代码片段(它是一个有效的Gov1.6.2程序):packagemainimport("net""log""time")funccreateClient(){tcpConn,err:=net.DialTCP("tcp4",nil,&net.TCPAddr{IP:net.IPv4(127,0,0,1),Port:12819,})iferr!=nil{log.Fatalln("Errorconnectingtotheserver!")}log.Println("Managedtodial!")tcpConn.Close()}funcm

go - 如何切换数据库连接并将其共享到 Golang 中的模型? (Revel + Gorm)

我想像https://github.com/thiagopradi/octopus这样设置数据库分片在Revel+Gorm(或Golang中的任何其他ORM)中。我将在securityfilter中获取数据库连接字符串(这是一个自定义过滤器,添加在revel的参数过滤器之后)。现在我需要在下一个名为dbfilter的自定义过滤器中切换数据库连接并且还需要在revel应用程序启动时实现数据库连接池。 最佳答案 首先是在初始化时准备好数据库连接(只调用一次):db1,err:=gorm.Open(dbdriver,dboption)//

go - 为什么 goroutine 中的 fmt.Println 不打印一行?

我有以下代码:packagemainimport"net"import"fmt"import"bufio"funcmain(){conn,_:=net.Dial("tcp","irc.freenode.net:6667")reader:=bufio.NewReader(conn)gofunc(){str,err:=reader.ReadString('\n')iferr!=nil{//handleitfmt.Println(err)}fmt.Println(str)}()}如果我没有从goroutine中的缓冲区读取的代码,它会输出这样的消息,这是我期望发生的情况::zelazny.f

Go - 如何复制接口(interface)的 slice ?

我正在尝试使用辅助数组实现简单的合并排序。我有typebyString[]string实现了Less、Swap和Len方法。它基本上遵循Go的sort包的接口(interface)。但是,我在选择将byStringslice复制到临时数组的最佳路径时遇到了一些困难。请帮助我摆脱Java的多态性世界,使其与Go一起工作。funcmerge(dataInterface,lo,mid,hiint){i,j:=lo,mid+1//HowdoIcopydata'selementstoanewslicecalledaux?} 最佳答案 使用内置

go - 如何根据日期过滤集合并将其分配给 map

我有一个表示购买的结构:typePurchasestruct{idint64UserIdint64CreatedAttime.Time}现在我收集了这些购买的东西。在UI方面,我这样做:获取当前日期,并显示最近2周的日期。如果购买在某个日期内,则显示它。所以它看起来像:SundayMay29th-date/timestamppurchaseid,amount,etc.-date/timestamppurchaseid,amount,etc.SaturdayMay28th-date/timestamppurchaseid,amount,etc.FridayMay27th....(past

go - 调用 log.Fatalln 时是否调用延迟函数?

db,err:=sql.Open("postgres","…")iferr!=nil{log.Fatalln(err)}deferdb.Close()tpl,err:=template.ParseGlob("")iferr!=nil{log.Fatalln(err)}如果template.ParseGlob("")返回错误,db.Close()是否仍在调用? 最佳答案 不,延迟函数没有运行。这是对log.Fatal的描述:FatalisequivalenttoPrint()followedbyacalltoos.Exit(1).lo

go - 使用 golang 从 S3 读取多个文件

我是golang新手。我想从AmazonS3读取多个文件。我正在使用s3gof3r图书馆。go例程如下:fori:=1;i如果我有大约200个文件(即从200个文件读取200个go例程),这段代码工作正常,但如果我必须读取更多文件(我必须读取超过10,000个文件),它就会崩溃我得到的错误是panic:runtimeerror:invalidmemoryaddressornilpointerdereferencepanic(0x39fde0,0xc8200100f0)/usr/local/go/src/runtime/panic.go:464+0x3e6bytes.(*Buffer).

go - 如何在Workiva/go-data structures/中使用b tree/plus

我一直需要二叉树的实现。我在这里找到了一个。https://github.com/Workiva/go-datastructures/tree/master/btree/plus但我不太确定如何使用它。这个repo中的其他数据结构非常简单。只需调用他的包并运行这些方法。但是这个btree有点令人困惑我只是想要一个简单的示例,说明如何创建、插入和检索由此包创建的树。创建btree/plus插入key检索范围 最佳答案 godoc因为它说“在撰写本文时,树还没有完全完成”,而且它似乎根本没有公开用于创建树的公共(public)接口(in

go - 从 exec.Command 输出解析整数

我目前正在尝试从我的Go程序中运行一个命令,并从响应中解析一个整数。该命令返回如下输出:6fyb_src/ex1.fyb(1)wins!使用strings.Split和strings.TrimSpaces拆分行并删除空格效果很好。但是,在尝试将数字解析为整数时出现以下错误:panic:strconv.ParseInt:parsing"0\r1\r2\r3\r4\r5\r6":invalidsyntax但是将我尝试解析的字符串打印到终端会产生以下结果:6我不太确定从这里到哪里去。这个数字对我来说显然像一个整数。错误消息也没有用(至少对我而言)。有人有想法吗?编辑:我正在运行的代码out,