1 Go语言初识
Go 是一个开源的编程语言,它能让构造简单、可靠且高效的软件变得容易。
Go是从2007年末由Robert Griesemer, Rob Pike, Ken Thompson主持开发,后来还加入了Ian Lance Taylor, Russ Cox等人,并最终于2009年11月开源,在2012年早些时候发布了Go 1稳定版本。现在Go的开发已经是完全开放的,并且拥有一个活跃的社区。
Go语言(或称Golang)是云计算时代的C语言。Go语言的诞生是为了让程序员有更高效的生产效率,Go语言专门针对多处理器系统应用程序的编程进行了优化,使用Go语言编译的程序可以媲美C或C++代码的速度,而且更加安全、支持并行进程。
开发人员在为项目选择语言时,不得不在快速开发和性能之间做出选择。C和C++这类语言提供了很快速的执行速度,而Ruby和Python这类语言则擅长快速开发。Go语言在这两者间架起了桥梁,不仅提供了高性能的语言,同时也让开发更快速。
Go 语言被设计成一门应用于搭载 Web 服务器,存储集群或类似用途的巨型中央服务器的系统编程语言。
对于高性能分布式系统领域而言,Go 语言无疑比大多数其它语言有着更高的开发效率。它提供了海量并行的支持,这对于游戏服务端的开发而言是再好不过了。
计算机软件经历了数十年的发展,形成了多种学术流派,有面向过程编程、面向对象编程、函数式编程、面向消息编程等,这些思想究竟孰优孰劣,众说纷纭。
除了OOP外,近年出现了一些小众的编程哲学,Go语言对这些思想亦有所吸收。例如,Go语言接受了函数式编程的一些想法,支持匿名函数与闭包。再如,Go语言接受了以Erlang语言为代表的面向消息编程思想,支持goroutine和通道,并推荐使用消息而不是共享内存来进行并发编程。总体来说,Go语言是一个非常现代化的语言,精小但非常强大。
为了保持语言的简洁和简单,按照类似的语言省略常用的功能。
Go语言的特性有:
(1)在线编辑
在学习Go语言编程之前,我们需要安装和配置好Go语言的开发环境。可以选择线上的编译器:http://tour.golang.org/welcome/1来直接执行代码。
注:由于某种原因,golang官网被国内屏蔽。你可以去 http://www.yinchengxueyuan.com/forum.php 索取。或是使用代理来访问外部网站。
(2)本地编辑
在自己的计算机上安装开发编译环境。
Go 语言支持以下系统:
安装包下载地址为:https://golang.org/dl/。各个系统对应的包名:
以下介绍了在UNIX/Linux/Mac OS X, 和 FreeBSD系统下使用源码安装方法:
①下载源码包:go1.10.1.linux-amd64.tar.gz
②将下载的源码包解压至 /usr/local目录
tar -C /usr/local -xzf go1.10.1.linux-amd64.tar.gz
③将 /usr/local/go/bin 目录添加至PATH环境变量
export PATH=$PATH:/usr/local/go/bin
注意:MAC 系统下你可以使用 .pkg 结尾的安装包直接双击来完成安装,安装目录在 /usr/local/go/ 下。
Windows 下可以使用 .msi 后缀(在下载列表中可以找到该文件,如go1.4.2.windows-amd64.msi)的安装包来安装。默认情况下.msi文件会安装在 C:\Go 目录下。你可以将 C:\Go\bin 目录添加到 PATH环境变量中。添加后你需要重启命令窗口才能生效。
在cmd中输入go,如果出现如下内容,则说明安装成功。
Go语言中包含了大量用于处理Go语言代码的命令和工具。其中,go命令就是最常用的一个,它有许多子命令。这些子命令都拥有不同的功能,如下所示:
还有:fmt、generate、get、install、list、run、test、tool、version、vet
Go语言官网:http://golang.org/
go中文社区:https://studygolang.com
go中文在线文档:https://studygolang.com/pkgdoc
在Windows系统下进行安装后的测试。创建工作目录 C:\>Go_WorkSpace。 文件名: test.go,代码如下:
package main
import "fmt"
func main() {
fmt.Println("Hello World!")
}
注意:要想对中文的支持必须把文件的格式变为UTF-8编码
接下来让我们来看下简单的代码,该代码输出了"Hello World!":
package main
import "fmt"
func main() {
/* 打印Hello World! */
fmt.Println("Hello World!")
}
让我们来看下以上程序的各个部分:
//1)go语言以包作为管理单位
//2)每个文件必须先声明包
//3)程序必须有一个main包(重要)
package main //属于可以执行的文件
import "fmt" //导入fmt模块实现输入输出
/*
func 函数
main 主要执行函数
()参数
{}函数体
*/
//入口函数
func main() { //左括号必须和函数名同行
//打印
//"Hello,World!"打印到屏幕,Println()会自动换行
//调用函数,大部分都需要导入包
fmt.Println("Hello World!") //go语言语句结尾没有分号
/*
这也是注释,是块注释
*/
}
让我们来看下如何编写 Go 代码并执行它。步骤如下:
使用 go 命令执行以上代码输出结果如下:
C:\Go_WorkSpace>go run test.go
Hello, World!
// 当前程序的包名
package main
// 导入其他包
import . "fmt"
// 常量定义
const PI = 3.14
// 全局变量的声明和赋值
var name = "gopher"
// 一般类型声明
type newType int
// 结构的声明
type gopher struct{}
// 接口的声明
type golang interface{}
// 由main函数作为程序入口点启动
func main() {
Println("Hello World!")
}
可以通过 import 关键字单个导入:
import "fmt"
import "io"
也可以同时导入多个:
import (
"fmt",
"io"
)
使用
package main
// 为fmt起别名为fmt2
import fmt2 "fmt"
func main(){
fmt2.Println("Hello world!")
}
省略调用(不建议使用):
// 调用的时候只需要Println(),而不需要fmt.Println()
import . "fmt"
前面加个点表示省略调用,那么调用该模块里面的函数,可以不用写模块名称了:
import . "fmt"
func main (){
Println("Hello world!")
}
可见性规则
Go语言中,使用大小写来决定该常量、变量、类型、接口、结构或函数是否可以被外部包所调用。
函数名首字母小写即为 private:
func function() {}
函数名首字母大写即为 public:
func Function() {}
新浪微博:古老医麦
技术交流论坛:http://www.yinchengxueyuan.com/forum.php