回答

收藏

如何在go中导入本地包?

技术问答 技术问答 183 人阅读 | 0 人回复 | 2023-09-12

我是新手,开始写我想本地化的示例代码。
+ ?7 n' }7 J$ e! l* V在原始main.go在导入语句中,它是:
( j2 A) j# `+ Y0 t3 e' u* e
    import  "log"    "net/http"    "github.com/foo/bar/myapp/common"    "github.com/foo/bar/myapp/routers")
    3 ^3 y8 ?" K8 T8 M- d+ B1 H, M
现在我有common并routers打包/home/me/go/src/myapp
2 y$ O" S" R+ f0 d1 t: B6 F因此,我将导入语句转换为:( C0 r! g) m( T' j* m" |2 l
    import  "log"    "net/http"    "./common"    "./routers")0 v  z6 o; [! ^9 D/ b
但是当我运行的时候,go install myapp我收到了这些错误:
/ O8 J& y: A! I9 [6 l& \9 P" Q
    can't load package: /home/me/go/src/myapp/main.go:7:3: local import "./common" in non-local package
    3 I4 H6 r* D* R( B, P# y# O9 e
另外,当我在 import 语句中使用commonandrouters而不是./commonand./routers当时,我得到:+ Y. O+ l% z, I- ~# \8 y
    myapp/main.go:7:3: cannot find package "common" in any of:    /usr/local/go/src/common (from $GOROOT)    /home/me/go/src/common (from $GOPATH)myapp/main.go:8:2: cannot find package "routers" in any of:    /usr/local/go/src/routers (from $GOROOT)    /home/me/go/src/routers (from $GOPATH)
    1 m' c' c+ S1 H
我怎样才能解决这个问题?
& C3 ^& V: o2 y; [+ e; D+ a- g                                                               
' l. @! Y/ m7 q7 p, a) k( E    解决方案:                                                                , X1 t! o6 [- i; R6 e
                                                                我想出了问题。基本上导入的起始路径是$HOME/go/src
( I# t; `3 L% k1 G所以我只需要myapp加入包名前面,即import应该是:; e2 k  O# \! J# X
    import  "log"    "net/http"    "myapp/common"    "myapp/routers")
    3 E4 [7 h( x4 j
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则