I've found a hint. Apparently, both context.TODO and context.Background 
share a common implementation but they need distinct addresses.

See https://golang.org/src/context/context.go#L168

So they cannot be constants because then they would not have an address. 
They cannot be variables because then you could modify them. Therefore the 
only solution left is to make them a function that returns a variable.

Then again, maybe you could make Background and TODO of an unexported type 
to prevent setting them. I think that was not chosen because it leaks the 
internals of the package.

But I'm not sure why they need distinct addresses in the first place. I'm 
guessing its for debugging or just what makes sense? context.TODO and 
context.Background are two different contexts and should be treated as such.

On Friday, November 17, 2017 at 10:43:29 AM UTC-5, Alex Buchanan wrote:
>
> I don't have numbers, but context must be one of the most commonly used 
> imports/types in my code. It shows up many function signatures. We try to 
> use it for all cancelation.
>
> Would it make sense to add an alias "C" to the type "Context"? And maybe 
> "BG" for Background()? 
>
> Also, is there a specific reason Background is a function and not a value?
>
> Cheers,
> Alex
>

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to