“扫描器”界面(https://golang.org/pkg/database/sql/#Scanner)使得配置数据库/ sql API如何从已从数据库读取的数据反序列化类型变得非常容易。
我已经以各种方式使用它来处理自己的类型,但是我只是尝试将非规范化的字符串列表读入字符串切片中,例如
Sub EmailAQuery()
Dim QueryName As String
Dim FileType As Variant
Dim EmailAddresses As String
Dim SubjectLine As String
Dim BodyText As String
QueryName = "Quarterly Figures"
FileType = acFormatXLSX
EmailAddresses = "bob@company.com; Sally@company.com"
SubjectLine = "Quarterly Figures for " & Format(Date, "mmmm yyyy")
BodyText = "Please see the Quarterly figures data for " & Format(Date, "mmmm yyyy") & ", attached."
Call SafeSendQuery(QueryName, FileType, EmailAddresses, SubjectLine, BodyText)
End Sub
Scan接收器通常是指向该类型的零值实例的指针。在我要写的情况下,它是切片。
这可能吗?
如果是这样,如何确定切片的大小(直到扫描程序开始解析(例如通过在逗号或类似内容上分割输入字符串)才知道)?
答案 0 :(得分:0)
是的,这是可能的,但是您想改为在* Roles上定义方法。然后,您可以根据需要扩展切片。
<div class="content">
数据库/ sql库将使用类似的方式
func (rs *Roles) Scan(value interface{}) error {
... check not nil
... split string into words
*rs = make(RosterRoles, len(words))
... range across the words
}
感谢@Peter的回答。