golang基础-内置数据结构

mob604756e80bb7 · · 1278 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

概述

内置数据结构是一门语言的核心基石之一,了解了基本语法,内置数据结构,便可以胜任简单的开发。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



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

本文来自:51CTO博客

感谢作者:mob604756e80bb7

查看原文:golang基础-内置数据结构

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1278 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传