全部学科
Python全栈
python
NodeJS全栈
nodejs
📝 1 篇文章 20 道配套习题

GO复合数据类型专题

专题说明

本专题系统讲解Go语言的四种核心复合数据类型:数组、切片、映射和结构体,帮助初学者掌握它们的特点、操作方法和使用场景。

学习目标

  1. 掌握数组的定义与特点(固定长度、值类型)
  2. 理解切片的动态特性与len/cap机制
  3. 学会map的创建、操作与遍历方法
  4. 掌握结构体的定义、初始化与方法绑定
  5. 理解各类型之间的区别与使用场景

学习内容

  • 数组:固定长度、值类型、长度是类型的一部分
  • 切片:动态长度、引用类型、len/cap/append机制
  • 映射(map):键值对存储、引用类型、make初始化
  • 结构体:字段集合、方法绑定、值/指针接收者

学习建议

  1. 重点区分数组(固定)与切片(动态)的本质区别
  2. 理解切片的len和cap概念,这是掌握切片的关键
  3. 注意map必须用make初始化才能添加元素
  4. 结构体方法要理解值接收者与指针接收者的区别
  5. 实践中多使用切片和map,数组多用于固定场景

📝 配套习题(20 题)

💡 参考答案在文末
判断题
1

Go数组是固定长度的,长度是数组类型的一部分,[3]int和[4]int是不同的类型。

A

B

2

Go结构体可以定义方法,方法可以绑定到结构体或结构体指针。

A

B

3

Go切片的len(长度)表示当前元素数量,cap(容量)表示底层数组可容纳的最大元素数量。

A

B

4

Go结构体的字段可以是map类型,但map字段在使用前必须初始化(make)。

A

B

5

Go中未初始化的map(nil map)可以直接添加元素。

A

B

6

Go数组可以使用for循环或for range遍历,两种方式都能访问数组元素。

A

B

7

Go结构体创建时,未初始化的字段会自动设置为对应类型的零值。

A

B

单选题
8

Go语言中定义数组的语法是?

A

var arr = [3]int{1,2,3}

B

var arr = []int{1,2,3}

C

var arr = int[3]{1,2,3}

D

var arr = array{int, 3}

9

Go语言中定义切片的正确方式是?

A

var sl = [3]int{1,2,3}

B

var sl = []int{1,2,3}

C

var sl = makeint

D

var sl = slice{int}

10

Go语言中定义map的正确语法是?

A

var m = map[int]string{}

B

var m = {int: string}

C

var m = make(map[int]string)

D

A和C都正确

11

Go语言中定义结构体使用哪个关键字?

A

class

B

struct

C

object

D

type struct

多选题
12

Go创建结构体实例的方式包括?

A

p := Person{Name: "张三", Age: 25}

B

p := Person{"张三", 25}

C

p := new(Person)

D

p := &Person{Name: "张三"}

E

var p Person

13

Go中数组与切片的区别包括?

A

数组长度固定,切片长度可变

B

数组是值类型,切片是引用类型

C

数组可以直接赋值,切片需要make初始化才能添加元素

D

数组传递会复制,切片传递共享底层数组

E

数组长度是类型的一部分

14

Go切片的常见操作包括?

A

append追加元素

B

copy复制切片

C

切片表达式sl[start:end]获取子切片

D

len获取长度,cap获取容量

E

delete删除切片元素

15

Go map的常见操作包括?

A

m[key] = value添加或修改元素

B

delete(m, key)删除元素

C

v, ok := m[key]检查元素是否存在

D

for range遍历map

E

len(m)获取元素数量

填空题
16

Go结构体使用 ____________ 访问字段,语法 ____________。可以使用 ____________ 访问结构体,Go会 自动 解引用。匿名字段可以实现 嵌入 效果,直接访问嵌入结构体的字段。

17

Go map使用 ____________ 访问元素,使用 ____________ 添加或修改元素,使用 ____________ 函数删除元素。检查元素是否存在使用 , ok := m[key],ok为 true 表示存在, false 表示不存在。

18

切片是基于 ____________ 的引用类型,包含三个信息: ____________ 指向底层数组、 ____________ 当前长度、 cap 容量。切片表达式 arr[start:end 可以从数组创建切片。append超过容量会 重新分配 底层数组。

19

Go切片使用 ____________ 函数追加元素,使用 ____________ 获取长度,使用 ____________ 获取容量。切片表达式 sl[start:end 取从start到 end-1 的元素。超出容量时append会 自动扩容。

20

Go数组定义时长度必须 ____________ 或使用 ____________ 自动推断。可以使用 ____________ 初始化元素,未指定的元素自动设为 零值。数组长度用 len 函数获取。

参考答案
1.正确 2.正确 3.正确 4.正确 5.错误 6.正确 7.正确 8.A 9.B 10.D 11.B 12.A;B;C;D;E 13.A;B;D;E 14.A;B;C;D 15.A;B;C;D;E 16.点号;p.FieldName;指针 17.m[key];m[key] = value;delete 18.数组;指针;len 19.append;len;cap 20.指定;...;{}
想在手机上练习这套专题?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码
← 上一个专题 GO变量与常量专题
下一个专题 → GO工程化与工具链专题
扫码体验小程序
加载中
想在手机上刷题学习?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码