文章由作者马志国在博客园的原创,若转载请于明显处标记出处: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常用的三个命令:

  1. go run:直接运行程序
  2. go build:编译生成可执行程序
  3. go get:获取远程包(需提前安装 git或hg)

1.1.2 LiteIDE

下载地址:http://liteide.org/cn/

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语言入门的更多相关文章

  1. 第一章 C++语言入门

            标准数据类型         C++语言提供了丰富的数据类型,如整数类型.实数类型(浮点数).字符类型等.每种数据类型均有均值范围,Dev-C++(4.9.9.2)是Windows平台 ...

  2. 第一章 corejava的入门

    第一章 corejava的入门一:什么是语言语言=os+数据结构+算法+思想os:操作系统数据结构:队,栈,二叉树,链表算法:做游戏开发时非常重要面试题:int a>0,b>0只使用一条输 ...

  3. 第一章.C语言简介

    C语言第一章 C语言简介   目录 一.C语言介绍 二.C语言特点 三.Hello World 四.转义符 五.占位符 六.俄罗斯方块游戏 七.文件下载 一.C语言介绍 C是一种通用的编程语言,广泛用 ...

  4. 第一章. ActionScript 语言基础

    第一章. ActionScript 语言基础 1.0. ActionScript 3.0 Cookbook 概述 1.1. 新建一个 ActionScript project 1.2. 自己定义应用程 ...

  5. 第一章C语言简介及输出函数 上机部分

    第一章C语言简介及输出函数 上机1 #include "stdio.h" void main() { printf("南方学院,你好!\n"); printf( ...

  6. ROS机器人程序设计(原书第2版)补充资料 (壹) 第一章 ROS系统入门

    ROS机器人程序设计(原书第2版)补充资料 (壹) 第一章 ROS系统入门 书中,大部分出现hydro的地方,直接替换为indigo或jade或kinetic,即可在对应版本中使用. 第一章主要包括R ...

  7. javaSE习题 第一章 JAVA语言概述

    转眼就开学了,正式在学校学习SE部分,由于暑假放视频过了一遍,略感觉轻松,今天开始,博客将会记录我的课本习题,主要以文字和代码的形式展现,一是把SE基础加强一下,二是课本中有很多知识是视频中没有的,做 ...

  8. [编程笔记]第一章 C语言概述

    //C语言学习笔记 第一讲 C语言概述 第二讲 基本编程知识 第三讲 运算符和表达式 第四讲 流程控制 第五讲 函数 第六讲 数组 第七讲 指针 第八讲 变量的作用域和存储方式 第九讲 拓展类型 第十 ...

  9. 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 ...

随机推荐

  1. Android - include属性用法

    include属性用法 本文地址: http://blog.csdn.net/caroline_wendy Android的layout中, 能够使用include属性样式, 这样能够把不同的layo ...

  2. CEF中JavaScript与C++交互

    在CEF里,JS和Native(C/C++)代码能够非常方便的交互,这里https://bitbucket.org/chromiumembedded/cef/wiki/JavaScriptIntegr ...

  3. R语言与数据分析之八:时间序列--霍尔特指数平滑法

    上篇我和小伙伴们分享了简单指数平滑法,简单指数平滑法仅仅能预測那些处于恒定水平和没有季节变动的时间序列,今天和大家分享非恒定水平即有增长或者减少趋势的.没有季节性可相加模型的时间序列预測算法---霍尔 ...

  4. 一行代码巧妙实现iOS返回button

    一行代码巧妙实现iOS返回button: self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc]initWithImage:[ ...

  5. Objective-C 和 Swift 混编项目的小 Tips(一)

    本文主要闲聊一些 Objective-C 和 Swift 混编项目带来的一些潜规则,希望能帮到对此感到疑惑的朋友.下面我们开始进入主题: 命名 官方 Guide 上只是简单叙述(Using Swift ...

  6. linux应用态下的时间

    1.时间值 1.1 日历时间(UTC) 该值是自1 9 7 0年1月1日0 0 : 0 0 : 0 0以来国际标准时间( U T C)所经过的秒数累计值(早期的手册称 U T C为格林尼治标准时间) ...

  7. MyBatis_查询缓存01

    一.查询缓存 查询缓存的使用,主要是为了提高查询访问速度.将用户对同一数据的重复查询过程简单化,不在每次均从数据库中查询获取结果数据,从而提高访问速度. MyBatis的查询缓存机制,根据缓存区的作用 ...

  8. 数据库的SQL优化

    1.对查询进行优化,要尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. (因为在条件查询条件添加索引,会直接被检索到列,会非常的快速) 2.应尽量避免在 wher ...

  9. ArcGIS API for JavaScript 4.2学习笔记[23] 没有地图如何进行查询?【FindTask类的使用】

    从第一篇到现在都是基于地图的,不管怎么样,不管是2D还是3D,至少有个图. 这次来个没有图的例子,看看纯文字的空间查询是什么样的. 本例适用于后台查询或低性能电脑的查询. 预览图 由于4.3和4.2的 ...

  10. 分享一个Maven的架构,以及在Maven配置中的注意事项

    Maven作为一个十分流行的项目管理工具,在我们的项目变得逐渐复杂的时候,可以有效的降低项目管理难度. 聚合工程就是当项目到达一定规模时,十分有效的管理子项目和模块的方法. 首先介绍一下,在大型项目中 ...