go 引用同级别不同级别 文件中的方法:其本质还是go依赖包的管理方式
上目录结构:

2、在main 方法中调用的时候发现, 本文件内的方法可以被调用, 但是外部文件不能被调用;

思考:(本人之前从事java)
在java 中出现该问题, 一般都是环境变量, 包路径设置问题
尝试了引入包路径:“service”,“handle/service”. “service/faas_service”......始终报错;
3、这么简单的问题, 现在项目都可以成功, 为什么自己创建的独立项目不能运行 ,离开公司的框架真的搭建不出来项目吗?
4、请教周围同事:
4.1需要导入包, 包路径是 gomod moudle + 文件路径

4.2 import 包路径, 调用方法成功;

5、思考: go和java 在编译是, 是如何来找依赖包的?
go的编译过程是什么?go编译过程如何解决依赖包的问题:
go提供三种依赖包的管理方式, 目前使用最多的是gomod,上边示例也是使用的gomod;
1、gopath:
编译的时候,会从本地的环境变量, TOPATH中查找 依赖的包路径;
如果本地不存在需要go get 重新下载到本地;
2、vendor:
vendor 机制本质上就是在 Go 项目的某个特定目录下,将项目的所有依赖包缓存起来,这个特定目录名就是 vendor。
vender 可以和项目本身一起提交, vendor 中的包不受外部包变化影响;
3、gomod:
在 Go Module 模式下,通常一个代码仓库对应一个 Go Module。一个 Go Module 的顶层目录下会放置一个 go.mod 文件,每个 go.mod 文件会定义唯一一个 module,也就是说 Go Module 与 go.mod 是一一对应的。
go.mod 文件所在的顶层目录也被称为 module 的根目录,module 根目录以及它子目录下的所有 Go 包均归属于这个 Go Module,这个 module 也被称为 main module。
gomod:当前依赖包的信息
gosum:依赖包和对应的hash值, 如果一致才认为是正确的包, 所以gosum 一般会有多个版本信息, 但是gomod 只有正在使用的版本。
简单理解: gomod 接管了gopath相关的能力, 正常引用包我们需要从gopath开始找, 在gomod 管理方式下, gomoud 的路径就是gopath的根目录;
参考:
https://www.cnblogs.com/niuben/p/16182001.html
http://www.go-day.cn/detail/6.html
网友评论