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) } 这个用法很神奇唉,不知道还有没有别的巧妙用处