Ian's answer, while technically correct, is misleading if I understand your question correctly. The resources for the Timer (created internally by time.After) will be released when the timeout expires, but the Timer still uses memory until that happens.
For example, if you use time.After in a tight loop which does NOT hit the timeout most of the time, you'll use far more memory than you expect; about 201 bytes per timer, in my configuration.
Test for yourself:
http://play.golang.org/p/Yjs7ACcydg (you'll need to reduce the number of timers for the playground to not time out on you, but it still shows the issue.)