登录
首页 >  Golang >  Go问答

创建具有固定长度的切片

来源:stackoverflow

时间:2024-03-02 08:33:14 474浏览 收藏

本篇文章主要是结合我之前面试的各种经历和实战开发中遇到的问题解决经验整理的,希望这篇《创建具有固定长度的切片》对你有很大帮助!欢迎收藏,分享给更多的需要的朋友学习~

问题内容

我有一个整数切片,我需要将其切成更小的切片并将这些新切片用于函数调用。我必须将 5 个对象放入每个新切片中。如果 arr1 的长度可与 5 整除,我可以实现一个可以正常工作的解决方案。但是在其他情况下,我会收到如下超出范围错误:panic:运行时错误:切片边界超出范围[:26],容量为24。我理解问题及其原因,我在最后一个循环中给出了错误的索引值,当 arr1_len 无法除以 5 时,我的逻辑失败。我的问题是,如何将 arr1 切片为新切片,每个切片中有 5 个对象,除了最后一个可以容纳少于 5 个。?演示链接

package main

import "fmt"

func printRes(l []int) {
    fmt.Println(l)
}

func sliceTest() {
    arr1 := []int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23}
    arr1_len := len(arr1)
    val := 5
    val2 := 0
    for i := 0; i <= arr1_len; i = i + val {
        val2 = i + val
        currentSlice := arr1[i:val2]
        fmt.Println(i, val2, currentSlice)
        printRes(currentSlice)
    }
}

func main() {
    sliceTest()
}

正确答案


检查边界:

val2 = i + val
if val2 >= len(arr1) {
    val2 = len(arr1)
}

本篇关于《创建具有固定长度的切片》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>