xuezhq 发表于 2025-1-19 13:31:51

GO语法请教

    // 遍历每一行数据
    for rows.Next() {
      // 创建一个接收列数据的切片
      columnsData := make([]interface{}, len(columns))
      // 创建一个接收列数据的切片
      columnPointers := make([]interface{}, len(columns))
      for i := range columnsData {
            columnPointers = &columnsData
      }

      // 调用Scan方法将每一行的数据保存到columnPointers
      if err := rows.Scan(columnPointers...); err != nil {
            log.Fatal(err)
      }rows.Scan(columnPointers...) 的...入参是什么意思?普通的省略号还是有什么方法?因为我这边的需求是SQL可变、列数未知,所以需要动态判断列数和取值,求解决方案,谢谢

4463424 发表于 2025-1-19 14:25:49

可变参数,可以传入多个参数
比如输出 ("a","b","c","d")

创世魂 发表于 2025-1-19 14:40:40

columnPointers 是个数组,省略号的意思是将数组的所有成员,都填入到方法的参数中。

zmmhcc 发表于 2025-1-19 15:03:20

columnPointers在go语言中称为“切片”,转成火山服务器代码可用“任意值数组”。

xuezhq 发表于 2025-2-11 11:12:45

那么问题就在这里,SQL语句可变的情况下,cha询的结果集列数并不固定,有没有通用方法取值呢?

cdmmye 发表于 2025-2-11 12:43:18

xuezhq 发表于 2025-2-11 11:12
那么问题就在这里,SQL语句可变的情况下,cha询的结果集列数并不固定,有没有通用方法取值呢? ...

我也是在问这个问题,回答是必须指定,没有可变结构

xuezhq 发表于 2025-2-11 19:47:36

zmmhcc 发表于 2025-1-19 15:03
columnPointers在go语言中称为“切片”,转成火山服务器代码可用“任意值数组”。 ...

入参是指针吧?请教一下,任意值或任意值数组的变量地址如何获取呢?

zmmhcc 发表于 2025-2-11 20:21:11

本帖最后由 zmmhcc 于 2025-2-11 20:24 编辑

xuezhq 发表于 2025-2-11 19:47
入参是指针吧?请教一下,任意值或任意值数组的变量地址如何获取呢?
1、入参的类型,你已经指定为columnPointers,即参数仅可传入columnPointers类型,结合上文,该切片装的是任意值,即最终入参的数据类型为装有任意值的切片;
2、go原生语法中的“切片”对应着火山语法中的“基本模板数组类”中的实现类。
3、“任意值或任意值数组的变量地址”可以通过将此两个变量封装成“地址模板类”中的实现类后,用“地址模板类”中的“取()”方法可以得到该变量的地址。

xuezhq 发表于 2025-2-12 16:14:57

zmmhcc 发表于 2025-2-11 20:21
1、入参的类型,你已经指定为columnPointers,即参数仅可传入columnPointers类型,结合上文,该切片装的是 ...

感谢指点:handshake
页: [1]
查看完整版本: GO语法请教