package main import ( "database/sql" "fmt" "github.com/mattn/go-sqlite3" "log" ) func main() { sql.Register("sqlite3_with_extensions", &sqlite3.SQLiteDriver{ ConnectHook: func(conn *sqlite3.SQLiteConn) error { return conn.CreateModule("github", githubModule{}) }, }) db, err := sql.Open("sqlite3_with_extensions", ":memory:") if err != nil { log.Fatal(err) } defer db.Close() _, err = db.Exec("create virtual table repo using github(id, full_name, description, html_url)") if err != nil { log.Fatal(err) } rows, err := db.Query("select id, full_name, description, html_url from repo") if err != nil { log.Fatal(err) } defer rows.Close() for rows.Next() { var id, full_name, description, html_url string rows.Scan(&id, &full_name, &description, &html_url) fmt.Printf("%s: %s\n\t%s\n\t%s\n\n", id, full_name, description, html_url) } }