数据结构和算法在计算机科学里,有非常重要的地位。此系列文章尝试使用 Golang 编程语言来实现各种数据结构和算法,并且适当进行算法分析。
我们会先简单学习一下Golang,然后进入计算机程序世界的第一个大门。
简单入门Golang
我们只学Golang
语言的一个子集,足以开展接下来数据结构和算法的实现即可。
一、前言
Golang
语言是谷歌Google
公司在2007年启动,并在2009年正式发布并开源
的高级编程语言。开源地址:https://github.com/golang/go,官网地址:https://golang.org。
Golang
语言语法简单,支持多平台交叉编译(Linux/Mac/Windows),支持内存自动GC
(垃圾回收),支持嵌C/C++
开发,并且实现了语法层面的线程调度,开发多线程程序十分方便。语法很像C/Python/JavaScript
等高级编程语言。
设计这门语言的设计者有以下几位:
-
Ken Thompson
:在贝尔实验室与Dennis M. Ritche
发明了C
语言和Unix
操作系统,与Rob Pike
发明了UTF-8
编码,图灵奖得主。 -
Rob Pike
:也参与开发了Unix
操作系统,UTF-8
编码发明者之一。 -
Robert Griesemer
:参与过V8 JavaScript
引擎和Java HotSpot
虚拟机的研发。
前两位比较知名,现在都已经退休了,其他人有兴趣可以谷歌一下。
二、安装并简单使用
安装Golang:https://golang.org/dl:Windows 操作系统点击msi
按提示安装,Mac 操作系统可以使用brew install golang
安装。
打开命令行终端输入:
go version
显示以下结果即为成功:
go version go1.13 darwin/amd64
在任一文件夹下新建一个文件main.go
(Golang
语言编写的程序文件后缀必须都为.go
):
package main
import (
"fmt"
"time"
)
func init() {
fmt.Println("init will be before hello world")
}
func main() {
fmt.Println("hello world")
fmt.Println("today times:" + time.Now().String())
}
打开命令行终端进行编译:
go build main.go
编译后会在本地文件夹下生成一个二进制文件:main
或者main.exe
(Windows系统)。
执行二进制:
./main
将会打印出以下结果:
init will be before hello world
hello world
today times:2019-12-09 13:14:14.383118 +0800 CST m=+0.000199077
三、如何学习一门语言
每学一门编程语言,都离不开学习它的语言特征:
- 支持哪些
基本数据类型
,如整数,浮点数,布尔值,字符串,支持哪些高级数据类型,如数组,结构体等。 -
if
判断和while
循环语句是怎样的,是否有switch
或者goto
等语句。 - 语言
函数
的定义是怎样的,如何传递函数参数,有没有面向对象
的语言特征等。 -
package
包管理是怎样的,如何管理一个工程,官方提供哪些标准库,如时间处理,字符串处理,HTTP 库,加密库等。 - 有没有特殊的语言特征,其他语言没有的,比如某些语法糖。
系列文章入口
我是陈星星,欢迎阅读我亲自写的 数据结构和算法(Golang实现),文章首发于 阅读更友好的GitBook。
- 数据结构和算法(Golang实现)(1)简单入门Golang-前言
- 数据结构和算法(Golang实现)(2)简单入门Golang-包、变量和函数
- 数据结构和算法(Golang实现)(3)简单入门Golang-流程控制语句
- 数据结构和算法(Golang实现)(4)简单入门Golang-结构体和方法
- 数据结构和算法(Golang实现)(5)简单入门Golang-接口
- 数据结构和算法(Golang实现)(6)简单入门Golang-并发、协程和信道
- 数据结构和算法(Golang实现)(7)简单入门Golang-标准库
- 数据结构和算法(Golang实现)(8.1)基础知识-前言
- 数据结构和算法(Golang实现)(8.2)基础知识-分治法和递归
- 数据结构和算法(Golang实现)(9)基础知识-算法复杂度及渐进符号
- 数据结构和算法(Golang实现)(10)基础知识-算法复杂度主方法
- 数据结构和算法(Golang实现)(11)常见数据结构-前言
- 数据结构和算法(Golang实现)(12)常见数据结构-链表
- 数据结构和算法(Golang实现)(13)常见数据结构-可变长数组
- 数据结构和算法(Golang实现)(14)常见数据结构-栈和队列
- 数据结构和算法(Golang实现)(15)常见数据结构-列表
- 数据结构和算法(Golang实现)(16)常见数据结构-字典
- 数据结构和算法(Golang实现)(17)常见数据结构-树
- 数据结构和算法(Golang实现)(18)排序算法-前言
- 数据结构和算法(Golang实现)(19)排序算法-冒泡排序
- 数据结构和算法(Golang实现)(20)排序算法-选择排序
- 数据结构和算法(Golang实现)(21)排序算法-插入排序
- 数据结构和算法(Golang实现)(22)排序算法-希尔排序
- 数据结构和算法(Golang实现)(23)排序算法-归并排序
- 数据结构和算法(Golang实现)(24)排序算法-优先队列及堆排序
- 数据结构和算法(Golang实现)(25)排序算法-快速排序
- 数据结构和算法(Golang实现)(26)查找算法-哈希表
- 数据结构和算法(Golang实现)(27)查找算法-二叉查找树
- 数据结构和算法(Golang实现)(28)查找算法-AVL树
- 数据结构和算法(Golang实现)(29)查找算法-2-3树和左倾红黑树
- 数据结构和算法(Golang实现)(30)查找算法-2-3-4树和普通红黑树