【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)
}
相关推荐
何以解忧,唯有..13 天前
Go语言循环语句详解:for、range与循环控制
开发语言·算法·golang
踏着七彩祥云的小丑13 天前
Go学习第9天:并发编程 + 文件操作 + 正则表达式
学习·golang·正则表达式·go
JCGKS13 天前
Go `init` 函数:包初始化顺序到底是怎样的
golang·init·init执行顺序
何以解忧,唯有..13 天前
Go语言中的const:常量声明与iota枚举详解
java·开发语言·golang
geovindu13 天前
go: Reactor Pattern
开发语言·后端·设计模式·golang·反应器模式
記億揺晃着的那天14 天前
Java 调用外部 Go 程序的实践:ProcessBuilder 在生产环境中的应用
java·golang·processbuilder
jingling55514 天前
go | 环境安装和快速入门
开发语言·后端·golang
java_cj14 天前
从kubectl学Visitor模式:如何优雅处理多态数据结构的遍历
云原生·golang·k8s·访问者模式
何以解忧,唯有..14 天前
Go语言类型转换详解:从基础到进阶实践
开发语言·后端·golang
何以解忧,唯有..14 天前
Go 语言指针类型详解:从基础到实战
开发语言·后端·golang