dth54864 2018-02-09 07:41 采纳率: 0%
浏览 72
已采纳

声明后如何为空切片分配值

I am trying to assign a value to the empty slice as follows.

func main() {
    var s []int
    fmt.Println(s, len(s), cap(s))
    s[0] = 99
}

And it throws an exception,

panic: runtime error: index out of range

Note: I know one way of doing this by initializing the value at declaration part as follows. But in the above example I am trying to assign a value after the declaration.

var s []int{99}

Is there a way to achieve this?

  • 写回答

4条回答 默认 最新

  • doujiao1981 2018-02-09 07:47
    关注

    Empty slices cannot just be assigned to. Your print statement shows that the slice has length and capacity of 0. Indexing at [0] is definitely out of bounds.

    You have (at least) three choices:

    • Append to the slice: s = append(s, 99)
    • or Initialize the slice to be non-empty: s := make([]int, 1)
    • or Initialize your slice with the element you want: s := []int{99}

    You can find tutorials on slices in the Go tour, or a lot more details about slice usage and internals.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分