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 [email protected].
For more options, visit https://groups.google.com/d/optout.