Tag:

从C调用Go函数

我正在尝试创build一个用C语言编写的静态对象(比如说一个内核模块)。 我find了关于从Go调用C函数的文档,但我还没有find很多关于如何去其他方式。 我发现这是可能的,但是很复杂。 这是我发现的: 关于C和Go之间callback的博客文章 Cgo文档 Golang邮件列表文章 有没有人有这方面的经验? 总之,我试图创build一个完全用Go编写的PAM模块。

这个golang代码有什么问题?

虽然SayHello()按预期执行,但goroutine不打印任何内容。 package main import "fmt" func SayHello() { for i := 0; i < 10 ; i++ { fmt.Print(i, " ") } } func main() { SayHello() go SayHello() }

Go:单值上下文中的多个值

由于Go中的error handling,我经常会得到多个值函数。 到目前为止,我pipe理这个的方式非常混乱,我正在寻找最佳实践来编写更简洁的代码。 假设我有以下function: type Item struct { Value int Name string } func Get(value int) (Item, error) { // some code return item, nil } 我怎样才能优雅地分配一个新的variablesitem.Value 。 在介绍error handling之前,我的函数只是返回item ,我可以简单地这样做: val := Get(1).Value 现在我这样做: item, _ := Get(1) val := item.Value 没有办法直接访问第一个返回的variables? 非常感谢

隐藏零值,了解为什么golang在这里失败

在这种情况下,我不明白如何正确地保证某些东西不是nil 。 package main type shower interface { getWater() []shower } type display struct { SubDisplay *display } func (d display) getWater() []shower { return []shower{display{}, d.SubDisplay} } func main() { // SubDisplay will be initialized with null s := display{} // water := []shower{nil} water := s.getWater() for _, x := range water { […]

在go中键入转换接口片

我很好奇,为什么go不会隐式地把T转换为[]interface{}当它隐式地将T转换为interface{} 。 有没有什么不重要的转换,我失踪了? 例: func foo([]interface{}) { /* do something */ } func main() { var a []string = []string{"hello", "world"} foo(a) } go build抱怨 在函数参数中不能使用(type [] string)作为type [] interface {} 如果我试图明确地做,同样的事情: b := []interface{}(a)抱怨 无法将(type []string)转换为键入[] interface {} 所以每次我需要做这个转换(这似乎出现了很多),我一直在做这样的事情: b = make([]interface{}, len(a), len(a)) for i := range a { b[i] = a[i] } […]

Go有什么用途?

在Go语言规范中 ,它提到了标签的简要概述: 字段声明后面可以跟一个可选的字符串字面标记,它成为相应字段声明中所有字段的属性。 标签通过反射界面变得可见,但是被忽略。 // A struct corresponding to the TimeStamp protocol buffer. // The tag strings define the protocol buffer field numbers. struct { microsec uint64 "field 1" serverIP6 uint64 "field 2" process string "field 3" } 这是一个非常简短的解释海事组织,我想知道如果有人可以提供我用这些标签将是什么?

我怎样才能配置从码头集装箱去sdk和GOPATH?

我试图配置与Jetbrains Gogland和码头工人组成golang项目。 我想使用GOPATH并从码头集装箱出发。 我的意思是从容器中使用去安装自动完成等没有在本地机器上安装golang。 项目结构是: project root docker-compose.yml back| Dockerfile main.go some other packages front| all the front files… 之后,我想将我的back文件夹部署到docker容器中的/go/src/app 。 问题是,当我开发项目时,我不能使用自动完成,因为这个项目不在我的本地GOPATH中,并且在Docker容器和本地机器上有不同的golang版本,我已经阅读了这个问题,但是我仍然可以“解决我的问题。