【GO】切片练习题

创建切片

题目描述

使用三种不同的方式创建包含元素1, 2, 3, 4, 5的切片,并输出它们。

输出示例

方式1(直接创建):1 2 3 4 5

方式2(make创建):1 2 3 4 5

方式3(从数组创建):1 2 3 4 5

实现代码

Go 复制代码
package main

import "fmt"

func main() {
    // 方式1:直接创建
    slice1 := []int{1, 2, 3, 4, 5}
    
    // 方式2:使用make创建并初始化
    slice2 := make([]int, 5)
    slice2[0], slice2[1], slice2[2], slice2[3], slice2[4] = 1, 2, 3, 4, 5
    
    // 方式3:从数组创建
    arr := [5]int{1, 2, 3, 4, 5}
    slice3 := arr[:]
    
    fmt.Printf("方式1(直接创建):%v\n", slice1)
    fmt.Printf("方式2(make创建):%v\n", slice2)
    fmt.Printf("方式3(从数组创建):%v\n", slice3)
}

切片截取

题目描述

创建切片0,1,2,3,4,5,6,7,8,9,截取并输出以下部分:

  • 前3个元素

  • 第3到第6个元素

  • 后4个元素

输出示例

原切片:0 1 2 3 4 5 6 7 8 9

前3个元素:0 1 2

第3到第6个元素:2 3 4 5

后4个元素:6 7 8 9

实现代码

Go 复制代码
package main

import "fmt"

func main() {
    slice := []int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
    
    slice1 := slice[:3]
    slice2 := slice[2:6]
    slice3 := slice[6:]
    
    fmt.Printf("原切片:%v\n", slice)
    fmt.Printf("前3个元素:%v\n", slice1)
    fmt.Printf("第3到第6个元素:%v\n", slice2)
    fmt.Printf("后4个元素:%v\n", slice3)
}

前后缀追加

题目描述

创建切片mainSlice=4,5,6,前缀切片prefix=1,2,3,后缀切片suffix=7,8,9,将前缀和后缀分别追加到mainSlice的前后。

输出示例

主切片:4 5 6

前缀:1 2 3

后缀:7 8 9

最终结果:1 2 3 4 5 6 7 8 9

实现代码

Go 复制代码
package main

import "fmt"

func main() {
    mainSlice := []int{4, 5, 6}
    prefix := []int{1, 2, 3}
    suffix := []int{7, 8, 9}
    
    fmt.Printf("主切片:%v\n", mainSlice)
    fmt.Printf("前缀:%v\n", prefix)
    fmt.Printf("后缀:%v\n", suffix)
    
    // 先追加后缀到主切片
    mainSlice = append(mainSlice, suffix...)
    // 再将前缀追加到最前面(通过创建新切片)
    result := append(prefix, mainSlice...)
    
    fmt.Printf("最终结果:%v\n", result)
}

使用copy函数复制切片

题目描述

创建切片src=1,2,3,4,5和长度为3的切片dst,使用copy函数将src的前3个元素复制到dst,输出结果。

输出示例

源切片:1 2 3 4 5

目标切片:1 2 3

复制元素个数:3

实现代码

Go 复制代码
package main

import "fmt"

func main() {
    src := []int{1, 2, 3, 4, 5}
    dst := make([]int, 3)
    
    copied := copy(dst, src)
    
    fmt.Printf("源切片:%v\n", src)
    fmt.Printf("目标切片:%v\n", dst)
    fmt.Printf("复制元素个数:%d\n", copied)
}

综合应用

题目描述

创建切片"苹果","香蕉","橙子","葡萄","西瓜",完成以下操作并输出:

  1. 输出原切片

  2. 输出切片长度和容量

  3. 追加"芒果"和"草莓"

  4. 截取前4个元素

  5. 将第2个元素改为"樱桃"

  6. 输出最终结果

输出示例

原切片:苹果 香蕉 橙子 葡萄 西瓜

长度:5,容量:5

追加后:苹果 香蕉 橙子 葡萄 西瓜 芒果 草莓

截取前4个:苹果 香蕉 橙子 葡萄

修改后:苹果 樱桃 橙子 葡萄

实现代码

Go 复制代码
package main

import "fmt"

func main() {
    fruits := []string{"苹果", "香蕉", "橙子", "葡萄", "西瓜"}
    
    fmt.Printf("原切片:%v\n", fruits)
    fmt.Printf("长度:%d,容量:%d\n", len(fruits), cap(fruits))
    
    // 追加元素
    fruits = append(fruits, "芒果", "草莓")
    fmt.Printf("追加后:%v\n", fruits)
    
    // 截取前4个
    fruits = fruits[:4]
    fmt.Printf("截取前4个:%v\n", fruits)
    
    // 修改元素
    fruits[1] = "樱桃"
    fmt.Printf("修改后:%v\n", fruits)
}
相关推荐
codeejun10 小时前
每日一Go-73、云原生成本优化 —— 资源限制 & 指标驱动扩容
开发语言·云原生·golang
小小龙学IT18 小时前
Go语言后端开发入门指南
开发语言·后端·golang
basketball61619 小时前
Go 语言从入门到进阶:6. 一文彻底吃透结构体(Struct)
开发语言·unity·golang
木雷坞1 天前
Go 项目实战:用 MLiev IAM 落地企业认证中心
后端·golang·认证
知彼解己2 天前
LLM-based Planning:从后端视角理解 Agent 规划层
后端·golang·ai编程
basketball6162 天前
Go语言从入门到进阶:8. 接口
开发语言·后端·golang
codeejun2 天前
每日一Go-71、理论知识:CAP 、一致性原理 、Raft 机制(简化实现一个 Raft)
java·开发语言·golang
曾几何时`2 天前
Go(一)Gin框架 和 GORM机制
开发语言·golang·gin
l齐天2 天前
Ubuntu 22.04 环境下 PBC 与 Golang 的安装、配置与测试
linux·ubuntu·golang
codeejun2 天前
每日一 Go-72、分布式事务 & 一致性:本地消息表、事务消息、SAGA、TCC怎么选?
开发语言·分布式·golang