github.com/hlts2/go@v0.0.0-20170904000733-812b34efaed8/src/runtime/race/testdata/reflect_test.go (about) 1 // Copyright 2016 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 package race_test 6 7 import ( 8 "reflect" 9 "testing" 10 ) 11 12 func TestRaceReflectRW(t *testing.T) { 13 ch := make(chan bool, 1) 14 i := 0 15 v := reflect.ValueOf(&i) 16 go func() { 17 v.Elem().Set(reflect.ValueOf(1)) 18 ch <- true 19 }() 20 _ = v.Elem().Int() 21 <-ch 22 } 23 24 func TestRaceReflectWW(t *testing.T) { 25 ch := make(chan bool, 1) 26 i := 0 27 v := reflect.ValueOf(&i) 28 go func() { 29 v.Elem().Set(reflect.ValueOf(1)) 30 ch <- true 31 }() 32 v.Elem().Set(reflect.ValueOf(2)) 33 <-ch 34 } 35 36 func TestRaceReflectCopyWW(t *testing.T) { 37 ch := make(chan bool, 1) 38 a := make([]byte, 2) 39 v := reflect.ValueOf(a) 40 go func() { 41 reflect.Copy(v, v) 42 ch <- true 43 }() 44 reflect.Copy(v, v) 45 <-ch 46 }