文章由作者马志国在博客园的原创,若转载请于明显处标记出处: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. SDL2源码分析2:窗体(SDL_Window)

    ===================================================== SDL源码分析系列文章列表: SDL2源码分析1:初始化(SDL_Init()) SDL2源 ...

  2. CI学习 CCNET Config 第一天

    CCNet的整体结构就是一个Xml文档,根元素就是cruisecontrol,具体的代码块如下所示: <cruisecontrol xmlns:cb="urn:ccnet.config ...

  3. 腾讯云开放云压测“黑科技“,产品上线从此不再“压力山大"

    商业转载请联系腾讯WeTest获得授权,非商业转载请注明出处. 能否解决"高并发"问题一直是检验一个产品后台是否稳定,架构是否合理,性能是否强大的核心标准.对于产品而言,多高的并发 ...

  4. Softmax多分类算法

    List<double[]> inputs_x = new List<double[]>(); inputs_x.Add(new double[] { 0.2, 0.3 }); ...

  5. [转]addEventListener() 方法,事件监听

    转载  白杨-M  http://www.cnblogs.com/baiyangyuanzi/p/6627401.html addEventListener() 方法,事件监听 你可以使用 remov ...

  6. CROSS JOIN,NATURAL JOIN

    CROSS JOIN:笛卡尔积 NATURAL JOIN:

  7. layui动态设置下拉框数据,根据后台数据设置选中

    追加下拉框数据: 设置默认选中: 正常的判断这种情况是不行的,因为追加出的数据,在前台显示的并不是同一个下拉框,原来的下拉框被隐藏了 因此需要:根据原来的位置,寻找下一个节点,寻找子节点的方式找到相应 ...

  8. Android破解学习之路(四)——Android游戏 3D摩托飞车破解

    经过前面三期的破解,想必大家已经非常熟悉破解的流程,这一篇也算是练手项目,我们继续来练习吧 apk下载地址:链接: https://pan.baidu.com/s/1sl3b3R3 密码: 6666 ...

  9. iOS APP跳转设置界面以及设置中的其他界面

    1.跳转设置总页面(iOS10+以及之前的都可以用:ios10+ 是跳转到了应用到设置界面) [[UIApplication sharedApplication]openURL:[NSURL URLW ...

  10. iis 10 ftp 被动模式配置

    第一步: 进入 Server Level 的FTP Firewall Support 第二步: 在 Data Channel Port Range 下配置 Passive mode 的端口号范围,注意 ...