1
我有需要在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
}
我想通過查詢main()
runtime.GOARCH
但範圍以聲明的架構相關的結構可變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()
中的通用數據類型來克服編譯錯誤?有沒有其他有效的方法來解決這個問題?
感謝
正是我需要的答案。非常感謝。 – linuxfan