Hello,Golang

一、开发环境搭建

1. 下载 SDK

1 // Go官网下载地址
2 https://golang.org/dl/
3 ​
4 // Go官方镜像站(推荐)
5 https://golang.google.cn/dl/

2. 安装

由于Go语言是一门跨平台的编译型语言,我们只需要在一个平台下进行开发,最后根据要运行的平台进行对应的编译,就可以直接在对应的平台上运行项目了。下面我们主要介绍一下Go语言在 Windows 环境上的安装过程:

  • 第一步,下载Go语言安装包到本地

  • 第二步,傻瓜式安装,疯狂下一步,期间可以选择安装的路径

  • 第三步,按照上述步骤安装完成后,打开终端,输入 go version 命令,如果能查看到相关的信息,证明安装成功。

3. 配置环境变量

打开终端输入命令 go env 可以查看安装 SDK 完成后的相关环境配置信息,其中我们需要重点关注一下框出来的几个配置项:

相关配置项说明:

  • GO111MODULE: 是否用 go mod 模式来管理项目的依赖

  • GOROOT:go的安装路径,需要把安装目录的 bin 级目录配置到计算机的系统环境变量中,才能全局使用 go 指令

  • GOPATH:项目代码存放的路径,目录可自定义,需要在计算机的系统环境变量中进行配置,后期工程代码以及下载的依赖都会存放在这个目录下

  • GOPROXY:镜像源,用于下载三方依赖,默认值是:GOPROXY=https://proxy.golang.org,direct,但国内访问不到,建议改成以下值:

https://goproxy.io 或 https://goproxy.cn

由于从 Go1.11 版本之后,项目结构有了很大的改动,环境配置项的作用也不一样,因此环境变量配置有一些差异:

3.1 GO 1.11 版本之前的环境配置

