九州编程
这是指向先前答案的链接: (GoLANG) *sql.DB Scan rows into string array pointer编辑:这是一个与您的示例更相似的示例。这适用于 mariaDB 顺便说一句,请确保更改连接字符串并更改sql.Open为 postgreSQLtype rg struct { DB *sql.DB}func init() { // fill it with your info db, err := connect("testDB" /* DB */, "testUser" /* DbUser */, "testPass" /* DbPw */) if err != nil { log.Fatal(err) } filter := map[string]interface{}{} r, i, err := db.GetAllRegional(filter) if err != nil { log.Fatal(err) } log.Printf("r: %+v\ni: %+v\n", r, i)}// connect returns a rgfunc connect(dbName, username, password string) (rg, error) { cs := username + ":" + password + "@tcp(" + "YourDbHost" + ":3306)/" + dbName db, err := sql.Open("mysql", cs) if err != nil { log.Println(err.Error()) return rg{}, err } return rg{db}, nil}// GetAllRegional ...func (m *rg) GetAllRegional(filter map[string]interface{}) ([]string, int64, error) { // checking if the connection is alive err := m.DB.Ping() if err != nil { log.Fatal(err) return nil, 0, err } q := `SELECT title, language, isviewmain FROM Regional` rows, err := m.DB.Query(q) if err != nil { log.Fatal(err) return nil, 0, err } defer rows.Close() // Not sure what you're returning on the model // returning a slice instead var regional []string for rows.Next() { var temp string err = rows.Scan(&temp) if err != nil { log.Println(err.Error()) if err == sql.ErrNoRows { log.Println(sql.ErrNoRows.Error()) } return nil, 0, err } regional = append(regional, temp) } return regional, 1, nil}