2022 年2 月份正式发布的 go1.18 由于新增了工作区特性,给多模块管理提供另一种更方便的解决途径。 /go1.18-workspace/mypkg go: creating new go.mod: module github.com/go1.18-workspace/mypkg go: to add to add it: go get github.com/go1.18-workspace/mypkglanguage-bash复制代码 go run main.go 也就不成功。 : hanwei@hanweideMacBook-Air example]$ go run main.go This is package mypkglanguage-bash复制代码 工作区模式 将上面的 可见用工作区比replace方便太多了。
上篇文章介绍了go语言开发环境的搭建,本文介绍一下go语言的工作区。 GOPATH是多个工作区的目录路径。这些路径存放go语言的源码文件、归档文件和编译后的可执行文件。 go语言的源码包一般放在GOPATH包含的某个工作区中src目录的某个子包中。 比如,一个目录结构如下: src/a/b/c,执行go install src/a/b/c后,产生的归档文件为pkg/a/b/c.a。 所以在一个工作区中,src、pkg、bin三个目录是平级的。 如果安装的是库源码文件,结果文件会被搬运到它所在工作区的 pkg 目录下的某个子目录中。
注:本文是对golang-101-hacks中文翻译,本文的原文地址 当Go开发环境安装完成,接下来就是设置创建Go的工作目录了。 1 创建一个空文件夹作为工作区目录 # mkdir gowork 2 将创建的工作区目录设置成$GOPATH环境变量值 # cat /etc/profile ...... Go工作区包含3个子目录: src:Go存放代码目录 pkg:存放包文件,你可以把它们看作是在链接阶段用来生成的依赖的库。 bin:存放可执行文件 看一个示例 1:在/root/gowork 我们设置的工作区下创建一个src文件夹 # mkdir src # tree . └── src 1 directory, 0 files main() { greet.Greet() } 在hello.go文件中,main函数调用了greet包中的Greet函数 (4) 现在整个工作区的目录结构是这样的: # tree
[下载.png] 如果GOPATH设置了多个工作区,那么查找依赖包时是以怎样的顺序进行的? 例如 a 依赖 b ,b依赖c 那么 会先查找c包,那在工作区是如何查找这个依赖包c的呢? 首先在查找依赖包的时候,总是会先查找 GOROOT目录,也就是go语言的安装目录,如果没有找到依赖的包,才到工作区去找相应的包。 在工作区中是按照设置的先后顺序来查找的,也就是会从第一个开始,依次查找,如果找到就不再继续查找,如果没有找到,就报错了。 go get 会下载代码包到src目录,但是只会下载到第一个工作区目录。 Go语言的规范并没有定义这些字符串的具体含义或包来自哪里,它们是由构建工具来解释的。 一个导入路径代表一个目录中的一个或多个Go源文件。 如果多个工作区中存在导入路径相同的代码包会产生冲突吗? 不冲突,因为按顺序找到所需要的包就不往后找了。
升级go语言版本 建议去官网下载最新的工具包 工作区 工作区就是程序工作的地方,里面包含go语言的编写源码文件,已经install 安装后的归档文件,以.a为扩展名的文件 GOPATH 环境变量GOPATH 的值可以是一个目录的路径,也可以包含多个目录的路径,每个路径代表一个工作区 GOROOT GOBIN 代码包的概念 go语言的源码是以代码包为基本组织单位的,在文件系统中,代码包是和目录一一对应的 1 .一个代码包可以有多个以.go为扩展名的源码文件组成如下,demo1.go demo2.go 和 main.go 都属于代码包main,注意同一个目录下的.go 文件只能属于一个代码包 ? image.png 下面看一张go工作区的结构图 ? go build -x main.go ?
Git 的工作流程图: Git 工作区、暂存区和版本库 基本概念 工作区:就是你在电脑里能看到的目录。 暂存区:英文叫stage, 或index。 版本库:工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。 工作区、版本库中的暂存区和版本库之间的关系图: 图中左侧为工作区,右侧为版本库。 当对工作区修改(或新增)的文件执行 "git add" 命令时,暂存区的目录树被更新,同时工作区修改(或新增)的文件内容被写入到对象库中的一个新的对象中,而该对象的ID被记录在暂存区的文件索引中。 或者 "git checkout -- <file>" 命令时,会用暂存区全部或指定的文件替换工作区的文件。这个操作很危险,会清除工作区中未添加到暂存区的改动。 这个命令也是极具危险性的,因为不但会清除工作区中未提交的改动,也会清除暂存区中未提交的改动。
基础工作区 MatLab 中的基础工作区是针对当前 MatLab 窗口内的脚本代码而言的(无论是命令行窗口输入的还是 M 脚本文件中的),是所有脚本代码所共享的(即对当前 MatLab 窗口而言是唯一的 【注】从函数中调用脚本时,脚本使用的是调用函数的函数工作区。 2. 函数工作区 MatLab 中的函数工作区是针对 MatLab 普通函数的,每个普通函数都拥有自己独立的函数工作区,是对外不可见的,随函数调用开始而产生、随函数调用结束而清除。 【注】普通函数内嵌套定义的子函数和父函数共享同一个函数工作区。 3. 其他工作区 全局变量工作区 MatLab 中全局变量拥有自己的工作区,和基础工作区、函数工作区区分开。 全局变量工作区内的全局变量可以在所有工作区内访问。全局变量工作区也是与当前 MatLab 窗口共存亡的。
工作区和GOPATH 在开始学习go语言的时候,新手总是会遇到这样那样的问题, 怎么安装go语言,这里就不再详细说明,根据自己的机器来安装合适的版本, Mac系统直接运行brew即可: [image.png 这些工作区用于放置Go语言的源码文件(source file)目录src ,以及安装(go install)后的中间文件 目录pkg 和可执行文件(executable file)目录bin。 这里要注意,如果是设置了多个工作区,那么 GOBIN 是一定要设置的,要不然 go install 就会报错了。 [image.png] 总结 Go语言提供的很多工具都是在GOPATH和工作区的基础上运行的,比如上面提到的 go build 、 go install 和 go get ,这三个命令,所以 设置GOPATH 和工作区才比较重要。
本文主要内容如下几点: 下载安装GO 配置多个工作区,第一个默认放第三方包,其他的放项目代码 包管理器godep的安装使用 安装过程中的一些坑(墙) vscode中使用go 1. 下载并安装go 官网下载 或者golang中国下载 默认安装到C:\GO,使用go version查看版本: ? 当前版本为:1.10 2. 新建工作区 ? 项目的依赖配置文件 新建一个go项目oneGo(GoCoding\src\oneGO),创建main.go文件,并引入一个测试包,并打开cmd到当前路径 ``` go package main import VsCode中配置GO开发环境 go get -u -v github.com/nsf/gocode go get -u -v github.com/rogpeppe/godef go get -u -v github.com/tpng/gopkgs go get -u -v github.com/newhook/go-symbols go get -u -
工作区和暂存区 Git和其他版本控制系统如SVN的一个不同之处就是有暂存区的概念。 先来看名词解释。 工作区(Working Directory) 就是你在电脑里能看到的目录,比如我的learngit文件夹就是一个工作区: ? 版本库(Repository) 工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。 Git管理的文件分为:工作区,版本库,版本库又分为暂存区stage和暂存区分支master(仓库) 工作区>>>>暂存区>>>>仓库 git add把文件从工作区>>>>暂存区,git commit 把文件从暂存区>>>>仓库, git diff查看工作区和暂存区差异
Git和其他版本控制系统如SVN的一个不同之处就是有暂存区的概念,本文主要的目的就是给大家介绍清楚什么是暂存区. 一、工作区 Working Directory其实就是个文件夹。 GitRepository1文件夹就是个工作区。 ? 二、版本库 工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。 一旦提交后,如果你又没有对工作区做任何修改,那么工作区就是“干净”的: ? 此时的结构图为:commit后暂存区就没有任何东西了 ? 将修改从暂存区回退到工作区 ? 回退到工作区我们就可以通过 git checkout – read.txt撤销 ? 暂存区(Stage 或 Index) 数据暂时存放的区域,可在工作区和版本库之间进行数据的友好交流。
工作区 就是 git init 的目录,就是工程目录。 工作区下包含着版本库 .git 文件夹。 暂存区 暂存区就存在于 .git 版本库文件夹内。 git add 是往暂存区提交 git commit 是往 master分支提交 在实际开发中,这个作用很大,比如在编写一段时间的代码后,想要拉一下远程分支的代码,或者想回到之前的修改,但是又不想删掉这些修改 版本库 工作区有一个隐藏目录 .git,虽然这个目录在工作区的工程目录下,但是目录是管理git的。这个不算工作区,而是 Git 的版本库。 工作区中的文件的修改和 stage 暂存区中的修改都会被 git 监控到。 不同的区之前的修改是独立互不影响的。工作区中的修改是不会被 commit 的。只有暂存区的才会被 commit。 图片
版本控制系统中三个重要概念:工作区、版本库与暂存区。 工作区(Working Directory) ---- 就是你能在电脑中看到的目录,即本地目录,比如我的GitTest就是一个工作区,准确的来说,Git工作区应该指的是执行过git init初始化后的本地目录 版本库(Repository) ---- 工作区有一个隐藏目录.git,这个不是工作区,而是Git的版本库。 ? 工作区是干净的),这是因为工作区中的文件修改已全部提交至版本库中的本地分支Master上,工作区与Master分支内容完全一致,即没有“脏”内容(类比数据库的“脏读”(Dirty Read),脏读是指一个事务读到了另一个事务还未提交的数据 小结 ---- 工作区:本地目录,包含所有被Git追踪的文件的实时内容; 版本库:工作区中的.git文件夹,实际包含暂存区和当前分支指针HEAD,通过命令:git init可以初始化创建版本库; 暂存区
创建 Go 项目 # 进入 Home 目录 cd ~ # 创建工作区目录 mkdir workspace # 进入工作区目录 cd workspace # 创建 Go 项目所在的目录 mkdir hello 创建工作区 # 进入 Home 目录下的 workspace 目录 cd ~/workspace # 初始化工作区 go work init . 在创建工作区后,我们进入工作区目录,运行 main.go 文件。 将下载到本地的依赖模块 example 添加到工作区: cd ~/workspace go work use . 我们项目组成员只需维护自己本地的工作区,不必再手动修改 go.mod 文件中 replace 指令中的本地目录路径。
基本概念 工作区 在电脑中能看到的目录 工作区.jpg 此处的 initialize 文件夹可被看作为工作区 暂存区 一般存放在 .git 目录下的 index 文件中,也将暂存区称作索引 未提交的文件修改通通放在暂存区中 暂存区.jpg 版本库 工作区中的 .git 目录(.git 为隐藏目录) 版本库.jpg 添加文件到版本库中 把文件添加到暂存区中 把暂存区的所有内容提交到当前分支 添加暂存区 将工作区中的文件添加到暂存区 语法 git add 文件名 添加暂存区.jpg 添加完成之后查看本地库状态 添加完成查看.jpg 删除暂存区中的文件 只是将文件从暂存区中删除,工作区中的文件不受影响 语法 git rm --cached 文件名 删除暂存区中的文件.jpg 提交本地库 将暂存区中的文件提交到本地库 语法 git commit -m “日志信息” 文件名 提交本地库.jpg 查看日志信息 语法 git reflog 查看引用日志信息 提交暂存区.jpg 查看状态 查看状态2.jpg 提交本地库 提交本地库2.jpg 查看版本信息 查看版本信息.jpg 历史版本 查看版本信息 语法 git reflog // 查看精简版本信息 git
Go工作区的演变,就像你从集体宿舍搬到独立公寓,再到拥有共享工作室的过程。 /proj3#添加项目到工作区goworkuse./newproject#从工作区移除项目goworkedit-dropuse=. /oldproject#同步工作区(类似gomodtidy)goworksync#查看工作区信息goworkedit-json最佳实践建议✅推荐场景微服务架构:多个服务共享公共库工具链开发:CLI+SDK +核心库插件系统:主程序+多个插件包❌不推荐场景单一项目(直接用GoModules即可)无关联的独立项目(会增加复杂度)生产环境部署(go.work仅用于开发)结语:进化背后的设计哲学Go工作区的三次进化 工作区的演变告诉我们:好的工具应该像空气一样——存在但不打扰,需要时随时可用。
一、为什么要持久化在使用Kasm Workspace时,工作区重新生成后内容会丢失,给工作带来诸多不便。 比如: 在浏览器工作区登录多账号、做复杂操作,工作区重生成后,账号等操作记录没了,得重新花大量时间登录、配置环境,影响效率;进行数据分析项目时,辛苦整理的数据、编写的代码若因工作区重生成而丢失,只能从头再来 ;在工作区下载的重要资料或文件,若没实现持久化,工作区重生成后也会消失,无法留存到母机后续使用。 而实现工作区持久化能解决这些问题,可保留工作进度、数据等,让我们放心工作,不用担心重要信息丢失,设置持久化目录能将内容下载到母机对应目录,方便查看使用,提升使用便利性与工作连贯性。 ,打开Edge,登录账号后,关闭工作区,重新打开可以看到之前登录的账号现在也是登录中状态,Edge的配置一切都在。
Go 多模块工作区能够使开发者能够更容易地同时处理多个模块的工作,如: 方便进行依赖的代码调试(打断点、修改代码)、排查依赖代码 bug 方便同时进行多个仓库/模块并行开发调试 目录 多模块工作区 开发流程演示 总结 参考文献 多模块工作区 说明 go 使用的是多模块工作区,可以让开发者更容易同时处理多个模块的开发。 推荐在: $GOPATH 路径下执行,生成 go.work 文件 go work init 初始化工作区文件,用于生成 go.work 工作区文件初始化并写入一个新的 go.work 到当前路径下,可以指定需要添加的代码模块 /example go.work 从工作区中删除模块 go work sync 将工作区的构建列表同步到工作区的模块 go env GOWORK查看环境变量,查看当前工作区文件路径 可以排查工作区文件是否设置正确 /example1 ) use 指定使用的模块目录 可以使用 go work use hello 添加模块,也可以手动修改 go.work 工作区添加新的模块 在工作区中添加了模块路径,编译的时候会自动使用
https://blog.csdn.net/bagpiping/article/details/83827449 初始化场景: 小明的工作区有文件 hello.txt git add hello.txt git commit -m "我把文件存到Git仓库了啊" 1、场景一:小明“不小心”把工作区的hello.txt手动删除了。 ) deleted: hello.txt no changes added to commit (use "git add" and/or "git commit -a") Git发现工作区和仓库版本不一样 2、场景二:小红想把Git仓库和暂存区的文件删除,但是保留工作区的文件,怎么办? Git帮她 git rm --cached hello.txt 文件还在磁盘上,就是不知道是不是小红需要的:0
1、git的工作区: 在当前仓库中,新增,更改,删除文件这些动作,都发生在工作区里面。 2、git的暂存区: 英文叫stage, 或index。在版本库.git)目录下,有一个index文件。 它实际上就是一个包含文件索引的目录树,像是一个虚拟的工作区。 当对工作区修改(或新增)的文件执行 “git add” 命令时,暂存区的目录树被更新,同时工作区修改(或新增)的文件内容被写入到对象库中的一个新的对象中,而该对象的ID被记录在暂存区的文件索引中。 或者 “git checkout – ” 命令时,会用暂存区全部或指定的文件替换工作区的文件。这个操作很危险,会清除工作区中未添加到暂存区的改动。 即这个时候,上次提交的内容在工作区中还会存在。 如果使用git reset –hard 将版本库,暂存区和工作区的内容全部重置为某个commit的状态。之前的commit不会保留。