Only the type Car matters, why would the function name tells you anything about mutation? It does not tells you if you receive *Car or Car or if it's a Car but pointers inside.
Assuming Car() is a receiver function, you should be able to infer "how" the Car is "fetched" based on the type receiving the function call.
func (d CarDB) func Car() (Car, error)
The above tells you everything you need to know.
As for usage, again, the type and now also the variable names should let you infer everything you need.
func f(db *CarDB) {
c, _ := db.Car()
}
The function name makes as little of a guarantee as to the underlying "how" as these other factors.