读书笔记之创建Go项目

文件默认保存路径:$GOPATH/src/

go env

  • GOARCH:目标处理架构
  • GOBIN:'go install’将安装命令的目录。
  • GOOS:目标操作系统
  • GOPATH:当前工作目录
  • GOROOT:Go开发包安装目录

项目工作目录(GOPATH)

必须有:

  • src:项目源码【只能在项目的src中编写文件!】
  • bin:编译生成的二进制文件(go install
  • pkg:存储预编译的目标文件,以加快程序的后续编译速度。【第三方包】

Go Modules 代替 GOPATH

GOPATH问题:

  1. 所有的源码必须在$GOPATH/src/
  2. 无法进行依赖包版本控制:go get 命令下载的依赖包是当前依赖包的最新版本,如果我们对依赖包的版本有要求,就不能使用 go get 命令。

使用Go Modules开发项目

相关环境变量

$ go env
GO111MODULE="on"//或auto
GOPROXY="https://proxy.golang.org,direct"
GOPRIVATE="https://goproxy.cn,direct"
...
Go Modules开关:GO111MODULE
  • auto:只要项目包含了 go.mod 文件的话启用 Go modules,目前在 Go1.11 至 Go1.14 中仍然是默认值。
  • on:启用 Go modules,推荐设置,将会是未来版本中的默认值。
  • off:禁用 Go modules,不推荐设置。
Go Modules进行版本控制的方法
  • Go项目源码可以在任意地方!
  • 所有的依赖(也就是mod)都存放在:$GOPATH/pkg/mod
  • Go项目的依赖版本控制文件:Go项目/go.mod
  • 依赖校验和:Go项目/go.sum【考虑到下载的依赖包有可能是被黑客恶意篡改的,以及缓存在本地的依赖包也有被篡改的可能,单单一个go.mod文件并不能保证一致性构建。为了解决Go module的这一安全隐患,Go开发团队在引入go.mod的同时也引入了go.sum文件,用于记录每个依赖包的哈希值,在构建时,如果本地的依赖包hash值与go.sum文件中记录得不一致,则会拒绝构建。
Go Modules命令

在这里插入图片描述

GOPROXY【从Go官方远程仓库拉取模块版本,有默认值!】

GOPROXY:Go模块代理,作用是用于使 Go 在后续拉取模块版本时能够脱离传统的 VCS 方式,而是直接通过镜像站点来快速拉取。国内默认值应为:https://goproxy.cn,direct,否则通过命令设置:

$ go env -w GOPROXY="https://goproxy.cn,direct"
GOPRIVATE【从私有仓库拉取模块版本,没有默认值!建议使用

公司开发往往是私有仓库,我们需要从私有仓库中拉取版本!所以建议使用GOPRIVATE,设置GOPRIVATE,多个用,分开:

$ go env -w GOPRIVATE="gitlab.huolala.work"

开发过程

一、开启GO111MODULE
 $ go env -w GO111MODULE=on

包(package)

  1. 项目的src下存放包或go源码
  2. 包中当然还可以有包
  3. main函数只能在main包中!
  4. gopackage与所属包文件无关联! 【注:以下所有的包都是go源码中package,与包文件名无关!】
  5. package取别名:
import (
	"fmt"
	test "package1"
)

导出标识符

一个常量、变量、类型、函数等想要被其他包使用时,其变量名首字母必须大写,否则只能在包内使用!

导入包(import)

import "fmt"
import (
	"fmt"
	"package1"
	"package2"
)

引用其他包方法: 包名.方法名()

test.T1()

main()之前执行的包初始化init()

  • 虽然一个包可以有多个init(),但建议集合成一个!【同一个包中的多个init()时执行顺序不可预测!】
  • init()会按照main函数引用包结构树的深度优先顺序在main函数之前运行!

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值