GO 1.11 之前版本规定了我们的代码要写在固定的位置,因此必须要配置一个GOPATH ,配置好后,我们还需要在 GOPATH 对应的目录下(新建以下几个文件夹,以后我们所有的代码都必须写在 src 目录中:

3.2 GO 1.11 版本及之后版本的环境配置

Go 1.11 版本之后,推荐使用 go mod 模式来管理依赖环境,不再强制配置 GOPATH。在安装完 GO 软件包后,会给 GOPATH 设置一个默认目录,且默认情况下 GOROOT下的 bin 目录及 GOPATH 下的 bin 目录都已经添加到环境变量中了,我们也不需要额外配置了;此外我们也不用把代码必须写在GOPATH 下面的 src 目录下了,可以在电脑的任意位置编写 GO 代码。

简而言之,在 1.11 版本后,我们不需要再关注和配置 GOROOTGOPATH 这两个环境变量了,安装完成之后,我们只需要配置一下 GO111MODULEGOPROXY 两项即可。实际上安装完新版本的软件包后,GO111MODULE 都是默认开启的,我们真正需要配置的只有 GOPROXY

二、第一个Go语言程序

我们随意在某个目录下新建一个 hello 文件夹,在 hello 目录中新建一个 main.go 文件,并输入以下代码

1 package main  // 声明 main 包,表明当前是一个可执行程序,一个项目中只能有一个main包
2 ​
3 import "fmt" // 导入内置 fmt 包
4 ​
5 func main() { // main函数,是程序执行的入口
6 fmt.Println("hello world !")
7 }

在终端中进入 hello 目录,输入 go build 命令对代码进行编译,编译通过后会在同级目录下生成一个可执行文件:

直接运行 exe 程序就可以看到代码实现的功能了:

三、Go 常用命令

  • go help

go help 可以查询 go 常用的命令:

  • go build

go build 表示将源代码编译成可执行文件。不同平台下编译得到的可执行文件类型不一样,windows下的是 exe 类型文件。可以通过添加 -o 参数来指定编译过后的文件名,例如:

go build -o helloworld.exe
  • go install

go install 表示安装的意思,它先编译源代码得到可执行文件,然后将可执行文件移动到 GOPATH 的bin目录下。因为我们的环境变量中配置了GOPATH下的bin目录,所以我们就可以在任意地方直接执行可执行文件了。

  • go run

go run 命令可以像执行脚本一样直接执行 .go 文件,且不会产生编译后的 .exe 文件,例如:

go run main.go

  • go fmt

go fmt 命令可以快速格式化代码,例如:

go fmt main.go

四、跨平台编译

默认 go build 得到的可执行文件都是当前操作系统下的,如果我想在windows下编译一个linux下可执行文件,那需要怎么做呢?

只需要指定目标操作系统的平台和处理器架构即可,然后再执行go build命令,就可以编译得到目标操作系统对应的可执行文件了

# Windows下编译得到Linux 64位可执行程序
SET CGO_ENABLED=0 // 禁用CGO,使用了cgo的代码是不支持跨平台编译的
SET GOOS=linux // 目标平台是linux
SET GOARCH=amd64 // 目标处理器架构是amd64

# Windows下编译得到Mac 64位可执行程序
SET CGO_ENABLED=0
SET GOOS=darwin
SET GOARCH=amd64

其余操作系统转换编译命令如下:

# Mac下编译得到Linux可执行程序
CGO_ENABLED=0
GOOS=linux
GOARCH=amd64

# Mac下编译得到Windows 64位可执行程序
CGO_ENABLED=0
GOOS=windows
GOARCH=amd64

# Linux下编译得到Mac可执行程序
CGO_ENABLED=0
GOOS=darwin
GOARCH=amd64

# Linux下编译得到Windows 64位可执行程序
CGO_ENABLED=0
GOOS=windows
GOARCH=amd64

Hello,Golang的更多相关文章

  1. go语言,golang学习笔记4 用beego跑一个web应用

    go语言,golang学习笔记4 用beego跑一个web应用 首页 - beego: 简约 & 强大并存的 Go 应用框架https://beego.me/ 更新的命令是加个 -u 参数,g ...

  2. go语言,golang学习笔记3 用命令下载框架报错问题解决 设置环境变量

    go语言,golang学习笔记3 用命令下载框架报错问题解决 设置环境变量 下载安装:go get github.com/astaxie/beego 首页 - beego: 简约 & 强大并存 ...

  3. go语言,golang学习笔记2 web框架选择

    go语言,golang学习笔记2 web框架选择 用什么go web框架比较好呢?能不能推荐个中文资料多的web框架呢? beego框架用的人最多,中文资料最多 首页 - beego: 简约 & ...

  4. go语言,golang学习笔记1 官网下载安装,中文社区,开发工具LiteIDE

    go语言,golang学习笔记1 官网下载安装,中文社区,开发工具LiteIDE Go语言是谷歌2009发布的专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C或C++代码的速 ...

  5. 想涨工资吗?那就学习Scala,Golang或Python吧

    [编者按]据薪水调查机构 PayScale 提供的数据显示,掌握 Scala,Golang 和 Python 语言以及诸如 Apache Spark 之类的大数据技术,能带来最大的薪水提升.本文作者为 ...

  6. DES对称加密算法实现:Java,C#,Golang,Python

    数据加密标准(DES,Data Encryption Standard,简写DES)是一种采用块密码加密的对称密钥算法,加密分组长度为64位,其中8.16.24.32.40.48.56.64 等8位是 ...

  7. go的变量redeclare的问题,golang的一个小坑

    go的变量声明有几种方式: 1 通过关键字 var 进行声明 例如:var i int   然后进行赋值操作 i = 5 2 最简单的,通过符号 := 进行声明和赋值 例如: i:=5 golang会 ...

  8. golang 编译或链接 c语言动态、静态库的方法, golang 与 c语言 相互调用

    1.golang链接c静态库的方法可以见这个示例: https://github.com/atercattus/go-static-link-example https://github.com/sh ...

  9. win7环境下,golang thrift demo代码编译不通过

    用官方的教程代码:http://thrift.apache.org/tutorial/go 用网友提供的代码:Golang RPC 之 Thrift 都出现如下情况 状况1: 编辑器中就会提醒 Can ...

  10. 2019年,Golang开始吊打Java性能了!!!

    最近要同事debug性能,不经意间发现现在Golang性能开始吊打Java了!!!感觉Go发展神速!! 之前Go和Java基本是平手,甚至还有较大差距,请见https://www.cnblogs.co ...

随机推荐

  1. WPF-3D图形

    WPF-3D图形 WPF的3D功能可以在不编写任何c#代码的情况下进行绘制,只需要使用xaml即可完成3D图形的渲染.本文主要讲述了WPF-3D中的关键概念, 以及常用到的命中测试.2d控件如何在3D ...

  2. java应用定位高cpu占用几步操作

    1.top获取高cpu占用的pid,如266202.查看pid的线程情况, top -H -p 266203.把cpu高占用的线程号转为16进制,printf "%x" 26652 ...

  3. 破解练习-CRACKME002

    002-注册算法分析 一.工具和调试环境 动态调试工具:x64dbg 系统环境:win10 1909 二.分析Serial/name的算法 直接使用提示字符串验证,得到错误提示如下: 接下来使用x64 ...

  4. *已解决 Javawe中servlet时出现空白页面,但又网站不报错的问题追溯(编码

    本次随笔内容为在学习过程中遇到问题不断排问题,不断查资料解决的过程,小菜鸟学习~相互交流(菜鸟互啄~) 遇到问题: Javawe中servlet时出现空白页面,但又网站不报错的问题追溯 解决: 1.t ...

  5. webrtc QOS笔记一 Neteq直方图算法浅读

    webrtc QOS笔记一 Neteq直方图算法浅读 目录 webrtc QOS笔记一 Neteq直方图算法浅读 Histogram Algorithm 获取目标延迟 遗忘因子曲线 想起博客园帐号了, ...

  6. .net core 阿里云接口之拷贝文件

    紧接上文, 1).net core 阿里云接口之获取临时访问凭证_SunshineGGB的博客-CSDN博客 2).net core 阿里云接口之将指定的OSS文件下载到流_SunshineGGB的博 ...

  7. 学习Java Day7

    今天学习了if语句和C/C++基本无差异,也再次练了一下Java的输入

  8. Win10解决文件或文件夹属性选项中只有“常规“、“以前的版本”,没有“安全”、“共享”、“位置”的方法

    问题介绍: 当我想要把"桌面"文件夹的路径改到其他盘的时候,通常我只需要对着"桌面"文件夹点击右键,在属性-位置的选项卡中更改路径即可:但是我发现我在对着&qu ...

  9. CF1625D.Binary Spiders

    \(\text{Problem}\) 大概就是给出 \(n\) 个数和 \(m\),要从中选最多的数使得两两异或值大于等于 \(m\) 输出方案 \(\text{Solution}\) 一开始的想法很 ...

  10. JZOJ 2020.01.11【NOIP提高组】模拟B组

    2020.01.11[NOIP提高组]模拟B组 今天的题是不是和 \(C\) 组放错了? 呵呵 然,却只有 \(300\) 分 首先,\(T4\) 看错题了 后,一时想不到正解 讨论区,一看,三个字- ...