go语言20小时从入门到精通(一)

栏目: Go · 发布时间: 7年前

内容简介:2009年11月10日,Go语言正式成为开源编程语言家庭的一员。Go语言(或称Golang)是云计算时代的C语言。Go语言的诞生是为了让程序员有更高的生产效率,Go语言专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C或C++代码的速度,而且更加安全、支持并行进程。开发人员在为项目选择语言时,不得不在快速开发和性能之间做出选择。C和C++这类语言提供了很快的执行速度,而 Ruby 和 Python 这类语言则擅长快速开发。Go语言在这两者间架起了桥梁,不仅提供了高性能的语言,同时也

1. 初识 Go 语言

1.1 Go语言介绍

1.1.1 Go语言是什么

2009年11月10日,Go语言正式成为开源编程语言家庭的一员。

Go语言(或称Golang)是云计算时代的C语言。Go语言的诞生是为了让 程序员 有更高的生产效率,Go语言专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C或C++代码的速度,而且更加安全、支持并行进程。

开发人员在为项目选择语言时,不得不在快速开发和性能之间做出选择。C和C++这类语言提供了很快的执行速度,而 RubyPython 这类语言则擅长快速开发。Go语言在这两者间架起了桥梁,不仅提供了高性能的语言,同时也让开发更快速。

1.1.2 Go语言优势

l 可直接编译成机器码,不依赖其他库,glibc的版本有一定要求,部署就是扔一个文件上去就完成了。

l 静态类型语言,但是有动态语言的感觉,静态类型的语言就是可以在编译的时候检查出来隐藏的大多数问题,动态语言的感觉就是有很多的包可以使用,写起来的效率很高。

l 语言层面支持并发,这个就是Go最大的特色,天生的支持并发。Go就是基因里面支持的并发,可以充分的利用多核,很容易的使用并发。

l 内置runtime,支持垃圾回收,这属于动态语言的特性之一吧,虽然目前来说GC(内存垃圾回收机制)不算完美,但是足以应付我们所能遇到的大多数情况,特别是Go1.1之后的GC。

l 简单易学,Go语言的作者都有C的基因,那么Go自然而然就有了C的基因,那么Go关键字是25个,但是表达能力很强大,几乎支持大多数你在其他语言见过的特性:继承、重载、对象等。

l 丰富的标准库,Go目前已经内置了大量的库,特别是网络库非常强大。

l 内置强大的工具,Go语言里面内置了很多 工具 链,最好的应该是gofmt工具,自动化格式化代码,能够让团队review变得如此的简单,代码格式一模一样,想不一样都很困难。

l 跨平台编译,如果你写的Go代码不包含cgo,那么就可以做到window系统编译 linux 的应用,如何做到的呢?Go引用了plan9的代码,这就是不依赖系统的信息。

l 内嵌C支持,Go里面也可以直接包含C代码,利用现有的丰富的C库。

1.1.3 Go适合用来做什么

l 服务器编程,以前你如果使用C或者C++做的那些事情,用Go来做很合适,例如处理日志、数据打包、虚拟机处理、文件系统等。

l 分布式系统,数据库代理器等。

l 网络编程,这一块目前应用最广,包括Web应用、API应用、下载应用。

l 内存数据库,如google开发的groupcache,couchbase的部分组建。

l 云平台,目前国外很多云平台在采用Go开发,CloudFoundy的部分组建,前VMare的技术总监自己出来搞的apcera云平台。

1.2 环境搭建

1.2.1 安装和设置

请参考资料: Go语言环境搭建

1.2.2 标准命令概述

Go语言中包含了大量用于处理Go语言代码的命令和工具。其中,go命令就是最常用的一个,它有许多子命令。这些子命令都拥有不同的功能,如下所示。

l build:用于编译给定的代码包或Go语言源码文件及其依赖包。

l clean:用于清除执行其他go命令后遗留的目录和文件。

l doc:用于执行godoc命令以打印指定代码包。

l env:用于打印Go语言环境信息。

l fix:用于执行go tool fix命令以修正给定代码包的源码文件中包含的过时语法和代码调用。

l fmt:用于执行gofmt命令以格式化给定代码包中的源码文件。

l get:用于下载和安装给定代码包及其依赖包(提前安装git或hg)。

l list:用于显示给定代码包的信息。

l run:用于编译并运行给定的命令源码文件。

l install:编译包文件并编译整个程序。

l test:用于测试给定的代码包。

l tool:用于运行Go语言的特殊工具。

l version:用于显示当前安装的Go语言的版本信息。

1.2.3 学习资料

Go语言官网(需要翻墙): https://golang.org/

go中文社区: https://studygolang.com

go中文在线文档: https://studygolang.com/pkgdoc

1.3 第一个Go程序

1.3.1 Hello Go

// hello.go
package main

import (
    "fmt"
)

func main() {
    fmt.Println("Hello Go!")
}

1.3.2 代码分析

每个Go源代码文件的开头都是一个package声明,表示该Go代码所属的包。包是Go语言里最基本的分发单位,也是工程管理中依赖关系的体现。

要生成Go可执行程序,必须建立一个名字为main的包,并且在该包中包含一个叫main()的函数(该函数是Go可执行程序的执行起点)。

作者理解为就是入口文件。

Go语言的main()函数不能带参数,也不能定义返回值。

在包声明之后,是一系列的import语句,用于导入该程序所依赖的包。由于本示例程序用到了Println()函数,所以需要导入该函数所属的fmt包。

所有Go函数以关键字func开头。一个常规的函数定义包含以下部分:

func 函数名(参数列表)(返回值列表) {
    // 函数体
}

Go程序的代码注释与C++保持一致,即同时支持以下两种用法:

/* 块注释 */

// 行注释

Go程序并不要求开发者在每个语句后面加上分号表示语句结束,这是与C和C++的一个明显不同之处。

注意:强制左花括号{的放置位置,如果把左花括号{另起一行放置,这样做的结果是Go编译器报告编译错误。

go语言20小时从入门到精通(一)

1.3.2

1.3.3 命令行运行程序

go语言20小时从入门到精通(一)

1.3.3


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

The Mechanics of Web Handling

The Mechanics of Web Handling

David R. Roisum

This unique book covers many aspects of web handling for manufacturing, converting, and printing. The book is applicable to any web including paper, film, foil, nonwovens, and textiles. The Mech......一起来看看 《The Mechanics of Web Handling》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

随机密码生成器
随机密码生成器

多种字符组合密码