I thought Go had gc. Why would you ever need reference counts?
Example: Perhaps once no instances of an object are in use, you want to remove that object from persistent storage such as a DB.
But beware of finalizer ordering issues.
The service can be asked to unload (close) the file, but it's hard to say whether it's in-use at the time without some kind of reference count to current requests using the file.