The memory model is pretty unspecified but they’re working on it. As a defacto 
behavior it is pretty hard to have what I stated not be the case. 

> On Sep 1, 2019, at 9:46 AM, T L <tapir....@gmail.com> wrote:
> 
> This is not true, at least no Go official documentation admits this.
> 
>> On Sunday, September 1, 2019 at 7:42:38 AM UTC-4, Robert Engels wrote:
>> That is incorrect. The atomic operations must exhibit the same happens 
>> before relationships as the mutex. If the mutex flushes the related cache 
>> lines the atomic load will pick it up. 
>> 
>>> On Aug 31, 2019, at 10:55 PM, T L <tapi...@gmail.com> wrote:
>>> 
>>> 
>>> 
>>>> On Saturday, August 31, 2019 at 9:49:56 PM UTC-4, Robert Engels wrote:
>>>> Yes, that is why the original code did not use a lock on the read but the 
>>>> read of the flag was wrong. The version I posted in the other thread works 
>>>> fine locally. time.Sleep() has problems in the playground 
>>> 
>>> You mean this one: https://play.golang.org/p/JRSEPU3Uf17 ?
>>> No no, it is not a good ideas to use mutex in write but atomic in read to 
>>> avoid concurrently accessing the same value.
>>>  
>>>> 
>>>>> On Aug 31, 2019, at 7:50 AM, T L <tapi...@gmail.com> wrote:
>>>>> 
>>>>> 
>>>>> 
>>>>>> On Saturday, August 31, 2019 at 8:24:31 AM UTC-4, Robert Engels wrote:
>>>>>> If you comment out the read method then all threads will block. That is 
>>>>>> the the behavior of an unbuffered channel - a writer blocks until a 
>>>>>> reader is ready. Which is why you always need a valid reader running. 
>>>>>> Unless the channel is closed and then the writer will panic. 
>>>>>> 
>>>>>> The code I provided is valid. 
>>>>> 
>>>>> In fact, if I comment out the write instead read part, the code will also 
>>>>> crash on all goroutines are blocked.
>>>>>  
>>>>>> 
>>>>>>> On Aug 31, 2019, at 2:40 AM, T L <tapi...@gmail.com> wrote:
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>>> On Friday, August 30, 2019 at 1:40:33 PM UTC-4, Robert Engels wrote:
>>>>>>>> You changed the Read() method incorrectly - it should be using the 
>>>>>>>> Read lock, not the Write lock.
>>>>>>>> 
>>>>>>>> Still, as I pointed out when I posted it, Play has a problem where it 
>>>>>>>> aborts if all routines are sleeping (not just blocked), so you need to 
>>>>>>>> run it locally.
>>>>>>> 
>>>>>>> My fault. But it doesn't matter, for the Read method is never called (I 
>>>>>>> commented it off).
>>>>>>> It also crash locally for all goroutines are blocked.
>>>>>>>  
>>>>>>>> -----Original Message----- 
>>>>>>>> From: T L 
>>>>>>>> Sent: Aug 30, 2019 12:05 PM 
>>>>>>>> To: golang-nuts 
>>>>>>>> Subject: Re: [go-nuts] An old problem: lack of priority select cases 
>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>>>> On Friday, August 30, 2019 at 12:39:41 PM UTC-4, Robert Engels wrote:
>>>>>>>>> 
>>>>>>>>> Makes no difference in the code I posted.... as long as they all use 
>>>>>>>>> the same MultiWriterChannel. In fact, others can be late started, as 
>>>>>>>>> they will fail fast if the channel is already closed.
>>>>>>>> 
>>>>>>>> https://play.golang.org/p/pcwIu2w8ZRb
>>>>>>>> 
>>>>>>>> All go routines are blocked in the modified version.
>>>>>>>>  
>>>>>>>>> -----Original Message----- 
>>>>>>>>> From: T L 
>>>>>>>>> Sent: Aug 30, 2019 11:13 AM 
>>>>>>>>> To: golang-nuts 
>>>>>>>>> Subject: Re: [go-nuts] An old problem: lack of priority select cases 
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>>> On Friday, August 30, 2019 at 10:35:29 AM UTC-4, Robert Engels wrote:
>>>>>>>>>> I don't think so. Why do you think that is the case? The RWLock is 
>>>>>>>>>> "fair" in the sense that once the 'closer' attempts to get the lock, 
>>>>>>>>>> it is guaranteed to get it (as the code is structured) - the 
>>>>>>>>>> subsequent readers will queue behind the "writer = closer".
>>>>>>>>> 
>>>>>>>>> How about unknown/random number of senders and readers?
>>>>>>>>>  
>>>>>>>>>> 
>>>>>>>>>> -----Original Message----- 
>>>>>>>>>> From: T L 
>>>>>>>>>> Sent: Aug 30, 2019 8:50 AM 
>>>>>>>>>> To: golang-nuts 
>>>>>>>>>> Subject: Re: [go-nuts] An old problem: lack of priority select cases 
>>>>>>>>>> 
>>>>>>>>>> @Robert 
>>>>>>>>>> I think there is a difference between the code of @Leo and you.
>>>>>>>>>> In you code, the Wirte/Read/Close are all possible to block for ever.
>>>>>>>>>> 
>>>>>>>>>>> On Thursday, August 29, 2019 at 8:59:10 PM UTC-4, Robert Engels 
>>>>>>>>>>> wrote:
>>>>>>>>>>> 
>>>>>>>>>>> Oops. You are right. The original used two different methods 
>>>>>>>>>>> Closed() and Read() and when I refactored I forgot to add the Read 
>>>>>>>>>>> lock to the Read(). That's why you always have code reviews...
>>>>>>>>>>> -----Original Message----- 
>>>>>>>>>>> From: T L 
>>>>>>>>>>> Sent: Aug 29, 2019 6:25 PM 
>>>>>>>>>>> To: golang-nuts 
>>>>>>>>>>> Subject: Re: [go-nuts] An old problem: lack of priority select 
>>>>>>>>>>> cases 
>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>>>> On Wednesday, August 28, 2019 at 10:05:06 PM UTC-4, robert engels 
>>>>>>>>>>>> wrote:
>>>>>>>>>>>> Here is a version using RWLock 
>>>>>>>>>>>> https://play.golang.org/p/YOwuYFiqtlf
>>>>>>>>>>> 
>>>>>>>>>>> Doesn't the Read method need to be guarded by the reader lock?
>>>>>>>>>>> 
>>>>>>>>>>>  
>>>>>>>>>>>> 
>>>>>>>>>>>> It won’t run correctly in the playground because it terminates 
>>>>>>>>>>>> when all routines are asleep - which happens during the test (not 
>>>>>>>>>>>> sure why it does this, as sleeping is different than a deadlock).
>>>>>>>>>>>> 
>>>>>>>>>>>> It is probably less efficient, and less orderly than the other 
>>>>>>>>>>>> example using WaitGroup but you get the idea I hope. It forcibly 
>>>>>>>>>>>> terminates the writers before they complete by design.
>>>>>>>>>>>> 
>>>>>>>>>>>>> On Aug 28, 2019, at 4:09 PM, Michel Levieux 
>>>>>>>>>>>>> <m.le...@capitaldata.fr> wrote:
>>>>>>>>>>>>> 
>>>>>>>>>>>>> One should also be careful regarding the conceptual demands he or 
>>>>>>>>>>>>> she is making.
>>>>>>>>>>>>> Having a shared resource (that is complex enough that it cannot 
>>>>>>>>>>>>> be atomically accessed or modified) means essentially that 
>>>>>>>>>>>>> "having multiple writers being transparent to the readers", 
>>>>>>>>>>>>> fundamentally, is not possible.
>>>>>>>>>>>>> 
>>>>>>>>>>>>> From the moment itself when such a resource is shared, there must 
>>>>>>>>>>>>> be some sort of mecanism (that one using resources atomically 
>>>>>>>>>>>>> usable) that ensures the integrity of it.
>>>>>>>>>>>>> Maybe what you're talking about is having it transparent in terms 
>>>>>>>>>>>>> of code, in which case we both agree, but if you're looking for 
>>>>>>>>>>>>> something transparent in essence, as in performance, logical 
>>>>>>>>>>>>> construction and all the rest, I think there is a 
>>>>>>>>>>>>> misunderstanding here: even if it was added in the language, 
>>>>>>>>>>>>> there would be many many things going on under the hood, as it is 
>>>>>>>>>>>>> already (and cannot really be otherwise) for channel use alone.
>>>>>>>>>>>>> 
>>>>>>>>>>>>> As for the priority using selects, I think it's more of something 
>>>>>>>>>>>>> to be dealt with on the "user-side". There are many kinds of 
>>>>>>>>>>>>> priority in general, and trying to implement something in the 
>>>>>>>>>>>>> language itself would IMO either be too specific compared to the 
>>>>>>>>>>>>> nessecary time to do so or it would probably have a huge overhead 
>>>>>>>>>>>>> on the "classical' use case of the select construct.
>>>>>>>>>>>>> + the fact that it is apparently already possible using RWMutexes.
>>>>>>>>>>>>> 
>>>>>>>>>>>>>> Le mer. 28 août 2019 à 22:37, Marcin Romaszewicz 
>>>>>>>>>>>>>> <mar...@gmail.com> a écrit :
>>>>>>>>>>>>>> Think of a channel as existing for the lifetime of a particular 
>>>>>>>>>>>>>> data stream, and not have it be associated with either producer 
>>>>>>>>>>>>>> or consumer. Here's an example:
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> https://play.golang.org/p/aEAXXtz2X1g
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> The channel here is closed after all producers have exited, and 
>>>>>>>>>>>>>> all consumers continue to run until the channel is drained of 
>>>>>>>>>>>>>> data.
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> The producers are managed by something somewhere in your code - 
>>>>>>>>>>>>>> and that is the scope at which it makes sense to create channel 
>>>>>>>>>>>>>> ownership. I've used a waitgroup to ensure that the channel is 
>>>>>>>>>>>>>> closed after all producers exit, but you can use whatever 
>>>>>>>>>>>>>> barrier construct you want.
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> Even if you must have a channel per producer, you can safely 
>>>>>>>>>>>>>> close the producer side, without notifying the downstream about 
>>>>>>>>>>>>>> this. The example early in the thread uses multiple channels, 
>>>>>>>>>>>>>> with one channel being used to signal that the producers should 
>>>>>>>>>>>>>> exit. Channels aren't really the right model for this, you want 
>>>>>>>>>>>>>> a thread safe flag of some sort. For example:
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> var exitFlag uint64
>>>>>>>>>>>>>> func producer(chan data int, wg *sync.WaitGroup) {
>>>>>>>>>>>>>>     defer wg.Done()
>>>>>>>>>>>>>>     for {
>>>>>>>>>>>>>>         shouldExit := atomic.LoadUint64(&exitFlag)
>>>>>>>>>>>>>>         if shouldExit == 1 {
>>>>>>>>>>>>>>              return
>>>>>>>>>>>>>>         }
>>>>>>>>>>>>>>         chan <- rand.Intn(100)
>>>>>>>>>>>>>>     }
>>>>>>>>>>>>>> }
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> Here's 10 producers and 3 consumers sharing a channel and 
>>>>>>>>>>>>>> closing it safely upon receiving an exit flag:
>>>>>>>>>>>>>> https://play.golang.org/p/RiKi1PGVSvF
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> -- Marcin
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> On Wed, Aug 28, 2019 at 11:29 AM Leo Lara 
>>>>>>>>>>>>>>> <l...@leopoldolara.com> wrote:
>>>>>>>>>>>>>>> I do not think priority select is *necessary*, it could be a 
>>>>>>>>>>>>>>> nice addition if the performance does not change.
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> On Wednesday, August 28, 2019 at 8:27:36 PM UTC+2, Leo Lara 
>>>>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>>>> Hi Robert,
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> From the article: """To bound more the problem, in my case, 
>>>>>>>>>>>>>>>> you control the writers but not the readers"""
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> So what I was trying to do was to be able to close, with 
>>>>>>>>>>>>>>>> mutiple writers, while being transparent for the readers. The 
>>>>>>>>>>>>>>>> readers only need to read as usual form the channel.
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> For example, if you want to write a library where the user 
>>>>>>>>>>>>>>>> just reads from a channel, this is an approach I found where 
>>>>>>>>>>>>>>>> the user of the lirbary deos nto have to do anything special. 
>>>>>>>>>>>>>>>> Of course, there might be another solution, but if you need to 
>>>>>>>>>>>>>>>> modify the reader we are talking about a different problem.
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> Cheers!!
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> On Wednesday, August 28, 2019 at 7:17:24 PM UTC+2, Robert 
>>>>>>>>>>>>>>>>> Engels wrote:
>>>>>>>>>>>>>>>>> A better solution is to wrap the writes using a RWLock, grab 
>>>>>>>>>>>>>>>>> the read lock for writing, and the Write lock for closing. 
>>>>>>>>>>>>>>>>> Pretty simple.
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> Just encapsulate it all in a MultiWriterChannel struct - 
>>>>>>>>>>>>>>>>> generics would help here :)
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> -----Original Message----- 
>>>>>>>>>>>>>>>>> From: Leo Lara 
>>>>>>>>>>>>>>>>> Sent: Aug 28, 2019 11:24 AM 
>>>>>>>>>>>>>>>>> To: golang-nuts 
>>>>>>>>>>>>>>>>> Subject: [go-nuts] Re: An old problem: lack of priority 
>>>>>>>>>>>>>>>>> select cases 
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> This is connected with my article: 
>>>>>>>>>>>>>>>>> https://dev.to/leolara/closing-a-go-channel-written-by-several-goroutines-52j2
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> I think there I show it is possible to workaround that 
>>>>>>>>>>>>>>>>> limitation using standard Go tools. Of course, the code would 
>>>>>>>>>>>>>>>>> be simple with priority select, but also perhaps select would 
>>>>>>>>>>>>>>>>> become less efficient.
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> On Wednesday, August 28, 2019 at 6:06:33 PM UTC+2, T L wrote:
>>>>>>>>>>>>>>>>>> The old thread: 
>>>>>>>>>>>>>>>>>> https://groups.google.com/forum/#!topic/golang-nuts/ZrVIhHCrR9o
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> Go channels are flexible, but in practice, I often 
>>>>>>>>>>>>>>>>>> encountered some situations in which channel are hard to use.
>>>>>>>>>>>>>>>>>> Given an example:
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> import "math/rand"
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> type Producer struct {
>>>>>>>>>>>>>>>>>>     data   chan int
>>>>>>>>>>>>>>>>>>     closed chan struct{}
>>>>>>>>>>>>>>>>>> }
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> func NewProducer() *Producer {
>>>>>>>>>>>>>>>>>>     p := &Producer {
>>>>>>>>>>>>>>>>>>         data:   make(chan int),
>>>>>>>>>>>>>>>>>>         closed: make(chan struct{}),
>>>>>>>>>>>>>>>>>>     }
>>>>>>>>>>>>>>>>>>     
>>>>>>>>>>>>>>>>>>     go p.run()
>>>>>>>>>>>>>>>>>>     
>>>>>>>>>>>>>>>>>>     return p
>>>>>>>>>>>>>>>>>> }
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> func (p *Produce) Stream() chan int {
>>>>>>>>>>>>>>>>>>     return p.data
>>>>>>>>>>>>>>>>>> }
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> func (p *Producer) run() {
>>>>>>>>>>>>>>>>>>     for {
>>>>>>>>>>>>>>>>>>         // If non-blocking cases are selected by their 
>>>>>>>>>>>>>>>>>> appearance order,
>>>>>>>>>>>>>>>>>>         // then the following slect block is a perfect use.
>>>>>>>>>>>>>>>>>>         select {
>>>>>>>>>>>>>>>>>>         case(0) <-p.closed: return
>>>>>>>>>>>>>>>>>>         case p.data <- rand.Int():
>>>>>>>>>>>>>>>>>>         }
>>>>>>>>>>>>>>>>>>     }
>>>>>>>>>>>>>>>>>> }
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> func (p *Produce) Clsoe() {
>>>>>>>>>>>>>>>>>>     close(p.closed)
>>>>>>>>>>>>>>>>>>     close(p.data)
>>>>>>>>>>>>>>>>>> }
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> func main() {
>>>>>>>>>>>>>>>>>>     p := NewProducer()
>>>>>>>>>>>>>>>>>>     for n := p.Stream() {
>>>>>>>>>>>>>>>>>>         // use n ...
>>>>>>>>>>>>>>>>>>     }
>>>>>>>>>>>>>>>>>> }
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> If the first case in the select block in the above example 
>>>>>>>>>>>>>>>>>> has a higher priority than the second one,
>>>>>>>>>>>>>>>>>> then coding will be much happier for the use cases like the 
>>>>>>>>>>>>>>>>>> above one.
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> In short, the above use case requires:
>>>>>>>>>>>>>>>>>> * for receivers, data streaming end is notified by the close 
>>>>>>>>>>>>>>>>>> of a channel.
>>>>>>>>>>>>>>>>>> * for senders, data will never be sent to closed channel.
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> But, as Go 1 doesn't support priority select cases, it is 
>>>>>>>>>>>>>>>>>> much tedious to implement the code
>>>>>>>>>>>>>>>>>> satisfying the above listed requirements. The final 
>>>>>>>>>>>>>>>>>> implementation is often very ugly and inefficient.
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> Does anyone else also experience the pain?
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> -- 
>>>>>>>>>>>>>>>>> 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 golan...@googlegroups.com.
>>>>>>>>>>>>>>>>> To view this discussion on the web visit 
>>>>>>>>>>>>>>>>> https://groups.google.com/d/msgid/golang-nuts/b284f880-034a-4721-8686-ef48d3e2c14c%40googlegroups.com.
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> -- 
>>>>>>>>>>>>>>> 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 golan...@googlegroups.com.
>>>>>>>>>>>>>>> To view this discussion on the web visit 
>>>>>>>>>>>>>>> https://groups.google.com/d/msgid/golang-nuts/aeb38a0a-8268-42d7-a8eb-ce5ef01c5380%40googlegroups.com.
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> -- 
>>>>>>>>>>>>>> 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 golan...@googlegroups.com.
>>>>>>>>>>>>>> To view this discussion on the web visit 
>>>>>>>>>>>>>> https://groups.google.com/d/msgid/golang-nuts/CA%2Bv29LvcUhUvrZb_8AKYWj0A%2Bqd5LKBPmbz-RVBb%3DJn_gNZE6w%40mail.gmail.com.
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>>> -- 
>>>>>>>>>>>>> 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 golan...@googlegroups.com.
>>>>>>>>>>>>> To view this discussion on the web visit 
>>>>>>>>>>>>> https://groups.google.com/d/msgid/golang-nuts/CANgi337s1Low95QvqJUAOTsqcVji7uMQ_jr%3DFftpt2uMz5_XSQ%40mail.gmail.com.
>>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>>> -- 
>>>>>>>>>>> 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 golan...@googlegroups.com.
>>>>>>>>>>> To view this discussion on the web visit 
>>>>>>>>>>> https://groups.google.com/d/msgid/golang-nuts/a5cff3f8-cc1c-4719-9f2f-7b9c31086f6a%40googlegroups.com.
>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> -- 
>>>>>>>>>> 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 golan...@googlegroups.com.
>>>>>>>>>> To view this discussion on the web visit 
>>>>>>>>>> https://groups.google.com/d/msgid/golang-nuts/4bf95bb2-33ed-46ed-9436-48df1072914f%40googlegroups.com.
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> -- 
>>>>>>>>> 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 golan...@googlegroups.com.
>>>>>>>>> To view this discussion on the web visit 
>>>>>>>>> https://groups.google.com/d/msgid/golang-nuts/d155dcf6-7c01-4f7e-b408-eef9903cd837%40googlegroups.com.
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>> 
>>>>>>>> -- 
>>>>>>>> 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 golan...@googlegroups.com.
>>>>>>>> To view this discussion on the web visit 
>>>>>>>> https://groups.google.com/d/msgid/golang-nuts/74653e49-f374-4ac8-998e-fd874cdf6bd4%40googlegroups.com.
>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>> 
>>>>>>> -- 
>>>>>>> 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 golan...@googlegroups.com.
>>>>>>> To view this discussion on the web visit 
>>>>>>> https://groups.google.com/d/msgid/golang-nuts/3d75a129-efee-402f-aafa-9fe76af4e789%40googlegroups.com.
>>>>> 
>>>>> -- 
>>>>> 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 golan...@googlegroups.com.
>>>>> To view this discussion on the web visit 
>>>>> https://groups.google.com/d/msgid/golang-nuts/dfdf8905-f740-434c-a293-d801de4f71dc%40googlegroups.com.
>>> 
>>> -- 
>>> 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 golan...@googlegroups.com.
>>> To view this discussion on the web visit 
>>> https://groups.google.com/d/msgid/golang-nuts/ffd06e6e-fb00-400e-ad5f-5f23d27025f7%40googlegroups.com.
> 
> -- 
> 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/dd5a26b4-b080-4dd1-801b-ff59eccf9940%40googlegroups.com.

-- 
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/F49B25BF-D39D-4D0A-B918-1811ABD5BD47%40ix.netcom.com.

Reply via email to