是否可以将sql语句直接扫描到结构中?

Say I have this:

type User struct {
    Email string
    Username string
    Addresses []Address
}

type Address struct {
    Street string
}

users := &User{}

rows, _ := db.Query(`SELECT * FROM users NATURAL JOIN users_addresses`)

rows.Scan(users)

Is it possible to just scan into a struct that has the same layout as the table in the database without having to scan into each struct field directly or is that the only way to do it?