第一章 Go语言入门
文章由作者马志国在博客园的原创,若转载请于明显处标记出处:http://www.cnblogs.com/mazg/
Go学习群:415660935
1.1 编译环境及开发工具
1.1.1 Go语言编译器
下载地址:http://liteide.org/cn/doc/install/
由于Go语言支持Windows、mac和Linux等主流操作系统,所以我们需要根据操作系统选择不同的安装包文件。以win10 64位操作系统为例,选择的安装包文件为:go1.8.3.windows-amd64.msi。点击默认安装即可。
接下来,配置环境变量GOPATH。右击”此电脑”选择属性,然后选择左边列表中的高级系统设置,接下来在弹出的对话框中点击环境变量按钮。在系统变量中,点击新建按钮。在弹出的对话框中,变量名写GOPATH,变量值写设置的Go项目路径。
Go项目路径下约定有三个子目录:
1) src 存放源代码(比如:.go .c .h .s等)
2) pkg存放编译后生成的文件(比如:.a)
3) bin 存放编译后生成的可执行文件(为了执行方便,可以把此目录加入到 path 环境变量中)
Go常用的三个命令:
- go run:直接运行程序
- go build:编译生成可执行程序
- go get:获取远程包(需提前安装 git或hg)
1.1.2 LiteIDE
LiteIDE是一款简单,开源,跨平台的Go IDE。
同样以win10 64位操作系统为例,选择的安装包文件为:liteidex32.2.windows-qt5.zip。直接解压,在其中的bin目录下,点击liteide.exe即可运行。
重新设置GOPATH后,liteIDE不会自动更新,也需要重新设置”查看”->”编辑当前环境”。Go工具对包的查找从src目录开始。
1.1.3 Git工具
下载地址:https://git-scm.com/download/win
以win10 64位操作系统为例,选择的安装包文件为:Git-2.8.1-64-bit.exe。
使用Git工具获取Go的远程包。Git是一款免费、开源的分布式版本控制系统,方便的从https://github.com/获取源代码。gitHub是一个面向开源及私有软件项目的托管平台,因为只支持git 作为唯一的版本库格式进行托管,故名gitHub。
1.2 第一个Go程序
以传统的“Hello World”为例,开始Go语言编程之旅。
package main import "fmt" func main() {
fmt.Println("Hello 世界")
}
代码解读:
每个Go源文件都以一条package声明语句开始,表示该源文件属于哪个包。包类似于其它语言的库或模块。这个例子为package main。main包比较特殊,它定义了一个独立可执行的程序,而不是库。
紧接着是一系列导入包语句,用于导入该程序所依赖的包。由于本示例程序用到了Println()函数,所以需要导入该函数所属的fmt包。需要注意的是,不能包含在源代码中没有用到的包,否则Go编译器会报编译错误。
在main包,有并且仅有一个main( )函数,是Go程序执行的入口。在main()函数中调用Println()函数打印输出 Hello,世界。我们特意使用了中文“世界”,这意味着Go语言原生支持Unicode,可以处理全世界任何语言的文本。另外,Go语句不需要加分号表示语句结束。在Go语言中,所有函数以关键字func开头。一个常规的函数定义包含以下部分:
func 函数名(参数列表)(返回值列表){
//函数体
}
而main函数既没有参数,也没有返回值。
Go代码注释与C语言保持一致,同时支持以下两种用法:
//行注释
/*
块注释即多行注释
*/
演示go build go install go run命令,并比较其区别。
go build 编译包,并且在当前目录下生成可执行文件
go run 直接运行,但命令后跟的是文件,而不是目录(包)
go install 会在src同级目录下的package目录下生成.a包文件,在同级的bin目录生成可执行文件。这样可以在任意目录直接执行程序。
1.3 项目管理
以一个简单的计算器程序为例演示如何使用liteIDE开发和管理项目。如果需要管理多个项目,个人认为多个项目共用一个src目录比较方便。使用liteIDE打开$GOPATH目录。在src目录下创建计算器程序项目,目录组织如下:
godev
|->bin
|->pkg
|->src
|->其它项目...
|->mycalc
|->main
|->main.go
|->math
|->add.go
|->sub.go
|->math2
|->mul.go
main.go
package main import (
"fmt"
"mycalc/math"
"mycalc/math2"
) func main() {
fmt.Println("请输入两个整数:")
var a, b int
fmt.Scanf("%d %d", &a, &b)
fmt.Println(a, "+", b, "=", math.Add(a, b))
fmt.Println(a, "-", b, "=", math.Sub(a, b))
fmt.Println(a, "*", b, "=", math2.Mul(a, b)) }
add.go代码清单
package math func Add(a int, b int) int {
return a + b
}
sub.go代码清单
package math func Sub(a int, b int) int {
return a - b
}
mul.go代码清单
package math2 func Mul(a int, b int) int {
return a * b
}
注意:需要被外部使用的Add、Sub和Mul函数首字母大写。
第一章 Go语言入门的更多相关文章
- 第一章 C++语言入门
标准数据类型 C++语言提供了丰富的数据类型,如整数类型.实数类型(浮点数).字符类型等.每种数据类型均有均值范围,Dev-C++(4.9.9.2)是Windows平台 ...
- 第一章 corejava的入门
第一章 corejava的入门一:什么是语言语言=os+数据结构+算法+思想os:操作系统数据结构:队,栈,二叉树,链表算法:做游戏开发时非常重要面试题:int a>0,b>0只使用一条输 ...
- 第一章.C语言简介
C语言第一章 C语言简介 目录 一.C语言介绍 二.C语言特点 三.Hello World 四.转义符 五.占位符 六.俄罗斯方块游戏 七.文件下载 一.C语言介绍 C是一种通用的编程语言,广泛用 ...
- 第一章. ActionScript 语言基础
第一章. ActionScript 语言基础 1.0. ActionScript 3.0 Cookbook 概述 1.1. 新建一个 ActionScript project 1.2. 自己定义应用程 ...
- 第一章C语言简介及输出函数 上机部分
第一章C语言简介及输出函数 上机1 #include "stdio.h" void main() { printf("南方学院,你好!\n"); printf( ...
- ROS机器人程序设计(原书第2版)补充资料 (壹) 第一章 ROS系统入门
ROS机器人程序设计(原书第2版)补充资料 (壹) 第一章 ROS系统入门 书中,大部分出现hydro的地方,直接替换为indigo或jade或kinetic,即可在对应版本中使用. 第一章主要包括R ...
- javaSE习题 第一章 JAVA语言概述
转眼就开学了,正式在学校学习SE部分,由于暑假放视频过了一遍,略感觉轻松,今天开始,博客将会记录我的课本习题,主要以文字和代码的形式展现,一是把SE基础加强一下,二是课本中有很多知识是视频中没有的,做 ...
- [编程笔记]第一章 C语言概述
//C语言学习笔记 第一讲 C语言概述 第二讲 基本编程知识 第三讲 运算符和表达式 第四讲 流程控制 第五讲 函数 第六讲 数组 第七讲 指针 第八讲 变量的作用域和存储方式 第九讲 拓展类型 第十 ...
- C基础入门 - 第一章 - C语言绪言
第1章 C语言绪言 1.1 C语言概述 1.1.1 C语言世界 1.1.2 C语言学习, 能当饭吃吗 1.2 开发环境构建 1.2.1 visual studio安装使用 1.2.2 visual s ...
随机推荐
- SDL2源码分析2:窗体(SDL_Window)
===================================================== SDL源码分析系列文章列表: SDL2源码分析1:初始化(SDL_Init()) SDL2源 ...
- CI学习 CCNET Config 第一天
CCNet的整体结构就是一个Xml文档,根元素就是cruisecontrol,具体的代码块如下所示: <cruisecontrol xmlns:cb="urn:ccnet.config ...
- 腾讯云开放云压测“黑科技“,产品上线从此不再“压力山大"
商业转载请联系腾讯WeTest获得授权,非商业转载请注明出处. 能否解决"高并发"问题一直是检验一个产品后台是否稳定,架构是否合理,性能是否强大的核心标准.对于产品而言,多高的并发 ...
- Softmax多分类算法
List<double[]> inputs_x = new List<double[]>(); inputs_x.Add(new double[] { 0.2, 0.3 }); ...
- [转]addEventListener() 方法,事件监听
转载 白杨-M http://www.cnblogs.com/baiyangyuanzi/p/6627401.html addEventListener() 方法,事件监听 你可以使用 remov ...
- CROSS JOIN,NATURAL JOIN
CROSS JOIN:笛卡尔积 NATURAL JOIN:
- layui动态设置下拉框数据,根据后台数据设置选中
追加下拉框数据: 设置默认选中: 正常的判断这种情况是不行的,因为追加出的数据,在前台显示的并不是同一个下拉框,原来的下拉框被隐藏了 因此需要:根据原来的位置,寻找下一个节点,寻找子节点的方式找到相应 ...
- Android破解学习之路(四)——Android游戏 3D摩托飞车破解
经过前面三期的破解,想必大家已经非常熟悉破解的流程,这一篇也算是练手项目,我们继续来练习吧 apk下载地址:链接: https://pan.baidu.com/s/1sl3b3R3 密码: 6666 ...
- iOS APP跳转设置界面以及设置中的其他界面
1.跳转设置总页面(iOS10+以及之前的都可以用:ios10+ 是跳转到了应用到设置界面) [[UIApplication sharedApplication]openURL:[NSURL URLW ...
- iis 10 ftp 被动模式配置
第一步: 进入 Server Level 的FTP Firewall Support 第二步: 在 Data Channel Port Range 下配置 Passive mode 的端口号范围,注意 ...