递归火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 火山 源码 类库
查看: 1643|回复: 8
打印 上一主题 下一主题

[服务器] GO语法请教

[复制链接]

61

主题

267

帖子

1576

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
1576
QQ
跳转到指定楼层
楼主
发表于 2025-1-19 13:31:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1.     // 遍历每一行数据
  2.     for rows.Next() {
  3.         // 创建一个接收列数据的切片
  4.         columnsData := make([]interface{}, len(columns))
  5.         // 创建一个接收列数据的切片
  6.         columnPointers := make([]interface{}, len(columns))
  7.         for i := range columnsData {
  8.             columnPointers[i] = &columnsData[i]
  9.         }

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

使用道具 举报

97

主题

554

帖子

3952

积分

论坛元老

Rank: 8Rank: 8

积分
3952
沙发
发表于 2025-1-19 14:25:49 | 只看该作者
可变参数,可以传入多个参数
比如  输出 ("a","b","c","d")
回复

使用道具 举报

452

主题

1万

帖子

4万

积分

超级版主

Rank: 8Rank: 8

积分
42672
板凳
发表于 2025-1-19 14:40:40 | 只看该作者
columnPointers 是个数组,省略号的意思是将数组的所有成员,都填入到方法的参数中。
安卓无障碍实战课:点击查看
交流群:641526939
回复

使用道具 举报

14

主题

213

帖子

2814

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
2814
QQ
地板
发表于 2025-1-19 15:03:20 | 只看该作者
columnPointers在go语言中称为“切片”,转成火山服务器代码可用“任意值数组”。
学火山:巧琢编程网www.qiaozhuo.net
回复

使用道具 举报

61

主题

267

帖子

1576

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
1576
QQ
5#
 楼主| 发表于 2025-2-11 11:12:45 | 只看该作者
那么问题就在这里,SQL语句可变的情况下,cha询的结果集列数并不固定,有没有通用方法取值呢?
回复

使用道具 举报

92

主题

534

帖子

2054

积分

金牌会员

Rank: 6Rank: 6

积分
2054
6#
发表于 2025-2-11 12:43:18 | 只看该作者
xuezhq 发表于 2025-2-11 11:12
那么问题就在这里,SQL语句可变的情况下,cha询的结果集列数并不固定,有没有通用方法取值呢? ...

我也是在问这个问题,回答是必须指定,没有可变结构
火山PC HP_SOCKET 控件 交流群:956446702
回复

使用道具 举报

61

主题

267

帖子

1576

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
1576
QQ
7#
 楼主| 发表于 2025-2-11 19:47:36 | 只看该作者
zmmhcc 发表于 2025-1-19 15:03
columnPointers在go语言中称为“切片”,转成火山服务器代码可用“任意值数组”。 ...

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

使用道具 举报

14

主题

213

帖子

2814

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
2814
QQ
8#
发表于 2025-2-11 20:21:11 | 只看该作者
本帖最后由 zmmhcc 于 2025-2-11 20:24 编辑
xuezhq 发表于 2025-2-11 19:47
入参是指针吧?请教一下,任意值或任意值数组的变量地址如何获取呢?

1、入参的类型,你已经指定为columnPointers,即参数仅可传入columnPointers类型,结合上文,该切片装的是任意值,即最终入参的数据类型为装有任意值的切片;
2、go原生语法中的“切片”对应着火山语法中的“基本模板数组类”中的实现类。
3、“任意值或任意值数组的变量地址”可以通过将此两个变量封装成“地址模板类”中的实现类后,用“地址模板类”中的“取()”方法可以得到该变量的地址。
学火山:巧琢编程网www.qiaozhuo.net
回复

使用道具 举报

61

主题

267

帖子

1576

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
1576
QQ
9#
 楼主| 发表于 2025-2-12 16:14:57 | 只看该作者
zmmhcc 发表于 2025-2-11 20:21
1、入参的类型,你已经指定为columnPointers,即参数仅可传入columnPointers类型,结合上文,该切片装的是 ...

感谢指点
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|递归火山软件开发平台 ( 鄂ICP备18029190号 )

GMT+8, 2025-4-5 05:55 , Processed in 0.078825 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表