Go 语言环境搭建
本文内容
- 概述
- Go SDK
- LiteIDE
- 参考资料
迁移到:http://www.bdata-cap.com/newsinfo/1713828.html
2009年Google推出了它的第二个开源语言 Go。对 Go 的评价褒贬不一,中国比国外的热情高。Go 天生就是为并发和网络而生的,除了这点外,在静态编译、GC、跨平台、易学、丰富的标准库等,其实并不如 C/C++、Java、C#、Python。由此可想而知,为什么会出现 Go?以及为什么 Go 存在如此多的问题和争论?——也许Go 更像是一个“天才的自闭症患者”,如果看清了这点,对网络和知乎上一些 Go 的褒贬也就能泰然啦,这就好像下班到家,是先吃饭,还是先洗澡,重要吗?~
下载开发工具
下载相关文档手册
概述
Go 是Google开发的一种编译型,並發型,并具有垃圾回收功能的编程语言。
罗伯特.格瑞史莫(Robert Griesemer),罗勃.派克(Rob Pike)及肯.汤普逊于2007年9月开始设计Go语言,稍后 Ian Lance Taylor, Russ Cox 加入项目中。Go 语言于2009年11月正式宣布推出,成为开放源代码项目,并在 Linux 及 Mac OS X 平台上进行了实现,后追加 Windows系统下的实现。
Go 的前身来自于Inferno(基于Plan 9 的改造)。Inferno 包含了一个叫做 Limbo 的语言。这里引用了一段来自于 Limbo 论文的描述:
Limbo 是用于开发运行在小型计算机上的分布式应用的编程语言。它支持模块化编程,编译期和运行时的强类型检查,进程内基于具有类型的 channel 通讯,原子性垃圾回收和简单的抽象数据类型。它被设计用于即便没有硬件内存保护的小型设备上,也能安全的运行。
Go 从 Limbo 继承的另一个特性是 channel。从 Limbo 文档来的另一段描述:
channel 是用于向系统中其他代理发送和接收特定类型对象的通讯机制。channel 可以用于本地进程间通讯;用于连接到命名的目的地的库方法。两种情况都是直接发送和接收操作。
channel 在 Go 中比在 Limbo 中更加好用。如果我们对 Go 的历史深入探索,会发现一个指向“Newsqueak”的线索,这是在类C 语言中使用channel 进行通讯的先驱。channel 并不是这些语言独有的,另一个非类C 语言:Erlang,也在使用它。

图 1 Go 语言编年史
使用 channel 与其他进程进行通讯叫做“通讯序列化过程(Communicating Sequential Processes - CSP)”,由 C. A. R. Hoare 设计构想,而他正是那个发明快速排序算法的人。
Go 是第一个实现了简单的(或更加简单的)并行开发,且跨平台的类C 语言。Go 语言的语法接近 C 语言,但是对于变量的声明是不同的,其他语法不同之处是 For 循环和 if 判断式没有括号围绕。Go 语言支持垃圾回收功能。Go 语言的并行模型是以东尼.霍尔的 CSP 为基础,采取类似模型的其他语言包括 occam 和 Limbo,但它也具有 Pi 运算的特征,比如通道传输。
与 C++相比,Go语言并不包括如异常处理、继承、泛型、断言、虚函数等功能,但增加了 slice 型、并发、管道、垃圾回收、接口(interface)等特性的语言级支持。当然,Google 对于泛型的态度还是很开放的,但在该语言的常见问题列表中,对于断言的存在,则持负面态度,同时也为自己不提供类型继承来辩护。不同于 Java,Go语言内嵌了关联数组(也称为哈希表(hashes)或字典(dictionaries)),就像字符串类型一样。
开发 Go 一般需要两个程序:
本文以 Windows 7 64 位为环境,go1.4.2.windows-amd64 和 liteidex27.2.1.windows-qt5 为例。
Go SDK

图 2 Go SDK
默认安装路径为 C:\go 下。当然你可以更改该路径,只要在后续配置 IDE 时,使用正确的路径即可。
安装完成后,Go SDK 会自动为你添加系统环境变量。
现在,你可以用任何文本编辑器来编写 Go 代码,比如 HelloWorld.go,保存在 C 盘根路径下:
package main
import (
"fmt"
)
func main() {
fmt.Println("Hello World!")
}
然后,你就可以通过运行 go run HelloWorld.go 来执行这个程序。
C:\>go run HelloWorld.go
hello, world
C:\>
LiteIDE
如果不想用命令行,可以用 IDE 环境——LiteIDE,只需对 IDE 进行相应的配置即可。
除了 LiteIDE 外,还有 Sublime Text、Vim、Emacs、Eclipse、IntelliJ IDEA。
下载 LiteIDE 压缩文件,解压为 “liteide”后,双击 “{你的路径}\liteide\bin\liteide.exe”就可以看见如图 3 所示:

图 3 liteIDE 主界面
配置 liteIDE,点击菜单栏“查看->选项”,会看见如图 4 所示:

图 4 配置 liteIDE
左边选择“LiteIDE”,右边选择你的环境,比如,我的是 Windows 7 64 位,就选 win64-user.env,双击后,会看见该配置文件的内容:、
# native compiler windows amd64
GOROOT=C:\Go
#GOBIN=
GOARCH=amd64
GOOS=windows
CGO_ENABLED=1
PATH=%GOROOT%\bin;%PATH%
LITEIDE_GDB=gdb64
LITEIDE_MAKE=mingw32-make
LITEIDE_TERM=%COMSPEC%
LITEIDE_TERMARGS=
LITEIDE_EXEC=%COMSPEC%
LITEIDE_EXECOPT=/C
除了 win64-user.env 外,还有 win64.env,前者是用户配置文件,后者是整个机器的配置文件,因为 Windows 操作系统是多用户的。
确保 GOROOT=C:\ 行,是你机器的实际 Go SDK 的路径即可,比如,我的路径其默认路径 C:\Go。
工作路径。你可以为 LiteIDE 配置工作路径。选择工具栏”Go图标”,会看见图 5 所示:

