草庐IT

time - 在 Go 中获取 Unix 时间戳的正确方法是什么

在Go中获取Unix时间戳的正确方法是什么?我以为它会是time.Now().Unix()但显然不是。http://play.golang.org/p/KoJADUDxOStime.Now().Unix()告诉我unix时间戳是1257894000而我的浏览器告诉我它是1398351437。www.unixtimestamp.de还告诉我它是1398351704,这是我所期望的。为什么来自Go的那个这么远?顺便说一句,我在本地机器上得到了相同的结果。我错过了什么?更新好吧,事实证明这真的只是play.golang.org上的一个问题。我以为我也在本地测试过它,但我现在又看了一眼,是的,

Go Benchmark 它是如何工作的

我的Go基准测试可以与我的API调用一起使用,但我不太确定下面的含义:$gotestintapi-bench=.-benchmem-cover-v-cpuprofile=cpu.out===RUNTestAuthenticate---PASS:TestAuthenticate(0.00seconds)PASSBenchmarkAuthenticate20000105010ns/op3199B/op49allocs/opcoverage:0.0%ofstatementsokintapi4.349s它如何知道应该调用多少次?我确实有一个以b.N作为循环大小的循环,但Golang如何知道要运

go - 如何检查外部类型是否是内部类型的类型?

如果我有不同形式的用户结构在我的应用程序周围传递,有没有办法检查该嵌入式结构是否是一种外部结构?type(userstruct{namestringemailstring}adminstruct{userlevelstring}) 最佳答案 根据您的需要,您有两种主要方法:reflect.TypeOf,和typeswtich.您将使用第一个来比较一个接口(interface)的类型与另一个接口(interface)的类型。示例:ifreflect.TypeOf(a)==reflect.TypeOf(b){doSomething()}

winapi - 从 unsafe.Pointer 获取特定 byte slice 的最佳(最安全 + 最高性能)方法是什么

我正在尝试转换thisc++去。简而言之,这就是C代码正在做的事情:staticconstchar*pSharedMem=NULL;intsessionInfoOffset;returnpSharedMem+pHeader->sessionInfoOffset;这是我的(伪)go代码:varpSharedMemunsafe.PointersessionInfoLenC.intbyteSlice:=C.GoBytes(pSharedMem,pHeader.sessionInfoLen)returnbyteSlice[pHeader.sessionInfoOffset:]我从来没有真正编写

go - 从终端关闭服务器的正确方法是什么?

我正在尝试使用Go进行一些基本的聊天(服务器+客户端),所以我有一个服务器监听特定端口,我有一个客户端写入这个端口。但是,由于我是新手,所以我不断进行更改并且必须重新启动服务器等。每次我想停止服务器时我都在执行“Ctrl+C”但这显然很愚蠢,因为我必须更改每次编译的端口号......正确的方法是什么?我目前正在做deferln.Close()在建立连接后服务器的主要功能中,但我猜Ctrl+C只是终止进程而不关闭连接?编辑:更多信息。我在Windows上运行cygwin。ps显示没有旧进程,但我在任务管理器中发现了一个“server.exe”(我的服务器文件名为server.go)。

go - 关闭持久连接的正确方法是什么?

我的情况是:连接到Redis的长时间运行的服务器。此服务器等待SIGTERM信号终止。什么是保证在我的应用程序终止后释放连接的正确方法?我知道延迟-真的很棒,但不适用于持久连接,因为我不想为每个操作打开到Redis的连接。谢谢! 最佳答案 如果您想确保一些代码块在退出前执行,您仍然可以使用defer。区别在于它的范围。connection和defer语句的范围应该相同。我不知道您的应用程序是什么,但为了提供一个具体示例,您需要在命令行应用程序的主体中延迟关闭连接,而不是在读取和写入的方法中。你说“因为我不想为每个操作打开与Redis

go - 将 stdout/stderr 重定向到一个函数的最佳方法是什么,该函数反过来格式化消息并将其打印到控制台?

我想捕获所有stdout和stderr消息,解析数据并以我想要的格式打印它们。我如何在go中执行此操作? 最佳答案 您可以使用cmd.CombinedOutput或cmd.Output:out,err:=exec.Command("ls","-al").CombinedOutput()//orout,err:=exec.Command("ls","-al").Output() 关于go-将stdout/stderr重定向到一个函数的最佳方法是什么,该函数反过来格式化消息并将其打印到控制台

go - 从 go 获取 Windows 全名的最佳方法是什么?

在Windows中,我可以运行类似systeminfo|的东西findstr/C:"OSName将Windows全名输出到控制台。我尝试了几种不同的管道输出变体,从一个命令到另一个命令,但我只得到空字符串。示例first:=exec.Command("systeminfo")second:=exec.Command("findstr/C:'OSName'")reader,writer:=io.Pipe()first.Stdout=writersecond.Stdin=readervarbufferbytes.Buffersecond.Stdout=&bufferfirst.Start(

go - Go语言内置的http服务器是生产服务器吗?

我没有在文档中看到那个答案,https://golang.org/pkg/net/http/.它看起来很完整,但通常我发现从不推荐使用内置的Web服务器,例如Python、PHP等,除了开发之外。 最佳答案 是的。如果您这样使用它,它就是一个“生产”服务器。你没有理由不这样做。它旨在让您将其用于实际生产应用程序,而不仅仅是用于测试和使用该语言。 关于go-Go语言内置的http服务器是生产服务器吗?,我们在StackOverflow上找到一个类似的问题: ht

go - 在 Sublime (Golang)中重命名变量/函数的常见做法是什么?

静态类型语言的优势之一是重构工具。至于Golang,我觉得只要一个rename工具就可以跨文件工作了。是否有用于sublime文本编辑器的工具/插件?目前可用的方法:Ctrl-D多光标选择,在文件中工作正常。gorename在命令行中工作。是否可以重命名在sublime中(无需切换到命令行并返回)? 最佳答案 我相信SublimeText支持搜索/替换文件。那会有什么问题吗?电子邮箱:mansubl 关于go-在Sublime(Golang)中重命名变量/函数的常见做法是什么?,我们在S