当此类行不存在时,Go func(* DB)查询返回

Signature is func (db *DB) Query(query string, args ...interface{}) (*Rows, error).

What does Go func (*DB) Query return if the query and call is:

rows, err := db.Query("SELECT username FROM userstable WHERE username=$1", registerInstance.Username)

when there is no such row in the table userstable.

Does it return a non-nil error or return empty string value as Result and non-nil error is returned only when an error occurs?

In this case, you'll definitely want to use QueryRow instead of Query (assuming you'd only ever get one user with the same username).

From http://go-database-sql.org/retrieving.html

Go defines a special error constant, called sql.ErrNoRows, which is returned from QueryRow() when the result is empty. This needs to be handled as a special case in most circumstances. An empty result is often not considered an error by application code, and if you don’t check whether an error is this special constant, you’ll cause application-code errors you didn’t expect.

When using Query, you'll be looping over the results with something like:

rows, err := db.Query("SELECT username FROM userstable WHERE username=$1", registerInstance.Username)
if err != nil {
    log.Fatal(err)
}
defer rows.Close()
var users []User
for rows.Next() {
    user = User{}
    err := rows.Scan(&user.Username)
    if err != nil {
        log.Fatal(err)
    }
    users = append(users, user)
}
rows.Close()
if (len(users) == 0) {
    //handle this case
}