图 5 配置工作路径
你可以看见两个路径,第一个是我自定义的,第二个是系统默认的。
参考资料
下载开发工具
下载相关文档手册
Go 语言环境搭建的更多相关文章
- go语言环境搭建+sublime text3(windows环境下)
感觉有点坑,整了一下午~搞定 go语言环境搭建+sublime text3(windows环境下) 1.安装sublime text3 2.安装go语言程序包 3.测试go语言是否安装成功 键 ...
- Mac下R语言环境搭建
Mac下R语言环境搭建 博主在数据分析的时候一直用的python(MATLAB太重了),最近跟其他搞学术的人合作,需要用一下R语言,所以也打算顺便学习一下R. R语言简介 R语言是用于统计分析,图形表 ...
- 浅谈Java语言环境搭建-JDK8
title: 浅谈Java语言环境搭建-JDK8 blog: CSDN data: Java学习路线及视频 1.What's the JDK,JRE JDK(Java Development Kit ...
- windows下面go语言环境搭建
步骤一:golang下载 下载地址是:http://www.golangtc.com/download 下载完成之后解压缩,放到你的c:/根目录下面.然后配置一下环境变量! 环境变量配置如下: 1.新 ...
- go语言环境搭建
1.官网https://golang.org/dl/下载go语言的执行器 2.此处以Windows操作系统上安装go为例,安装go1.7.3.windows-amd64.msi 3.配置go环境变量, ...
- go 语言环境搭建(Ubuntu + Sublime Text3 + GoSublime + gocode)
1. 首先安装go http://code.google.com/p/golang-china/wiki/Install 或者http://golang.org/doc/install这里有详细介绍. ...
- 再整理:Visual Studio Code(vscode)下的通用C语言环境搭建
版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://www.cnblogs.com/czlhxm/p/11794743.ht ...
- GoLang语言环境搭建及idea集成开发(超详细)
一.所需安装包(windows) 1. https://golang.org/dl/ 下载 MSI installer.不会翻墙的自己找国内下载,双击运行,按照提示安装即可.环境变量自动配置 2.i ...
- vs code C语言环境搭建
最近重温C语言,因为很多练习只是小程序,并不需要Clion和Codeblocks这样工程导向的编译软件,所以下载了vs code,并试图搜索相应的环境,在此过程中发现,网上许多vs code 的c/c ...
随机推荐
- laravel console - 自定义命令
在改造一个支付流程,新的流程加入了一个新的数据表字段,但是这个新的字段需要通过计算来填充,所以为了兼容历史数据,必须将已有的数据行重新计算一遍该字段. 这时使用 laravel console 命令就 ...
- cf1061c 普通dp题
题解见https://blog.csdn.net/godleaf/article/details/84402128 这一类dp题是可以压缩掉一维空间的,本题枚举a1到an,枚举到ai时枚举ai的每个约 ...
- 性能测试三十九:Jprofiler分析CPU过高和响应时间长的问题
使用Jprofiler监控分析案例 一.cpu负载过高:http://localhost:8080/PerfTeach/CpuTopServlet?id=1 cpu消耗高的可能原因1.使用了复杂的算法 ...
- python 全栈开发,Day92(编程式的导航,vue页面布局,marked包的使用)
昨日内容回顾 1. 组件间的传值 1. bus --> 空Vue对象 通过向bus对象抛出自定义事件的方式在组件间传递信息 2. 注意事项: 1. bus.$on()应该在组件mounted(挂 ...
- websocket+Django+python+paramiko实现web页面执行命令并实时输出
一.概述 WebSocket WebSocket的工作流程:浏览器通过JavaScript向服务端发出建立WebSocket连接的请求,在WebSocket连接建立成功后,客户端和服务端就可以通过 T ...
- 《剑指offer》-双栈实现队列
题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. 很基本的STL容器操作了,应该可以1A的,但是忘记返回值的时候,clang的报错感觉并不友好啊.. cl ...
- 解决Delphi7的自带的UTF-8编码转换函数BUG
Delphi7及其以下版本的 VCL 只支持 Ansi, 所以... WideString 与 UTF8String (定义与 AnsiString 相同) 并没有办法正确的在 VCL 中显示 Del ...
- 一篇笔记带你梳理JVM工作原理
首先要了解的 数据类型 Java虚拟机中,数据类型可以分为两类:基本类型和引用类型. 基本类型的变量保存原始值,即:他代表的值就是数值本身:而引用类型的变量保存引用值.“引用值”代表了某个对象的引用, ...
- [CQOI2017]小Q的棋盘
题解: 好像有题解说可以贪心.. 显然这是一棵树,考虑树形dp 维护f[i][j]从点i往下走j再回来经过的最多点,g[i][j]从点i往下走j不用回来经过的最多点 转移方程还是挺显然的,枚举的时候像 ...
- 【深入spring】IoC容器的实现
本文乃学习整理参考而来 IoC概述: 在spring中,IoC容器实现了依赖控制反转,它可以再对象生成或初始化时直接将数据注入到对象中,也可以通过将对象引用注入到对象数据域中的方式来注入方法调用的依赖 ...