結論:node
import "database/sql" import _ "github.com/go-sql-driver/mysql"
$GOPATH目錄以下:mysql
├─pkg
└─src
└─app.go
└─m1
└─k1.gogit
app.go:github
package main import "m1" func main() { x1.Show() }
k1.go:sql
package x1 import "fmt" func Show(){ fmt.Println("show call") }
運行app.go:輸出 show call。app
在以上的m1目錄中,建立一個文件k2.go函數
package x2 import "fmt" func Show(){ fmt.Println("show call") }
運行app.go提示:app.go:3:8: found packages x1 (k1.go) and x2 (k2.go) in D:\GoPath\src\m1測試
k1和k2文件中,都經過package指定包名爲x1。app.go中導入這兩個目錄,運行報錯:spa
.\app.go:4:8: x1 redeclared as imported package name
previous declaration at .\app.go:3:8
.\app.go:7:2: undefined: "m2".FnInK13d
解決辦法:導入的時候,將衝突的包名,重命名爲另外一個值便可,如如下k2pkg
k1.go:
package x1 import "fmt" var x1Data int = 1; func init(){ fmt.Println("x1 init call") x1Data = 2; } func ShowData(){ fmt.Println(x1Data) } func SetData(x int){ x1Data = x; }
k2.go:
package x2 import "m1" import "fmt" func init(){ fmt.Println("x2 init call") x1.SetData(333) }
app.go:
package main import _ "m2" import "m1" func main() { x1.ShowData() }
> go run app.gox1 init callx2 init call333