【问题标题】:Converting slice into array pointer将切片转换为数组指针
【发布时间】:2018-02-12 02:37:26
【问题描述】:

我有这段代码,

var buffers [2]uint32
gl.GenBuffers(2, /* What here! */)

gl.GenBuffers() 要求一个 int32 和一个 *uint32。在 C 中,您可以传递一个静态数组或指向它的指针,一切都会好起来的,但在 Golang 中,切片不起作用...

我能想到的两种方法是分配动态数组,或者将切片转换为指针数组,

不好的是我也不知道该怎么做... 我尝试了新的,但它并不像 malloc 那样工作...... 我很难过,任何帮助都会非常受欢迎!

【问题讨论】:

    标签: pointers opengl go slice


    【解决方案1】:

    写:

    var buffers [2]uint32
    gl.GenBuffers(int32(len(buffers)), &buffers[0])
    

    例如,

    package main
    
    import (
        "fmt"
    )
    
    func main() {
        var buffers [2]uint32
        fmt.Printf("%d %p\n", int32(len(buffers)), &buffers[0])
        fmt.Printf("%T %T\n", int32(len(buffers)), &buffers[0])
    }
    

    游乐场:https://play.golang.org/p/J-tKynWv5P1

    输出:

    2 0x10410020
    int32 *uint32
    

    【讨论】:

      猜你喜欢
      • 2017-09-21
      • 2021-09-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多