【问题标题】:Offsetting zero index in Golang slice在 Golang 切片中偏移零索引
【发布时间】:2019-12-08 08:06:20
【问题描述】:

在C语言中,我们可以像这样移动指针:

int main()
{
    int array[4] = { 1, 2, 3, 4};
    int *q;
    q = array; 
    printf("%d\n", q[0]); /* 1 */
    q += 3; 
    printf("%d\n", q[0]); /* 4 */
}

有没有办法在 Golang 中做这样的事情?

【问题讨论】:

  • golang.org/ref/spec#Slice_types - 完全不一样,但现在问题已经结束,没有办法添加适当的描述使用切片来获得你想要的效果。
  • @torek 我已经尝试在我的回答中做到这一点。
  • @PumpkinSeed:OP 可能想要的是:q := arr[:],后跟 q = q[3:]。另见stackoverflow.com/q/29110426/1256452

标签: go


【解决方案1】:

Golang 不支持指针运算,因为这是漏洞的来源。

参考:https://tour.golang.org/moretypes/1

【讨论】:

    【解决方案2】:

    Golang 不支持pointer arithmetic 以增加开发过程中的安全性。

    【讨论】:

      【解决方案3】:

      例如,使用 Go 切片,

      package main
      
      import "fmt"
      
      func main() {
          array := [4]int{1, 2, 3, 4}
          slice := array[:]
          fmt.Printf("%d\n", slice[0]) /* 1 */
          slice = slice[3:]
          fmt.Printf("%d\n", slice[0]) /* 4 */
      }
      

      游乐场:https://play.golang.org/p/82pXFkHLSfd

      输出:

      1
      4
      

      【讨论】:

        猜你喜欢
        • 2017-08-15
        • 1970-01-01
        • 1970-01-01
        • 2016-12-03
        • 1970-01-01
        • 2021-10-13
        • 1970-01-01
        • 2012-09-27
        • 2016-11-22
        相关资源
        最近更新 更多