【发布时间】:2014-12-30 09:09:13
【问题描述】:
我有自定义类型 Int64Array、Channel 和 ChannelList,例如:
type Int64Array []int64
func (ia *Int64Array) Scan(src interface{}) error {
rawArray := string(src.([]byte))
if rawArray == "{}" {
*ia = []int64{}
} else {
matches := pgArrayPat.FindStringSubmatch(rawArray)
if len(matches) > 1 {
for _, item := range strings.Split(matches[1], ",") {
i, _ := strconv.ParseInt(item, 10, 64)
*ia = append(*ia, i)
}
}
}
return nil
}
func (ia Int64Array) Value() (driver.Value, error) {
var items []string
for _, item := range ia {
items = append(items, strconv.FormatInt(int64(item), 10))
}
return fmt.Sprintf("{%s}", strings.Join(items, ",")), nil
}
type Channel int64
type ChannelList []Channel
如何将Int64Array 嵌入到ChannelList 以便可以调用Scan 和Value 方法?我尝试了以下方法:
type ChannelList []Channel {
Int64Array
}
但我收到语法错误。重要的是确保 ChannelList 项目的类型为 Channel,如果通过嵌入无法做到这一点,我可能会创建独立的函数以供 ChannelList 和 Int64Array 调用。
【问题讨论】:
标签: go