我有需要在 mips 和 x86 上运行的代码。为了方便起见,我实现的功能使用相同的名称,并在mylib_x86.go和mylib_mips.go和也得到了代码来构建和工作两个平台上。下面是一些代码片段,用于显示我的结构的布局。
为了进一步优化我的代码,我为每个平台声明了单独的结构 common.go
// lib/common.go:
// Struct for mips
type MipsData struct {
var1 string
var2 string
var3 string
}
// Struct for x86
type X86Data struct {
var2 string
var3 string
}
我想通过查询来声明架构的相关结构runtime.GOARCH,main()但变量的范围data仅限于每个块,从而导致编译器错误,如下所示:error: reference to undefined name 'data'
import "lib"
import "strings"
import "runtime"
func main() {
if strings.HasPrefix(runtime.GOPATH, "mips") {
data := common.MipsData{
var1: "Mips",
var2: "Something",
var3: "Else",
}
} else if strings.HasPrefix(runtime.GOPATH, "amd64") {
data := common.X86Data{
var2: "Something",
var3: "Else",
}
}
text, err := json.MarshalIndent(data, "", " ")
// Write text to a file.
}
是否可以定义data为通用数据类型main()以克服编译错误?有没有其他有效的方法来解决这个问题?
慕无忌1623718
相关分类