[go]包和工程管理

编程入门 行业动态 更新时间:2024-10-24 01:54:46
一、系统环境变量goroot

指定go的安装目录,win是在 c\go\,linux在 /usr/local/go下,如果不是默认的目录,则需要指定 goroot环境变量,否则不需要

gopath

工作目录,可以指定多个,环境变量中用 ; 分割 go get下载目录的时候默认会下载到第一个gopath的src目录下,找 包也是从第一个目录开始往后找。可以指定两个工作区,第一个用来专门存放下载库

  • src:源代码文件
  • pkg:编译的中间文件
  • bin:编译产生可执行文件
goos goarch用来设置 编译产生可执行文件的目标os和cpu架构

go进行交叉编译:

linux

goos=linux goarch=amd64 go build hello.gogoos=windows goarch=amd64 go build hello.go二、包1、作用域

包内大写的:全部包可见

包内小写的:仅仅在本包内可见

{}块作用域:只在块内可见

{y:=999}log.println(y) //报错 y不可见2、包引用

包的全局绝对路径就是 $goroot/src 、$gopath/src

当然也可以引用相对路径

  • 可以给包起别名

  • import _ "fmt" //引用而不使用
  • import . "fmt" //引用所有func main(){ println("ok") //这样就可以直接使用包里面的函数}
3、init()

包里面可以有 init() 函数,一般用来初始化一些包中要用到的全局变量

三、mod包管理

mod只是版本管理工具, 在go mod初始化的项目目录下执行go get xxx,会将package下载到$gopath/pkg/mod目录下安装,并且添加或更新到go.mod文件中

1、相关环境变量go111module=off go命令从不使用新模块支持。使用gopath模式(查找vendor目录和gopath路径下的依赖)go111module=on go命令开启模块支持,只根据go.mod下载和查找依赖go111module=auto 默认值,go命令根据当前目录启用或禁用模块支持。仅当当前目录位于$gopath/src之外并且其本身包含go.mod文件或位于包含go.mod文件的目录下时,才启用模块支持。2、go mod文件结构module note-gingo 1.13require (github/gin-gonic/gin v1.5.0github/go-redis/redis v6.15.7+incompatiblegithub/go-sql-driver/mysql v1.4.1github/howeyc/fsnotify v0.9.0 // indirectgithub/jinzhu/gorm v1.9.12github/mattn/go-colorable v0.1.6 // indirectgithub/onsi/ginkgo v1.12.0 // indirectgithub/onsi/gomega v1.9.0 // indirectgithub/pilu/config v0.0.0-20131214182432-3eb99e6c0b9a // indirectgithub/pilu/fresh v0.0.0-20190826141211-0fa698148017github/pilu/miniassert v0.0.0-20140522125902-bee63581261a // indirectgithub/qiniu/api.v7/v7 v7.4.1github/robfig/cron v1.2.0gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc // indirectgopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23dfgopkg.in/yaml.v2 v2.2.4)
  • module语句指定包的名字(路径)

  • require语句指定的依赖项模块

  • replace语句可以替换依赖项模块

  • exclude语句可以忽略依赖项模块

  • module my/thingrequire other/thing v1.0.2 //需要的模块require new/thing v2.3.4exclude old/thing v1.2.3 //排除的模块的某些版本replace bad/thing v1.4.5 => good/thing v1.4.5 //替换的模块3、相关命令initgo mod init testgomod

    在当前目录下创建一个名为 testgomod的mod文件

    module testgomodgo 1.13listgo list -m all 查看所有依赖以及间接模块当前版本go list -u -m all 查看所有依赖以及间接依赖当前版本和可升级版本go list -m -versions github/gin-gonic/gin 查看某些模块的所有版本getgo get -u ./... 更新所有模块go get -u github/xxxx 更新指定模块最新版本go get github/xxxxx 下载模块依赖//加上@v1.x.x 可以获取指定版本go get github/gin-gonic/gin@v1.3.0go get github/gin-gonic/gin@v1.1.4buildgo build ./... 构建当前项目go test ./... 构建测试模块tidy

    架构和构建标记的其他组合中修剪所有不需要的依赖项,并添加其他依赖项所需的任何依赖项

    go mod tidy
    • 0
    • 0
    • 0
    • 0
    • 0

    更多推荐

    [go]包和工程管理

    本文发布于:2023-06-10 22:52:41,感谢您对本站的认可!
    本文链接:https://www.elefans.com/category/jswz/34/620796.html
    版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
    本文标签:工程管理

    发布评论

    评论列表 (有 0 条评论)
    草根站长

    >www.elefans.com

    编程频道|电子爱好者 - 技术资讯及电子产品介绍!