二、Go语言开发环境安装与编写第一个Hello World
本系列文章均为学习过程中记录的笔记,欢迎和我一起来学习Go语言。
全文使用环境如下:
- Go语言版本:1.13
- 操作系统:deepin
- 使用工具:Goland开发工具
Go语言追溯历史
Go语言2009年正式发布,Go语言又称为Golang,由Google公司开发的一种编程语言。
其主要特性在于部署简单、并发好(协程)、语言设计简单编写方便、保留指针等。
Go语言为编译型语言,目前 Docker、Go-Ethereum、Thrraform 和 Kubernetes均为Go语言发开。
Go语言编写遵循以下三个步骤:
1、创建编写Go程序文件
2、使用Go build编译Go程序,生成执行文件
3、执行编译后的执行程序。
下面我们开始正式编写作为程序员本身的最重要的一个程序,HelloWorld
第一步,搭建环境
1、在deepin中安装Go语言相关开发环境还是比较简单的,基本上都是tar.gz压缩包,首先我们到Go官网下载基础包,这里我们下载的是Linux版本。
https://golang.google.cn/dl/

2、将下载好的压缩包解压缩到你需要安装的目录中,这里我安装在/usr/local目录,参考的是官方安装文档
tar -C /usr/local -xzf /home/zhangyc/Downloads/go1.13.6.linux-amd64.tar.gz
3、配置一下环境变量,使其在系统任何位置都可以使用,这里我配置的是全局配置,使其所有账号均可使用
sudo vim /etc/profile
#在文件最底下追加下面变量
export PATH=$PATH:/usr/local/go/bin

4、执行命令使其环境变量生效
source /etc/profile
5、在命令行中输入go和go version命令进行检查环境是否具备

6、上面我们已经安装完成基础go环境了,下面我们开始安装编辑器。首先下载Goland编辑器

7、创建一个安装目录,我这里在根目录上创建了一个目录,用于放置这些安装的工具
mkdir /idea
chown zhangyc:zhangyc /idea
cp ~/Downloads/goland-2019.3.1.tar.gz /idea
cd /idea
tar -zxf goland-2019.3.1.tar.gz
8、至此其实已经安装好了,启动时运行/idea/GoLand-2019.3.1/bin/goland.sh 即可,方便快速启动可以在桌面创建一个快捷方式,或在环境变量PATH中配置上GoLand目录,这样可以任何命令窗目录下运行程序。
第二步,编写HelloWorld程序
下面我们开始编写第一个Go程序
1、首先新建一个Go项目程序

2、这里如果GOROOT目录没有加载出来则可以点击后面的+号进行添加刚才我们安装的Go主程序目录
左侧第一个Go程序新建是基于GOPATH目录的,我们这里采用第二个Go Modules模块化创建,这样有利于我们后续多个项目独立化和引用版本控制。
创建完成后是这样的:

其中go.mod就是Go语言模块化的核心配置文件,这里面包含了我们项目中使用的所有引用信息和相关版本号。
3、新建一个目录,baseDemoProject1,这里我们是为了区分后续的其他测试项目,因此这个独立创建一个目录,其实我们现在实现也可以直接创建一个go程序。
然后在该目录下创建一个go文件,命名为HelloWWorld,命名可以随意


4、在该文件中,我们编写如下代码
func main() {
fmt.Println("HelloWorld")
}
当我们输入如上代码时会发现GoLand组件自动给我们补全了组件引用。完整代码如下:
package main
import "fmt"
func main() {
fmt.Println("HelloWorld")
}
这里我们需要修改package包名字,更改为main,这样它就变成了主入口了。
上面package是包名
import是导入了哪些组件
func是声明函数,我们这里声明了一个func main函数,并放到main包中,这时它就变成了整个go项目的主入口函数了。
每个package中有两个函数是go自动调取的,init与main,init函数都是可选的,但package main就必须包含一个main函数,先调用init函数,再调用main函数,运行程序,必须要运行存在main函数的go文件
5、在当前输入页面右击运行一下该程序


OK,至此第一个go程序我们编写完成了。那如何页面上打印HelloWorld呢?
6、在原有代码中加入如下代码
func main() {
//打印
fmt.Println("Hello World")
/*搭建一个http服务,实现基础打印*/
//指定当前目录为根目录
http.Handle("/", http.FileServer(http.Dir(".")))
//使用端口8080作为服务监控端口
http.ListenAndServe(":8080", nil)
}
这里我们完成了一个基础的web服务搭建,暴露出来的端口是8080,我们来访问一下,成功加载出来我们本地的目录。

它遍历了我们本地目录,这是因为http.FileServer(http.Dir("."))这句话,它的含义是将当前目录作为文件服务器,然后传给了handle中。
我们编写一个方法,让其调用一下看看。
func main() {
//打印
fmt.Println("Hello World")
/*搭建一个http服务,实现基础打印*/
//指定当前目录为根目录
http.Handle("/", http.FileServer(http.Dir(".")))
http.HandleFunc("/hello", helloWorld)
//使用端口8080作为服务监控端口
http.ListenAndServe(":8080", nil)
}
//在浏览器中打印Hello World
func helloWorld(w http.ResponseWriter,r *http.Request) {
fmt.Fprint(w,"Hello World")
}
再次运行,我们看到浏览器页面上打印出来了

