学习go语言编程系列之helloworld
1. 下载
https://golang.org/dl/ # Go语言官网地址,在国内下载太慢,甚至都无法访问。通过如下地址下载:https://golangtc.com/download。
2. 安装
在windows下,直接一步步点击安装即可。
3. 配置
在正式开始go语言编程之前,需要进行一些基础环境变量的配置。
在这里主要需要配置2个环境变量:GOROOT和GOPATH。
(1)GOROOT:GO的安装路径,需要添加到环境变量中。
Linux环境:
vim /etc/profile
export GOROOT=/usr/local/go
export PATH=$PATH:$GOROOT/bin
windows环境:
GOROOT=D:\Go
PATH=%PATH%;%GOROOT%\bin
(2)GOPATH:GO的工作目录,可类比eclipse的workspace,作为编译后二进制的存放目的地和import包时的搜索路径。同样需要添加到环境变量。
Linux环境:
vim /etc/profile
export GOPATH=/home/go
export PATH=$PATH:$GOPATH/bin
windows环境:
export GOPATH=D:\goworkpace
export PATH=%PATH%;%GOPATH%\bin
关于GOPATH的几点说明:
(1)GOPATH之下主要包含三个目录:bin,pkg,src。bin目录主要存放可执行文件;pkg目录存放编译好的库文件,主要是*.a文件;src目录下主要存放go的源文件。
(2)不要把GOPATH设置成go的安装路径,可以自己在用户目录下面创建一个目录,如:goworkpace。
(3)GOPATH可以是一个目录列表,go get下载的第三方库,一般都会下载到列表的第一个目录里面。
(4)需要把GOPATH中的可执行目录也配置到环境变量中,否则你自行下载的第三方go工具就无法使用了,即:PATH=PATH:GOPATH/bin。
4. 编写helloworld
在GOPATH路径下,新建目录:src,该目录是管理所有go程序源代码的路径, 如:D:\goworkpace\src。
在GOPATH/src路径下,新建程序目录:hello,即:D:\goworkpace\src\hello。
在GOPATH/src/hello路径下,新建文件:helloworld.go,内容如下:
package main
import "fmt"
func main() {
fmt.Println("Hello,World!")
}
进入windows控制台,输入命令:go run helloworld.go
可以看到,将会在控制台输出:Hello,World!
或者,在输入命令:go install hello
将会在GOPATH/bin路径下生成可执行文件:hello.exe,运行该文件,也会在控制台输出:Hello,World!
实际上,当执行命令“go install hello”时,将会在GOPATH/src路径下搜索名称为hello的项目,然后将该目录下的main程序文件编译为对应名称的可执行文件,存放到GOPATH/bin目录下。
5. 选择合适的IDE
工欲善其事,必先利其器。在实际项目开发中,很多时候不可能还那么原始地敲命令调试,所以选择一款合适的集代码编辑,运行及调试于一体的开发工具非常有必要。
何为合适?简而言之,用着顺手即可!当然,大神例外!(大神都是直接用文本编辑器滴干活^+^^+^)
作为java老司机,我还是首选eclipse,用着顺手。
通过在eclipse安装goclipse插件,就可以将eclipse打造成为go开发IDE,详见:http://goclipse.github.io/。
如果不是java程序员,我建议使用Visual Studio Code,毕竟eclipse本身运行还需要安装java环境,有点多此一举,详见:https://code.visualstudio.com/。
【参考】
https://golangbot.com/golang-tutorial-part-1-introduction-and-installation/ go语言系列教程
http://www.jianshu.com/p/4e699ff478a5 go环境变量配置 (GOROOT和GOPATH)
学习go语言编程系列之helloworld的更多相关文章
- 学习go语言编程系列之定义变量
package main import ( "fmt" "math") func main() { // 1. 定义变量名age,不初始化,使用对应类型的默认值 ...
- 如何轻松学习C语言编程!
C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构.C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现 ...
- 珍藏的C语言编程系列教程
本文有332个文字,大小约为2KB,预计阅读时间1分钟 这是本人珍藏的C语言.C++系列教程. 相信每个Coder的第一门编程语言就是C语言吧, 现在也依然很热门,不谈了.直接上链接,感兴趣的直接存, ...
- C#中的函数式编程:递归与纯函数(二) 学习ASP.NET Core Razor 编程系列四——Asp.Net Core Razor列表模板页面
C#中的函数式编程:递归与纯函数(二) 在序言中,我们提到函数式编程的两大特征:无副作用.函数是第一公民.现在,我们先来深入第一个特征:无副作用. 无副作用是通过引用透明(Referential ...
- 学习ASP.NET Core Blazor编程系列二——第一个Blazor应用程序(上)
学习ASP.NET Core Blazor编程系列一--综述 一.概述 Blazor 是一个生成交互式客户端 Web UI 的框架: 使用 C# 代替 JavaScript 来创建信息丰富的交互式 U ...
- 学习ASP.NET Core Blazor编程系列二——第一个Blazor应用程序(中)
学习ASP.NET Core Blazor编程系列一--综述 学习ASP.NET Core Blazor编程系列二--第一个Blazor应用程序(上) 四.创建一个Blazor应用程序 1. 第一种创 ...
- 学习ASP.NET Core Razor 编程系列二——添加一个实体
在Razor页面应用程序中添加一个实体 在本篇文章中,学习添加用于管理数据库中的书籍的实体类.通过实体框架(EF Core)使用这些类来处理数据库.EF Core是一个对象关系映射(ORM)框架,它简 ...
- 学习ASP.NET Core Razor 编程系列四——Asp.Net Core Razor列表模板页面
学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 学习ASP.NET Core Razor 编程系列二——添加一个实体 学习ASP.NET ...
- 学习ASP.NET Core Razor 编程系列五——Asp.Net Core Razor新建模板页面
学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 学习ASP.NET Core Razor 编程系列二——添加一个实体 学习ASP.NET ...
随机推荐
- 自学Python4.7-生成器(方式一:生成器函数)
自学Python之路-Python基础+模块+面向对象自学Python之路-Python网络编程自学Python之路-Python并发编程+数据库+前端自学Python之路-django 自学Pyth ...
- mailkit库收发邮件
mailkit库用于收发邮件.这个库可以替代C#自带的发邮件库 环境 W10 / VS2017CMMT / MailKit version="2.0.3" "net46 ...
- 解决 pip attributeerror 'nonetype' object has no attribute 'bytes'
for Windows : python -m pip install -U pip for Linux : pip install -U pip
- angular2路由与express路由冲突的问题
angular2的路由定义了一个/a,如果走angular的路由没问题,如果直接访问/a就会出现cannot GET /a的错误,原因就是express的路由问题. 所以路由走angular2,那ex ...
- js原生事件系统与坐标系统
今天来实现一个可兼容的js原生拖拽,在这里面我将会讲到: 1.封装兼容性的事件系统. 2.封装得到鼠标当前位置的系统. 3.完成拖拽的实现. 首先,我们要讲到鼠标位置的获取,讲到这个,就离不开js的w ...
- 【洛谷P1303 A*B Problem】
题目描述 求两数的积. 输入输出格式 输入格式: 两行,两个数. 输出格式: 积 输入输出样例 输入样例#1: 1 2 输出样例#1: 2 说明 每个数字不超过10^2000,需用高精 emm,显然本 ...
- react-native中的触摸事件
移动应用上的用户交互基本靠"摸".当然,"摸"也是有各种姿势的:在一个按钮上点击,在一个列表上滑动, 或是在一个地图上缩放.React Native 提供了可以 ...
- 函数后面的const修饰符的作用
比如 void Fun() const; 的const是修饰什么的? 其实是修饰this指向的对象的. 这篇文章很详细的说明了const的作用,其中第三点说明了这种const的作用:const的用法, ...
- java的集合
Collection: 1.list ArrayList.Vector.LinkedList ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构. Vector是 ...
- java和c#中的装箱和拆箱操作
c#装箱和拆箱 装箱:整体上来说,装箱是将值类型转换成引用类型,比如将Vector3转换成Object类型. 具体而言: 1)在托管堆中为值类型分配内存.除了原始的数值以外还应该有指向该数值的引用. ...