美文网首页
go 引用同级别不同级别 文件中的方法

go 引用同级别不同级别 文件中的方法

作者: ylbjava | 来源:发表于2022-10-24 15:18 被阅读0次

    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

    相关文章

      网友评论

          本文标题:go 引用同级别不同级别 文件中的方法

          本文链接:https://www.haomeiwen.com/subject/irznzrtx.html