Go语言上手:复合数据类型

这篇具有很好参考价值的文章主要介绍了Go语言上手:复合数据类型。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

之前我们初探了Go语言世界,了解到基本数据类型,为了满足不同的特殊需求,我们便要使用到以不同的方式组合基本类型构造出来了新的复合型数据类型——数组、结构体、slice、map。

一、数组

数组是由一个或多个相同类型的元素组成的固定长度的序列。

例如:

一维数组:

//声明一个数组
var arr[4]int
//声明并初始化数组
var brr = [3]int{1,2,3}

二维数组:

//声明一个二维数组
var a[3][3]int
//声明并初始化二维数组
var b = [5][5]int{{1,2,3,4,5}}

内置的len函数可以返回数组中元素的个数:

var a = [3]int{1,2}
fmt.Println(len(a)-1) //输出a[2]的值0

数组的每个元素可以通过索引下标来访问,索引下标的范围是从0开始到数组长度减1的位置。

二、Slice(切片)

因为数组的长度是固定的,因此在Go语言中很少直接使用数组,和数组对应的类型是Slice (切片),它是变长的序列无固定长度,可以增长和收缩动态序列,用途更广泛。

2.1 Slice由三部分组成:
  • 指针
  • 长度 slice中元素的个数
  • 容量 从slice起始位置到底层数据结尾位置,即可用空间大小
2.2 定义切片

slice是变长序列,所以可以声明一个未指定大小的数组定义切片

var 数组名字 []type

 或者使用make定义:

var slice1 []type = make([]type, len)

//也可以简写为
slice1 := make([]type, len)

切片除了长度还有一个容量(capacity)的概念,可以在声明slice的时候同时指定长度和容量

s := make([]string,3,10)

通过 s1 := arr[startIndex:endIndex] 可以创造新切片s1 ,且arr可以为数组,其余操作貌似和python的切片类似,不过go的切片更像一个变长数组或者说链表。

Go支持append()函数用于向切片中追加值,支持copy()函数用于复制切片。

切片是可索引的,并且可以由 len() 方法获取长度。

切片提供了计算容量的方法 cap() 可以测量切片最长可以达到多少。

三、Map

哈希表是一种巧妙并且实用的数据结构。它是一个无序的key-value对的集合﹐其中所有的key都是不同的﹐然后通过给定的key可以在常数时间复杂度内检索﹑更新或删除对应的value。

在获取 Map 的值时,如果键不存在,返回该类型的零值,例如 int 类型的零值是 0,string 类型的零值是 " "。

Map 是引用类型,如果将一个 Map 传递给一个函数或赋值给另一个变量,它们都指向同一个底层数据结构,因此对 Map 的修改会影响到所有引用它的变量。

定义Map

可以使用内置函数 make 或使用 map 关键字来定义 Map:

/* 使用 make 函数 */
map_variable := make(map[KeyType]ValueType, initialCapacity)

其中 KeyType 是键的类型,ValueType 是值的类型,initialCapacity 是可选的参数,用于指定 Map 的初始容量。Map 的容量是指 Map 中可以保存的键值对的数量,当 Map 中的键值对数量达到容量时,Map 会自动扩容。如果不指定 initialCapacity,Go 语言会根据实际情况选择一个合适的值。

// 创建一个初始容量为 10 的 Map
m := make(map[string]int, 10)

// 使用字面量创建 Map
m := map[string]int{
    "student": 1,
    "teacher": 2,
    "school": 3,
}

获取元素:
// 获取键值对
v1 := m["student"]
v2, result := m["pen"]  // 如果键不存在,result 的值为 false,v2 的值为该类型的零值
修改元素:
// 修改键值对
m["student"] = 5
遍历 Map:
// 遍历 Map
for k, v := range m {
    fmt.Printf("key=%s, value=%d\n", k, v)
}
删除元素:
// 删除键值对
delete(m, "teacher")

四、结构体

Go 语言中数组可以存储同一类型的数据,但在结构体中我们可以为不同项定义不同的数据类型。

结构体是由一系列具有相同类型或不同类型的数据构成的数据集合。 用结构体的经典案例处理公司的员工信息﹐每个员工信息包含一个唯一的员工编号﹑员工的名字﹑家庭住址﹑出生日期﹑工作岗位﹑薪资﹑上级领导等等。所有的这些信息都需要绑定到一个实体中﹐可以作为一个整体单元被复制﹐作为函数的参数或返回值﹐或者是被存储到数组中﹐等等。

结构体定义需要使用 type 和 struct 语句。struct 语句定义一个新的数据类型,结构体中有一个或多个成员。type 语句设定了结构体的名称。结构体声明语法如下:

type StructName struct{  
    FieldName type  
}

一旦定义了结构体类型,它就能用于变量的声明,语法格式如下:文章来源地址https://www.toymoban.com/news/detail-662219.html

