6

golang基础-内置数据结构

 3 years ago
source link: https://studygolang.com/articles/34377?fr=sidebar
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

内置数据结构是一门语言的核心基石之一,了解了基本语法,内置数据结构,便可以胜任简单的开发。golang内置的数据结构比较少,有整形,浮点型,字符串,数组,切片(slice),map这几种。

内置数据结构

整形是指整数数据,golang支持有符号整型int,无符号整型uint。

var a int //位数取决于机器 var a int16 //16位有符号整型 var a int32 //32位有符号整型 var a int64 //64位有符号整型 var a uint16 //16位有符号整型 var a uint32 //32位有符号整型 var a uint64 //64位无符号整型 复制代码
var str string = "test" // 定义内容为"test"的字符串str 复制代码

单个元素的表达有限,比如我们要定义10个整数,不需要写10行。 array的长度也是Type的一部分,这样就说明[10]int和[20]int是不一样的。

var iAry = [10]int{1,2,3,4,5,6,7,8,9,10} var strAry = [10]string{"aa", "bb", "cc", "dd", "ee"} 复制代码

slice是一个引用类型,是一个动态的指向数组切片的指针。 slice是一个不定长的,总是指向底层的数组array的数据结构。

var al []int     //创建slice sl := make([]int,10)  //创建有10个元素的slice sl := []int{1,2,3} //创建有初始化元素的slice 复制代码

这里说下切片和数组的关系, 切片是针对数组的引用。从具体使用区别上来说:

  1. 虽然都是值传递,但是切片本身是对数组的引用。所以切片在函数中传递,函数里边的更改,会影响函数外面的切片数据。
  2. array的长度也是Type的一部分,这样就说明[10]int和[20]int是不一样的,所以数组不能动态增加,而切片可以。

结论:在实际开发中,通常使用切片,很少直接使用数组的。

map(字典)

golang的map都是hash map,查找的时间复杂度是O(1),也就是说一个集合,如果用切片的方式表达,那么查找一个元素需要遍历。如果能用字典表示,则可以直接索引。

var m map[int]string //declare a map m = make(map[int]string, 0) // init map



有疑问加站长微信联系(非本文作者)

280

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK