2. import "../<包名>"。
这两种import方式会影响到使用它们的方式的不同:
1. 当被使用的项目代码中有第一种import方式时:git clone代码之后,运行被使用项目的某个包的例子的时候就会出错,因为GOPATH中没有相应的包。
2.
当被使用的项目代码中有第二种import方式时:go get代码之后,如果将被使用项目的例子mv到其他地方运行的话也会报错(即时将这个例子中的import方式改为第一种也会是这样),提示找不到相应的包或者local import "
../<包名 " in non-local package。
貌似,领悟了:
1. 如果是可独立运行的项目代码(仅需git clone然后运行的代码),不要使用第一种引用方式,而应该使用本地引用方式(上面出现过的local import)。因为GOPATH中没有相应的包和代码,而且即使将这些项目代码go get进GOPATH也没有什么意义。
2. 如果是提供给他人使用的工具代码,不要出现任何使用本地引用方式,而应该使用全限定名的引用方式,因为这些代码别人是会go get到GOPATH然后使用的。但是在push到github前可能还不能确定这个以github.com开头的全限定包名,我觉得这是“push to github -> go get to local”这个流程中的一个坑。
3. 依据以上两点,可独立运行的项目中的工具类代码,如果可以尽量拆出来形成小项目以方便自己和他人使用。从另一个角度来说,在可独立运行的项目中不要出现使用者需要在外部调用的代码,原因我在上面试图说明了。