C导入后Go中的main()未运行

C导入后Go中的main()未运行,c,go,cgo,C,Go,Cgo,我正在尝试导入一些C代码,以便在我的Golang应用程序中使用。我真的是新手,所以我很可能在这里做了一些愚蠢的事情: 我在主目录中有一个文件main.go,在/yolo子目录中有yolo.go,还有我所有的C代码 yolo.go package yolo import "C" func Vals() string { return "Good to go!" } package main import "fmt" import "./yolo" func main() {

我正在尝试导入一些C代码,以便在我的Golang应用程序中使用。我真的是新手,所以我很可能在这里做了一些愚蠢的事情:

我在主目录中有一个文件
main.go
,在
/yolo
子目录中有
yolo.go
,还有我所有的C代码

yolo.go

package yolo

import "C"

func Vals() string {
    return "Good to go!"
}
package main

import "fmt"
import "./yolo"

func main() {
    fmt.Printf(yolo.Vals())
    fmt.Printf("test")
}
main.go

package yolo

import "C"

func Vals() string {
    return "Good to go!"
}
package main

import "fmt"
import "./yolo"

func main() {
    fmt.Printf(yolo.Vals())
    fmt.Printf("test")
}

这似乎编译得很好-但是
main.go
中的
main()
函数中没有任何代码运行-没有给出输出,但也没有错误。如果我忘记了导入“C”,那么一切都会正常运行,并且我得到了预期的输出。我做错了什么?

我在我的机器上尝试了相同的方法
go版本go1.7.3 linux/amd64
。它工作正常我刚刚尝试了
go版本go1.7.4 darwin/amd64
,也没有问题。运行
go env
在终端中输出什么?不要使用相对导入路径。这不一定是问题所在,但公会工具并非在所有情况下都支持它。@JimB-您建议我使用相对路径以外的其他路径吗?@abagshaw:导入路径应始终与项目中的
$GOPATH/src
供应商/
目录相对。看见