If you rely on naming function to know if things can be mutated you're doing things wrong. The only source of truth is the type received.
> func Car(id string) Car
How do I know whether it fetched that from the database or created a new one and returned that to me?
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.