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条)

报告相同问题?

悬赏问题

  • ¥30 Unity接入微信SDK 无法开启摄像头
  • ¥20 有偿 写代码 要用特定的软件anaconda 里的jvpyter 用python3写
  • ¥20 cad图纸,chx-3六轴码垛机器人
  • ¥15 移动摄像头专网需要解vlan
  • ¥20 access多表提取相同字段数据并合并
  • ¥20 基于MSP430f5529的MPU6050驱动,求出欧拉角
  • ¥20 Java-Oj-桌布的计算
  • ¥15 powerbuilder中的datawindow数据整合到新的DataWindow
  • ¥20 有人知道这种图怎么画吗?
  • ¥15 pyqt6如何引用qrc文件加载里面的的资源