variable_name := structure_variable_type {value1, value2...valuen}
或
variable_name := structure_variable_type { key1: value1, key2: value2..., keyn: valuen}

到了这里,关于Go语言上手:复合数据类型的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Go语言(Golang)数据库编程

    要想连接到 SQL 数据库,首先需要加载目标数据库的驱动,驱动里面包含着于该数据库交互的逻辑。 sql.Open() 数据库驱动的名称 数据源名称 得到一个指向 sql.DB 这个 struct 的指针 sql.DB 是用来操作数据库的,它代表了0个或者多个底层连接的池,这些连接由sql 包来维护,sql 包会

    2024年02月03日
    浏览(88)
  • 【Golang】VsCode下开发Go语言的环境配置(超详细图文详解)

    📓推荐网站(不断完善中):个人博客 📌个人主页:个人主页 👉相关专栏:CSDN专栏、个人专栏 🏝立志赚钱,干活想躺,瞎分享的摸鱼工程师一枚 ​ 话说在前,Go语言的编码方式是 UTF-8 ,理论上你直接使用文本进行编辑也是可以的,当然为了提升我们的开发效率我们还是需

    2024年02月07日
    浏览(83)
  • 教你快速上手C语言中的数据类型和变量

      哈喽,各位铁汁们好啊!✨今天来给大家带来的是初识 C语言 里面的 数据类型 和 变量 。   今天主要带大家简单认识-一下C语言,俗话说 没吃过猪肉,也见过猪跑。 了解下每个数据类型是干嘛的。可以读懂C语言的简单程序,其他的博主就不多介绍了。   后面会为

    2024年02月12日
    浏览(40)
  • 【Go】Go 语言教程--数据类型(四)

    Go 语言教程–介绍(一) Go 语言教程–语言结构(二) Go 语言教程–语言结构(三) 在 Go 编程语言中,数据类型用于声明函数和变量。 数据类型的出现是为了把数据分成所需内存大小不同的数据,编程的时候需要用大数据的时候才需要申请大内存,就可以充分利用内存。

    2024年02月12日
    浏览(48)
  • Go 语言基本数据类型

    Go 语言中数据类型分为:基本数据类型和复合数据类型 基本数据类型有: 整型、浮点型、布尔型、字符串 复合数据类型有: 数组、切片、结构体、函数、map、通道(channel)、接口等。 整型分为以下两个大类: 有符号整型按长度分为:int8、int16、int32、int64 对应的无符号整

    2024年01月22日
    浏览(60)
  • [go语言]数据类型

    目录 知识结构 整型、浮点型 1.整型 2.浮点型 复数、布尔类型 1.复数 2.布尔类型 字符与字符串 1.字符串的格式化 2.字符串的截取 3.格式化好的字符串赋值给量 4.字符串的转换 5.strings包 在Go语言中,整型数据是一种基本的数据类型,用于表示整数。Go语言提供了多种整型数据类

    2024年01月19日
    浏览(49)
  • Go语言的数据类型

    以下是go中可用的基本数据类型 1.1 布尔型bool 布尔型的值只可以是常量 true 或者 false。一个简单的例子:var b bool = true 1.2 数值型 1、整数型 int8 有符号 8 位整型 (-128 到 127) 长度:8bit int16 有符号 16 位整型 (-32768 到 32767) int32 有符号 32 位整型 (-2147483648 到 2147483647) int64 有符号

    2024年02月06日
    浏览(39)
  • 【30天熟悉Go语言】5 Go 基本数据类型

    Go系列文章: GO开篇:手握Java走进Golang的世界 2 Go开发环境搭建、Hello World程序运行 3 Go编程规约和API包 4 Go的变量、常量、运算符 Go专栏传送链接:https://blog.csdn.net/saintmm/category_12326997.html 基本数据类型大体来看有四种:数值型、字符型、布尔型、字符串。数值型又分为整数类

    2024年02月10日
    浏览(39)
  • Go语言基础之基本数据类型

    Go语言中有丰富的数据类型,除了基本的整型、浮点型、布尔型、字符串外,还有数组、切片、结构体、函数、map、通道(channel)等。Go 语言的基本类型和其他语言大同小异。 整型 整型分为以下两个大类: 按长度分为:int8、int16、int32、int64 对应的无符号整型:uint8、uint1

    2024年02月12日
    浏览(41)
  • Go语言编程教程-基本数据类型

    了解布尔类型 了解整数类型 了解浮点数类型 了解复数类型 了解字符串类型 了解字符类型 类型 名称 取值范围 说明 bool 布尔类型 true 或 false 默认值为 false 类型 名称 取值范围 说明 uint8 8位无符号整型 0 ~ 255 uint16 16位无符号整型 0 ~ 65535 uint32 32位无符号整型 0 ~ 4294967295 uint6

    2024年02月04日
    浏览(161)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包