1. 下载
https://golang.org/dl/ # Go语言官网地址,在国内下载太慢,甚至都无法访问。通过如下地址下载:https://golangtc.com/download

2. 安装
在windows下,直接一步步点击安装即可。

3. 配置
在正式开始go语言编程之前,需要进行一些基础环境变量的配置。
在这里主要需要配置2个环境变量:GOROOTGOPATH
(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的更多相关文章

  1. 学习go语言编程系列之定义变量

    package main import ( "fmt" "math") func main() { // 1. 定义变量名age,不初始化,使用对应类型的默认值 ...

  2. 如何轻松学习C语言编程!

    C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构.C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现 ...

  3. 珍藏的C语言编程系列教程

    本文有332个文字,大小约为2KB,预计阅读时间1分钟 这是本人珍藏的C语言.C++系列教程. 相信每个Coder的第一门编程语言就是C语言吧, 现在也依然很热门,不谈了.直接上链接,感兴趣的直接存, ...

  4. C#中的函数式编程:递归与纯函数(二) 学习ASP.NET Core Razor 编程系列四——Asp.Net Core Razor列表模板页面

    C#中的函数式编程:递归与纯函数(二)   在序言中,我们提到函数式编程的两大特征:无副作用.函数是第一公民.现在,我们先来深入第一个特征:无副作用. 无副作用是通过引用透明(Referential ...

  5. 学习ASP.NET Core Blazor编程系列二——第一个Blazor应用程序(上)

    学习ASP.NET Core Blazor编程系列一--综述 一.概述 Blazor 是一个生成交互式客户端 Web UI 的框架: 使用 C# 代替 JavaScript 来创建信息丰富的交互式 U ...

  6. 学习ASP.NET Core Blazor编程系列二——第一个Blazor应用程序(中)

    学习ASP.NET Core Blazor编程系列一--综述 学习ASP.NET Core Blazor编程系列二--第一个Blazor应用程序(上) 四.创建一个Blazor应用程序 1. 第一种创 ...

  7. 学习ASP.NET Core Razor 编程系列二——添加一个实体

    在Razor页面应用程序中添加一个实体 在本篇文章中,学习添加用于管理数据库中的书籍的实体类.通过实体框架(EF Core)使用这些类来处理数据库.EF Core是一个对象关系映射(ORM)框架,它简 ...

  8. 学习ASP.NET Core Razor 编程系列四——Asp.Net Core Razor列表模板页面

    学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 学习ASP.NET Core Razor 编程系列二——添加一个实体 学习ASP.NET ...

  9. 学习ASP.NET Core Razor 编程系列五——Asp.Net Core Razor新建模板页面

    学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 学习ASP.NET Core Razor 编程系列二——添加一个实体 学习ASP.NET ...

随机推荐

  1. CISCO运维记录之3650堆叠设备升级IOS(Version 16.3.6版本存在bug)

    CISCO运维记录之3650堆叠设备升级IOS(Version 16.3.6版本存在bug) 思科3000系列交换机使用cat3k_caa-universalk9.16.3.6版本存在bug,设备运行 ...

  2. 通过Nifi 导入csv文件到HDFS

    1. 拖入一个GetHttp 的processor     右健选择 configure  -> properties , 设置 url 和 filename    url : http://s ...

  3. photoshop学习2

    关于PS学习的一些基础知识.PS用了很长时间了,从来就没有明白过到底在做什么.今天看了视频,发现原来自己根本不会PS,其实本来也未曾会过.以前自己使用PS做一些工作,也仅限于裁图片,调一下亮度对比度, ...

  4. [WC2014]紫荆花之恋(动态点分治+替罪羊思想)

    题目描述 强强和萌萌是一对好朋友.有一天他们在外面闲逛,突然看到前方有一棵紫荆树.这已经是紫荆花飞舞的季节了,无数的花瓣以肉眼可见的速度从紫荆树上长了出来.仔细看看的话,这个大树实际上是一个带权树.每 ...

  5. 牛客寒假算法基础集训营3B 处女座的比赛资格(用拓扑排序解决DAG中的最短路)

    链接:https://ac.nowcoder.com/acm/contest/329/B 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言5242 ...

  6. webpack入门(七) API in LOADERS

    介绍 loaders允许你用require() 预处理文件(preprocess files)或者加载他们,在其他的构建工具中,loaders就是一种像“任务(tasks)”的东西.他提供了一种处理前 ...

  7. codeforces Hello 2019(未写完)

    A. Gennady and a Card Game a题惯例签到题 题意:给你一张牌,再给你5张牌,判断能不能出一次牌... 所以只要检查第二行中的某个卡是否与第一行中的卡具有共同字符 有就输出YE ...

  8. bzoj1497 最大获利(最大权闭合子图)

    题目链接 思路 对于每个中转站向\(T\)连一条权值为建这个中转站代价的边.割掉这条边表示会建这个中转站. 对于每个人向他的两个中转站连一条权值为\(INF\)的边.然后从\(S\)向这个人连一条权值 ...

  9. T4 反射实体模型生成代码(Demo)

    1.新建一个T4 Script   <#@ template language="C#" debug="True" #> <#@ output ...

  10. 关于MySQL锁的详解

    有2种 1.表锁 2.行锁 支持 .innodb支持行锁,表级锁 .myisam只支持表级锁 innodb实现了下面2种标准的行级锁 .共享锁 S LOCK 允许事务读一行数据 .排他锁 X LOCK ...