工作区介绍

升级go语言版本

建议去官网下载最新的工具包

  • 工作区 工作区就是程序工作的地方,里面包含go语言的编写源码文件,已经install 安装后的归档文件,以.a为扩展名的文件
  • GOPATH 环境变量GOPATH 的值可以是一个目录的路径,也可以包含多个目录的路径,每个路径代表一个工作区
  • GOROOT
  • GOBIN

代码包的概念

go语言的源码是以代码包为基本组织单位的,在文件系统中,代码包是和目录一一对应的

1.一个代码包可以有多个以.go为扩展名的源码文件组成如下,demo1.go demo2.go 和 main.go 都属于代码包main,注意同一个目录下的.go 文件只能属于一个代码包

image.png

如何声明文件属于那个代码包呢?demo1.go demo2.go 和 main.go 文件的头部写上下面的声明

package main

注意这里的main 是包名,但是这个名字可以不和目录名一致,如果不一致,则在构建和安装的时候,已包名为准

2.代码包下面可以有子代码包,如下

image.png

下面看一张go工作区的结构图

image.png

go 目录就是GOROOT

src 就是源码文件存放的目录 pkg 安装后如果产生归档文件就会存放在这里 bin 如果产生了可执行的文件就会存放在这里

安装包

在命令行执行安装包命令,将我们的项目文件源码目录awesomeProject就安装到了pkg指定的文件夹下

 go install  awesomeProject

image.png

如果安装的是命令源码文件,则编译后的结果文件会被存放在目录下

下面我们演示一下安装main包,main.go 是一个可执行文件,里面写了一个main 函数

 go install awesomeProject/main

在bin 文件中发现了可执行文件main,

image.png

可以双击进行打开

image.png

如果我们把main.go 的文件中的main函数该一个名字例如 goPrint ,那么在执行安装包文件

你就会发现如下错误,

image.png

所以安装的命令源码文件时,必须包含main函数

构建

构建就是生成目标可执行文件的过程,命令行工具,使用cd 命令进入到go文件所在的文件夹中执行下面的命令

 go build  main.go

会在当前目录生成一个main的文件,这个文件就是可执行文件

image.png

双击打开,执行

image.png

go build 默认不会编译源码文件中依赖的那些包的,但是如果被依赖的那些包的归档文件不存在,即不在pkg包中,或者源码有个更改,那么它还是会被编译的

  • 如果强制编译依赖文件请使用下面的命令

go build -a main.go

  • 如果不仅要编译依赖的代码包,还要安装他们的归档文件,那么可以加入标记 -i go build -i main.go
  • 如果想知道编译的过程,请使用下面的命令
 go build -x main.go

image.png

  • 如果指向查看编译过程,而不真的执行编译
go build -n main.go

image.png

  • 如果想要查看编译都执行了那些依赖包可以使用下面的命令
go build -v main.go
go build -v -a main.go // 依赖的文件全部执行编译

image.png

go get 命令

会自动从一些主流公用代码仓库 如github 下载

-u 下载并安装代码包,不管代码中是否存在

-d 只下载代码包,不安装代码包 -fix 在下载代码包后选运行一个用于根据当前Go语言版本修正代码的工具,然后再安装代码包 -t 同时下载测试所需的代码把 -insecure 允许通过非安全的网络协议下载和安装的代码包。

代码远程导入的方式如下

package semaphore // import "golang.org/x/sync/semaphore"

解释如果此代码包存在github网站的golang组的sync代码仓库的sempahore 目录下,如果按照相面的写法声明, 则安装该包的命令可以如下

go get golang.org/x/sync/semaphore

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • net/http/pprof

    pprof包通过它的HTTP服务端提供pprof可视化工具期望格式的运行时剖面文件数据服务

    酷走天涯
  • 协程

    比如你的双手可以同时做两件事,比如吃饭这件事就是并发,吃饭这个过程中,可以同时吃几种菜,甚至喝汤,这个过程就是一个多任务并发的过程,但是并发在时间上是不能同时进...

    酷走天涯
  • SceneKit-超级大招SCNTechnique

    1.SCNTechnique 是什么? 2.SCNTechnique 有什么用? 3.怎么使用SCNTechnique?

    酷走天涯
  • go 1.11 模块和版本管理

    Go modules是go team在解决包依赖管理方面的一次勇敢尝试,无论如何,对Go语言来说都是一个好事。在本篇文章中,我们就一起来看看这个新引入的go m...

    sunsky
  • go语言

    goroot是go的安装目录,gopath是go语言的第三方库目录,需要添加环境变量GOPATH、GOROOT(安装时默认添加)

    sofu456
  • Golang 命令

    go buildgo build 命令用于编译我们指定的源码文件或代码包以及它们的依赖包。go build [-o output] [-i] [build fl...

    李海彬
  • 傻瓜式的go modules的讲解和代码

    国内关于gomod的文章,哪怕是使用了百度 -csdn,依然全是理论,虽然golang的使用者大多是大神但是也有像我这样的的弱鸡是不是?

    ydymz
  • 从外部设置传入Go变量

    前提:必须在build/run时指定 -ldflags="-X main.a=2.0 -X main.b=1" , 且a,b必须是string的变量,不能是常量...

    sunsky
  • go语言静态库的编译和使用

    songleo
  • 迁移到 Go Modules

    Go 项目使用多种依赖管理策略,其中对 vendor 包的管理有两个比较流行的工具 dep 和 glide,但他们在行为上有很大的差异,而且并不是总能很好地同时...

    Dabelv

扫码关注云+社区

领取腾讯云代金券