用结构的字段指针填充切片

I'm creating a function wich receives a interface{}, wich will always be a struct, but it could be any struct.

I need to fill one slice with pointers of all the fields of the struct received. The place in the code below where I need to pick the field pointer is flagged with **FIELD POINTER**

My final goal is create a function to receive a struct equivalent to the return of the query sent in the parameter sqlQuery. I want to create a dynamic function to perform any type of query to select, always using the struct received for .Scan.

It may be that I'm thinking the wrong way, I'm still starting Golang.

func QuerySelect(entity interface{}, sqlQuery string) {
    val := reflect.Indirect(reflect.ValueOf(entity))

    psqlInfo := fmt.Sprintf("host=%s port=%d user=%s "+
        "password=%s dbname=%s sslmode=disable",
        host, port, user, password, dbname)

    // Validate database params
    db, err := sql.Open(driver, psqlInfo)

    // If returned any error
    if err != nil {
        panic(err)
    }

    // Validate connection with database
    err = db.Ping()
    if err != nil {
        panic(err)
    }

    // Execute query
    rows, err := db.Query(sqlQuery)

    countColumns := val.Type().NumField()

    var allRows []interface{}

    for rows.Next() {
        columnsPointers := make([]interface{}, countColumns)

        for i := 0; i < countColumns; i++ {
           columnsPointers[i] = **FIELD POINTER (entity struct)**
        }

        if err := rows.Scan(columnsPointers...); err != nil {
            log.Fatal(err)
        }

        allRows = append(allRows, entity)
    }
}