创建切片
题目描述
使用三种不同的方式创建包含元素[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)
}
综合应用
题目描述
创建切片["苹果","香蕉","橙子","葡萄","西瓜"],完成以下操作并输出:
输出原切片
输出切片长度和容量
追加"芒果"和"草莓"
截取前4个元素
将第2个元素改为"樱桃"
输出最终结果
输出示例
原切片:[苹果 香蕉 橙子 葡萄 西瓜]
长度: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)
}