go语言结构体有一个特殊的用法:结构体内嵌一个其他类型的结构体指针,就可以使用内嵌结构体的方法。看代码(摘自studygolang的源码,数据库模块,dao.go)
type Dao struct {
*sql.DB
// 构造sql语句相关
tablename string
where string
whereVal []interface{} // where条件对应中字段对应的值
limit string
order string
// 插入需要
columns []string // 需要插入数据的字段
colValues []interface{} // 需要插入字段对应的值
// 查询需要
selectCols string // 想要查询那些字段,接在SELECT之后的,默认为"*"
}
这样就可以直接把Dao指针当做是一个sql.DB指针,
比如sql.DB有方法 Query Exec Prepare等等,在这里就可以直接写成这样
func (this*Dao)Query(strsql string){
this.Prepare(strsql)
}
这个用法很神奇唉,不知道还有没有别的巧妙用处
有疑问加站长微信联系(非本文作者)