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. NG-Alain + Angular11使用ModalHelper实现简单版本弹框,代码超级少,记得模块要引用这个组件

    先看一下目录结构 --aa-item ----modal-compment ------modal-compment.component.html ------modal-compment.compo ...

  2. angular + ng-zorro 表格后台分页及排序功能实现,angular + ng-zorro 表格排序不起作用解决办法

    angular + ng-zorro 表格排序不起作用是因为数据是从后端获取的,也是后端分页,所以要自己写排序啦~~~~ 举例:HTML <nz-table #basicTable nzBord ...

  3. 脱坑记录--- removeEventListener 移除事件监听失败的经历--vue--keep-alive-----完美实现echarts自适应屏幕~~~~

    下面开始讲述事情经过~~~~ 页面代码是这样的 <template> <page-view :title="title"> <div id=" ...

  4. LeetCode_单周赛_332

    6354. 找出数组的串联值 题意 将数组首尾元素接在一起,就是串联值. 串联之后删除,如果只剩下一个元素,加上这个元素即可 双指针,从首和尾向中间移动即可 code 注意:用 long 没看题目用了 ...

  5. 上午小博(java小知识)

    使用super来引用父类的成分,使用this来引用当前对象 一个类从另一个类继承,new这个子类的实例的时候,使用super来引用父类对象,this是指当前对象的引用. 当new一个对象出来的时候,这 ...

  6. ubuntu18.04编译webrtc_android库

    webrtc 是谷歌提供的音视频通讯方案, 能够很好的解决音视频互联互通的场景. 本文基于 Ubuntu 18.04 编译 android 版本的过程, 其它平台也可以参考, 基本都大同小异. 编译环 ...

  7. 什么是Http? http和https的区别

    一.HTTP HTTP (HyperText Transfer Protocol),即超文本运输协议,是实现网络通信的一种规范 在计算机和网络世界有,存在不同的协议,如广播协议.寻址协议.路由协议等等 ...

  8. Centos7作为VNCserver,本地使用VNCViewer连接

    1.概念 VNC是一个远程连接工具 VNC is used to display an X windows session running on another computer. Unlike a ...

  9. 图解论文《The Part-Time Parliament》

    本文以图文并茂的方式重新演绎 Paxos 开山之作 <The Part-Time Parliament>[1],并尝试解释原论文中语焉不详的地方. 背景 在 Paxos 小岛上,施行着一种 ...

  10. LG P6156 简单题

    \(\text{Problem}\) \(\text{Analysis}\) 显然 \(f=\mu^2\) 那么 \[\begin{aligned} \sum_{i=1}^n \sum_{j=1}^n ...