当前位置: > > > > 如何在查询数据库时将雪花数组转换为Golang中的数组
来源:stackoverflow
2024-04-26 08:51:42
0浏览
收藏
欢迎各位小伙伴来到,相聚于此都是缘哈哈哈!今天我给大家带来《如何在查询数据库时将雪花数组转换为Golang中的数组》,这篇文章主要讲到等等知识,如果你对Golang相关的知识非常感兴趣或者正在自学,都可以关注我,我会持续更新相关文章!当然,有什么建议也欢迎在评论留言提出!一起学习!
问题内容
我正在使用“gosnowflake”驱动程序从我的 golang 应用程序查询 snowflake db。 雪花架构:- 名称字符串 年龄整数 locs 数组
golang 代码:-
package main import ( "database/sql" "fmt" "log" "strings" _ "github.com/snowflakedb/gosnowflake" ) type person struct { name string age string locs []string } var db *sql.db func main() { connstring := "user" + ":" + "pwd" + "@" + "region" + "/" + "test" fmt.println("db connection string..", connstring) db, _ = sql.open("snowflake", connstring) defer db.close() qry := "select name,age,locs from test.person where name='abc'" result, _ := db.query(qry) fmt.println(result) for result.next() { var row person err := result.scan(&row.name, &row.age, &row.locs) if err != nil { log.fatal(err) } fmt.println("before returning..", row) } }
问题:- 这里的问题出在数组中的 db locs 中,但是在从 golang 代码查询时,它以字符串形式返回。所以这些值就像
[ "XYZ", "DEF" ]
我想要的是直接将 locs 值转换为我的 golang 代码中的数组。因此,在 person 结构内部,它直接绑定到 loc []string。
解决方案
除非 gosnowflake 中已经有内置的字符串数组类型,否则您可能需要实现遵循 的自己的类型
例如
type arraystring []string func (a *arraystring) scan(src interface{}) error { switch v := src.(type) { case string: return json.unmarshal([]byte(v), a) case []byte: return json.unmarshal(v, a) default: return errors.new("invalid type") } }
那么你的 person
结构将是:
type Person struct { Name string Age string Locs ArrayString }
理论要掌握,实操不能落!以上关于《如何在查询数据库时将雪花数组转换为Golang中的数组》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注公众号吧!