goalng
Go语言也称 Golang,兼具效率、性能、安全、健壮等特性。这套Go语言教程(Golang教程)通俗易懂,深入浅出,既适合没有基础的读者快速入门,也适合工作多年的程序员查阅知识点。
这套教程在讲解一些知识点时,将 Go 语言和其他多种语言进行对比,让掌握其它编程语言的读者能迅速理解 Go 语言的特性。
Go语言从底层原生支持并发,无须第三方库、开发者的编程技巧和开发经验就可以轻松搞定
数据结构
数据结构(data structure)是带有结构特性的数据元素的集合,它研究的是数据的逻辑结构和数据的物理结构以及它们之间的相互关系,并对这种结构定义相适应的运算,设计出相应的算法,并确保经过这些运算以后所得到的新结构仍保持原来的结构类型。简而言之,数据结构是相互之间存在一种或多种特定关系的数据元素的集合,即带“结构”的数据元素的集合。“结构”就是指数据元素之间存在的关系,分为逻辑结构和存储结构。
链表的简介
链表可以节约存储空间,被很多复杂的数据结构作为底层使用,发展成为各种功能丰富的应用。那他们有什么特定呢,链表适合于频繁增加和删除的操作。指针时间复杂度为o(1)。数组的增加删除操作时间复杂度则为o(n)。
在Go语言中,列表使用 container/list 包来实现,内部的实现原理是双链表,列表能够高效地进行任意位置的元素插入和删除操作。
链表
list 的初始化有两种方法:分别是使用 New() 函数和 var 关键字声明,两种方法的初始化效果都是一致的。
1) 通过 container/list 包的 New() 函数初始化 list
变量名 := list.New()
2) 通过 var 关键字声明初始化 list
var 变量名 list.List
列表与切片和 map 不同的是,列表并没有具体元素类型的限制,因此,列表的元素可以是任意类型,这既带来了便利,也引来一些问题,例如给列表中放入了一个 interface{} 类型的值,取出值后,如果要将 interface{} 转换为其他类型将会发生宕机。
准备环境
golang,文本编辑器(用的顺手的就可以了。本文使用linux平台
开始编写golang list测试案例
package main
import (
"fmt"
"container/list"
)
func main(){
var intList list.List
intList.PushBack(11)
intList.PushBack(22)
intList.PushBack(34)
for element:=intList.Front();element!=nil;element=element.Next(){
fmt.Println(element.Value.(int))
}
}
编写完成后运行
go run main.go
即可看到输出
从链表头部一个一个放入元素11,22,34,然后使用for循环遍历取出。
二叉搜索树
看完之后是不是对链表或者golang有更加深刻的影响呢。
笔者github数据结构源代码地址:GitHub - VdoVd/algorithm
如果喜欢的话请follow一些,笔者表演坐火箭上火星。