Your use of the word “Global” in this sense is very non-standard. What the issue refers to is TLS/GLS which is scoped by the Go routine - regular exported variables are “global”.
> On May 29, 2020, at 10:07 PM, adithyasasha...@gmail.com wrote: > > Thanx. This i thought but i want context as "Global" struct, which i cant do. > Anyhow please refer https://github.com/golang/go/issues/21355 > <https://github.com/golang/go/issues/21355> > > > On Wednesday, May 27, 2020 at 6:34:24 AM UTC+5:30, Jon Perryman wrote: > > On Sun, May 24, 2020 at 11:05 PM <adithya...@gmail.com <>> wrote: > > Yeah this works, but you can say this as workaround, what i really want is, > > does native go support? if not why? > >> On Monday, May 25, 2020 at 7:57:17 AM UTC+5:30, tokers wrote: > >> You may try to inspect this go package: https://github.com/jtolio/gls > >> <https://github.com/jtolio/gls> > > Each package has a set of global variables. Adding another set of globals for > each executing Goroutine would be too complex. Functions are not specific to > Goroutine, but a second global pool would require additional considerations > specific to goroutine vs main. > > What is the drawback to passing the goroutine global variables as a struct to > each function? It's certainly far less overhead than the workaround and it > follows standard GO conventions. > > <pre> > package main > > import ( > "fmt" > "time" > "sync" > ) > > func main() { > > go goroutine() > go goroutine() > go goroutine() > go goroutine() > > time.Sleep(time.Second) > fmt.Println("all done") > } > > type Global struct { > Id int > Name string > Cnt int > } > > var goroutineCount int = 0 > > func goroutine() { > mutex := &sync.Mutex{} > mutex.Lock() > goroutineCount++ > mutex.Unlock() > g := Global{ > Id : goroutineCount, > Name : "some name", > Cnt : 100, > } > g.Method1() > } > > func (g *Global) Method1() { > g.Method2() > g.Cnt++ > fmt.Println("method1", g.Id, g.Name, g.Cnt) > } > > func (g *Global) Method2() { > g.Cnt++ > fmt.Println("method2", g.Id, g.Name, g.Cnt) > } > </pre> > > Jon. > > -- > 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 > <mailto:golang-nuts+unsubscr...@googlegroups.com>. > To view this discussion on the web visit > https://groups.google.com/d/msgid/golang-nuts/88474b1b-827e-4dcb-a56e-b942fafe71b8%40googlegroups.com > > <https://groups.google.com/d/msgid/golang-nuts/88474b1b-827e-4dcb-a56e-b942fafe71b8%40googlegroups.com?utm_medium=email&utm_source=footer>. -- 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. To view this discussion on the web visit https://groups.google.com/d/msgid/golang-nuts/27DECE0D-4AFE-4494-A528-0FF56C5806BD%40ix.netcom.com.