Error is gone when used 

mux *sync.Mutex



On Tuesday, August 7, 2018 at 6:12:26 PM UTC+5:30, Kasun Vithanage wrote:
>
> I'm implementing some thread safe data structures
>
> type Set struct {
>    m   map[string]int
>    mux sync.Mutex
> }
>
>
> func New() *Set {
>    return &Set{m: make(map[string]int)}
> }
>
>
>
> In my Diff function i need to pass an array of sets to do a diff on 
> another set
>
> func (set *Set) DiffS(sets []Set) *Set {
>    set.mux.Lock()
>    defer set.mux.Unlock()
>    dup := duplicateMap(set.m)
>
>    for i := 0; i < len(sets); i++ {
>       for _, key := range sets[i].Elems() {
>          delete(dup, key)
>       }
>    }
>
>    return &Set{m: dup}
> }
>
>
> Code works fine, i ve written a unit test like this
>
> func TestSet_Diff(t *testing.T) {
>    set1 := New()
>    set2 := New()
>    set3 := New()
>
>    set1.Add([]string{"a", "b", "c", "d"})
>    set2.Add([]string{"c"})
>    set3.Add([]string{"a", "b"})
>
>    el := set1.Diff([]Set{*set2, *set3})
>    testsuite.ContainsElements(t, []string{"d"}, el)
> }
>
>
> This Unit Test passes fine
>
> But when i run the vet command with 
> go vet ./...
>
> I get the following error
> internal\types\set\set_test.go:41: literal copies lock value from *set2: 
> set.Set contains sync.Mutex
> internal\types\set\set_test.go:41: literal copies lock value from *set3: 
> set.Set contains sync.Mutex
>
> What is the ideal solution for this? 
>
>
>

-- 
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