至此,我们的第一个Go Web程序编写完成。相关代码我已经放到Gitee与GitHub上了,有需要的可以通过下面的地址下载。
二、Go语言开发环境安装与编写第一个Hello World的更多相关文章
- Go语言开发环境安装
Go是Google开发的一种编译型,並發型,并具有垃圾回收功能的编程语言. 去http://golang.org/doc/install#download 下载相应的版本. 1.安装go语言:2.将g ...
- go语言开发环境安装及第一个go程序
下载Go语言开发包 大家可以在Go语言官网(https://golang.google.cn/dl/)下载 Windows 系统下的Go语言开发包,如下图所示. 安装Go语言开发包 双击我们下载好的G ...
- Scala系统学习(二):Scala开发环境安装配置
Scala可以安装在任何基于UNIX/Linux或基于Windows的系统上.在您的机器上开始安装Scala之前,必须在计算机上安装Java 1.8或更高版本. 下面请按照以下步骤安装Scala. 步 ...
- Go语言开发环境配置
一.我为什么要学习go语言 当今已经是移动和云计算时代,Go出现在了工业向云计算转型的时刻,简单.高效.内 置并发原语和现代的标准库让Go语言尤其适合云端软件开发(毕竟它就是为此而设计的).到2014 ...
- (转载)Go语言开发环境配置
一.我为什么要学习go语言 当今已经是移动和云计算时代,Go出现在了工业向云计算转型的时刻,简单.高效.内 置并发原语和现代的标准库让Go语言尤其适合云端软件开发(毕竟它就是为此而设计的).到2014 ...
- 【Linux 操作系统】阿里云服务器 操作实战 部署C语言开发环境(vim配置,gcc) 部署J2EE网站(jdk,tomcat)
. 作者 :万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/18964835 . 博客总结 : 设置SecureCRT ...
- 阿里云服务器 操作实战 部署C语言开发环境(vim配置,gcc) 部署J2EE网站(jdk,tomcat)
. 作者 :万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/18964835 . 博客总结 : 设置SecureCRT ...
- R语言开发环境的搭建
1.R语言的下载 https://mirrors.tuna.tsinghua.edu.cn/CRAN/ 2.R语言的安装 安装完后,打开R Console 输入 pie(c(0.9, 0.2, 0.3 ...
- 第1章 开发环境安装和配置(二)安装JDK、SDK、NDK
原文 第1章 开发环境安装和配置(二)安装JDK.SDK.NDK 无论是用C#和VS2015开发Androd App还是用Java和Eclipse开发Androd App,都需要先安装JDK和Andr ...
随机推荐
- 蓝桥杯 K好数(Java)
越来越觉得自己菜,一道简单的动态规划写不出来,题解也是看了很多份才看懂了,所以尽量以图表的方式写了题解,希望我的题解能帮到其他人吧.(;´Д`) 首先是题目: 输入描述: 输入包含两个正整数,K和L. ...
- 白话web安全
伤心往事 梦回大二,那时候沉迷于毒奶粉,甚至国庆都在宿舍与毒奶粉共同度过,但是却发生了一件让我迄今难忘的事情~ 我新练的黑暗武士被盗了!!!干干净净!!! 虽然过了好久了,但是记忆犹新啊,仿佛发生在昨 ...
- vulnhub~MyExpense
最近有点忙,这几天的vulnhub断更了,今天试着做了一下myexpense,当然想要一帆风顺是不可能的,哪怕是有别人的steps 和walkthrough.所以就遇到的坑总结如下: 一般套路就是nm ...
- 一夜搞懂 | Java 内存模型与线程
前言 本文已经收录到我的 Github 个人博客,欢迎大佬们光临寒舍: 我的 GIthub 博客 学习导图 一.为什么要学习内存模型与线程? 并发处理的广泛应用是 Amdah1 定律代替摩尔定律成为计 ...
- 直播回顾 | IOT、AI、云计算等融合技术推进制造业产业转型(二)
3月31日,BoCloud博云.京东智联云.海尔集团联手,以“制造”到“智造”为主题,进行了IT赋能企业数字化转型实践分享. 博云售前解决方案架构师尹贺杰,京东云与AI企业云业务部高级业务技术经理吴世 ...
- apache-atlas 深度剖析
atlas 是apache下的大数据的元数据管理平台,支持对hive.storm.kafka.hbase.sqoop等进行元数据管理以及以图库的形式展示数据的血缘关系. 一.架构 整体架构实现如下图 ...
- vim grep sed awk对大小写不敏感
vim grep sed awk对大小写不敏感 环境 [root@osker ~]# cat /etc/redhat-release CentOS Linux release (Core) [root ...
- android开发对应高德地图定位服务进度一
进行android的高德地图开发首先需要进入高德地图的控制台进行注册登录.之后创建新的应用并且绑定软件得到相应的key. 这里面需要找到自己软件对应的多个SHA1.这里有发布版和调试版,以及对应的软件 ...
- 按公式产生随机数、java中的重载、递归、有关计算机计算的问题
1.按公式产生随机数x1=(16807*x)%(Integer.MAX_VALUE)x=x1;通过这个公式进行随机数的产生,当产生的数字大于2e+32-2时,在用产生随机数的方式进行数字的输出.主要思 ...
- std::lock_guard和std::unique_lock的区别
std::lock_guard 1 初始化的时候锁定std::mutex std::mutex m_mtx; std::lock_guard<std::mutex> m_lock(m_mt ...