首页 > 其他分享 >Golang 基础(一)

Golang 基础(一)

时间:2023-11-06 20:55:57浏览次数:34  
标签:GOPATH sum 基础 Golang pkg install go mod

1. package management

go package management
1. history
2. go modules

GOPATH: Unified package storage path
- not support version control of dependency packages

GOPATH mode: use GOPATH to manage
GOPATH: the path
不是使用GOPATH模式就一定是使用GOPATH路径

GOROOT是go installation path,存放Build-in pkgs
GOPATH是 designated workspace
GOROOT 和 GOPATH 不能相同目录,否则包名冲突

GOPATH mode下,工程代码必须放在GOPATH/src

go get:
1. git clone to $GOPATH/src
2. go install (-d 不执行install)

go install:
1. generate executable binary file -> $GOPATH/bin
普通包:编译生成.a结尾的文件放到$GOPATH/pkg
(编译缓存,提升编译速度)

what is executable? has main() function

为什么需要go install?
因为go get要从remote repo,如果想用local repo,就用go install
1.15版本后go install会再判断没有local时拉取远程

go build
Output compiled files to the current directory

go run
用于测试,compile and run main()

GOPATH directory:
/src: source code
/pkg: compiled files
/bin: compiled .exe

GO MODULES
GO111MODULE = auto -> 根据项目是否在GOPATH dir 判断什么模式

go env -w GO111MODULE = on

如何变成module形式?
1. set GO111MODULE = on (windows)
2. go mod init <name>
(generate go.mod)

go mod tidy
1. 没有的包就下载
2. 多余的包就删除

如果go.mod和go.sum包含某个包,却没有下载到本地?
- go mod download

go mod vendor

go.sum
- 本地缓存有依赖包,计算包的hash并与go.sum对比
- 保证依赖的module version 不会被篡改(not tampered with)

go.sum中记录比go.mod多?
.mod依赖包包含go.mod -> 不记录;不包含 -> 记录indirect dependency
.sum: all

dependency pkg storage:
GOPATH mode: $GOPATH/src
GOMODULE mode: $GOPATH/pkg/mod

2. 

 

标签:GOPATH,sum,基础,Golang,pkg,install,go,mod
From: https://www.cnblogs.com/sabertobih/p/17813693.html

相关文章

  • Linux基础-查看dm的映射关系
    参考:https://www.cnblogs.com/aozhejin/p/16061309.htmlsudolvdisplay|awk'/LVName/{n=$3}/Blockdevice/{d=$3;sub(".*:","dm-",d);printd,n;}'   ......
  • Linux基础-xfs设备修复
    xfs文件系统,使用命令xfs_repair-L/dev/md0修复,一般情况修复后均可挂载,但是如果磁盘有问题,或者阵列出问题时此种修复可能会失败,挂载时依然要求格盘,只能进行格盘了。参考:https://blog.csdn.net/weixin_38642722/article/details/128763145 ......
  • (八)C#编程基础复习——for循环
    在某些情况下,我们可能需要重复执行某些代码,这时就需要用到C#中的循环语句,C#中支持for循环、foreach循环、while循环和dowhile循环等循环语句,使用for循环可以重复一部分代码,而且重复的次数是可以设定的,流程如下:代码示例:for(inti=1;i<=9;i++){Console.Write......
  • Linux基础-清除主机缓存
    sync;echo3>/proc/sys/vm/drop_caches 关闭swap#关闭swapoff,关闭循环后,交换操作至少要等待40秒swapoff-a#开启swapswapon-a......
  • Golang使用grpc实现token拦截
    上一篇简单使用了grpcGolang简单使用grpcserverpackagemainimport( "fmt" "golang.org/x/net/context" "google.golang.org/grpc" "google.golang.org/grpc/codes" "google.golang.org/grpc/grpclog" "google.golang.......
  • 《python基础教程(第二版)》学习笔记 文件和素材(第11章)
    《python基础教程(第二版)》学习笔记文件和素材(第11章)打开文件:open(filename[,mode[,buffering]])mode是读写文件的模式f=open(r'c:\somefile.txt')#默认是读模式+表示是可以读写;r读模式;w写模式;a追加模式;b二进制模式;换行符在Windows为\r\n,在Unix中为\n,Python会自动转......
  • 《python基础教程(第二版)》学习笔记 函数(第6章)
    《python基础教程(第二版)》学习笔记函数(第6章)创建函数:deffunction_name(params):blockreturnvalues记录函数:deffunction_name(params):'NOTE'#注释blockreturnvaluesfunction_name.__doc__help(function_name)return#没有返回值位置参数和关键字参数:关......
  • 《python基础教程(第二版)》学习笔记 类和对象(第7章)
    《python基础教程(第二版)》学习笔记类和对象(第7章)定义类classPerson:defsetName(self,name):self.name=namedefgetName(self):returnself.namefoo=Person()foo.setName('AAA')foo.getName()foo.namefoo.name='BBB'私有属性,名字前面加上......
  • Golang实现grpc单向认证
    接着上篇文章写Golang简单使用grpcgolang1.15+版本上,用gRPC通过TLS实现数据传输加密时,会报错证书的问题:rpcerror:code=Unavailabledesc=connectionerror:desc="transport:authenticationhandshakefailed:x509:certificateisnotvalidforanynames,but......
  • 基础课-前端
    前端技术的实际意义前端就是软件中的图形界面页面软件通过前端界面:1.获得用户的输入数据                2.展示数据给用户前端开发需要掌握的三项技术(语言):1.HTML超文本标记语言2.CSS层叠样式表语言3.JavaScript(JS)动态脚本语言HTML基......