zoukankan      html  css  js  c++  java
  • Go module学习笔记


    一 go module 常用命令

    模块维护:go mod command arguments
    创建模块:go mod init example.com/hello
    清除无用依赖: go mod tidy

    测试packages:go test [build/test flags] [packages]
    测试当前目录*_test.go:go test 运行当前文件夹下的_test.go文件

    列出packages或模块:
    go list [-f format] [-json] [-m] [list flags] [build flags] [packages]

    列出模块所有的依赖(包括间接依赖):go list -m all

    增加并安装依赖:
    go get [-d] [-t] [-u] [-v] [-insecure] [build flags] [packages]

    升级minor版本get get packages

    升级依赖module的主版本:
    import中加入语义主版本号,比如:import quoteV3 "rsc.io/quote/v3"

    二 发布go module

    语义版本:
    语义版本由vMAJOR.MINOR.PATCH构成,当新发布版本公共API不兼容已发布版本时,新增MAJOR主版本号;当新增函数等兼容已发布版本时,增加MINOR;不改变API和则依赖时,比如修复bug,增加PATCH。
    V0为初始不稳定版本,v1为第一个稳定版本。
    给本地分支打标, 默认标签是打在最新提交的commit上:git tag v0.1.0
    将本地分支标签推送到远端:git push origin v0.1.0

    三 发布v2及以上版本

    模块的V2及以上版本必须带有有不同的模块导入路径,路径带上major version。
    在模块下新建v2子目录,将模块下所有的*.go文件全部铐入v2目录,将go.mod拷入v2目录,并修改module名称。
    修改模块名称:
    go mod edit -module github.com/killianxu/gopher/v2 v2/go.mod

    将我们项目依赖的模块全改成v2版本:
    find . -type f -name '*.go' -exec sed -i -e 's,github.com/my/project,github.com/my/project/v2,g' {} ;
    find查找指定文件,.表示本目录及子目录,-type表示文件类型(f普通文件),-name表示文件名,-exec执行指令,-exec和{}结合表示匹配的所有文件[5]。
    sed是流编辑器,用于文本处理,sed读入文件行进缓冲区,处理完成输出到屏幕,然后处理下一行。
    命令用法:sed [options] 'command' file(s)
    -e可以在同一行里执行多条命令,-i直接更改原文件。command中s表示替换,g表示对所有行进行替换。
    git tag v2.0.0
    将本地分支标签推送到远端:git push origin v2.0.0

    参考文献

    [1] Using Go Modules.https://blog.golang.org/using-go-modules
    [2] Command go.https://golang.org/cmd/go/
    [3] Publishing Go Modules.https://blog.golang.org/publishing-go-modules
    [4] Go Modules: v2 and Beyond.https://blog.golang.org/v2-go-modules
    [5] find命令.https://man.linuxde.net/find
    [6] sed命令.https://man.linuxde.net/sed

  • 相关阅读:
    383. Ransom Note
    598. Range Addition II
    453. Minimum Moves to Equal Array Elements
    492. Construct the Rectangle
    171. Excel Sheet Column Number
    697. Degree of an Array
    665. Nondecreasing Array
    视频网站使用H265编码能提高视频清晰度吗?
    现阶段的语音视频通话SDK需要解决哪些问题?
    企业远程高清会议平台视频会议系统在手机端使用的必备要求有哪些?
  • 原文地址:https://www.cnblogs.com/killianxu/p/12443833.html
Copyright © 2011-2022 走看看