github.com/songshiyun/revive@v1.1.5-0.20220323112655-f8433a19b3c5/testdata/range-val-address.go (about) 1 package fixtures 2 3 func rangeValAddress() { 4 m := map[string]*string{} 5 6 mySlice := []string{"A", "B", "C"} 7 for _, value := range mySlice { 8 m["address"] = &value // MATCH /suspicious assignment of 'value'. range-loop variables always have the same address/ 9 } 10 } 11 12 func rangeValAddress2() { 13 m := map[string]*string{} 14 15 mySlice := []string{"A", "B", "C"} 16 for i := range mySlice { 17 m["address"] = &mySlice[i] 18 } 19 } 20 21 func rangeValAddress3() { 22 m := map[string]*string{} 23 24 mySlice := []string{"A", "B", "C"} 25 for _, value := range mySlice { 26 a := &value // MATCH /suspicious assignment of 'value'. range-loop variables always have the same address/ 27 m["address"] = a 28 } 29 } 30 31 func rangeValAddress4() { 32 m := []*string{} 33 34 mySlice := []string{"A", "B", "C"} 35 for _, value := range mySlice { 36 m = append(m, &value) // MATCH /suspicious assignment of 'value'. range-loop variables always have the same address/ 37 } 38 } 39 40 func rangeValAddress5() { 41 m := map[*string]string{} 42 43 mySlice := []string{"A", "B", "C"} 44 for _, value := range mySlice { 45 m[&value] = value // MATCH /suspicious assignment of 'value'. range-loop variables always have the same address/ 46 } 47 } 48 49 func rangeValAddress6() { 50 type v struct { 51 id string 52 } 53 m := []*string{} 54 55 mySlice := []v{{id: "A"}, {id: "B"}, {id: "C"}} 56 for _, value := range mySlice { 57 m = append(m, &value.id) // MATCH /suspicious assignment of 'value'. range-loop variables always have the same address/ 58 } 59 } 60 61 func rangeValAddress7() { 62 type v struct { 63 id string 64 } 65 m := []*string{} 66 67 for _, value := range []v{{id: "A"}, {id: "B"}, {id: "C"}} { 68 m = append(m, &value.id) // MATCH /suspicious assignment of 'value'. range-loop variables always have the same address/ 69 } 70 } 71 72 func rangeValAddress8() { 73 type v struct { 74 id string 75 } 76 m := []*string{} 77 78 mySlice := []*v{{id: "A"}, {id: "B"}, {id: "C"}} 79 for _, value := range mySlice { 80 m = append(m, &value.id) 81 } 82 } 83 84 func rangeValAddress9() { 85 type v struct { 86 id string 87 } 88 m := []*string{} 89 90 mySlice := map[string]*v{"a": {id: "A"}, "b": {id: "B"}, "c": {id: "C"}} 91 for _, value := range mySlice { 92 m = append(m, &value.id) 93 } 94 } 95 96 func rangeValAddress10() { 97 type v struct { 98 id string 99 } 100 m := []*string{} 101 102 for _, value := range map[string]*v{"a": {id: "A"}, "b": {id: "B"}, "c": {id: "C"}} { 103 m = append(m, &value.id) 104 } 105 } 106 107 func rangeValAddress11() { 108 type v struct { 109 id string 110 } 111 m := map[string]*string{} 112 113 for key, value := range map[string]*v{"a": {id: "A"}, "b": {id: "B"}, "c": {id: "C"}} { 114 m[key] = &value.id 115 } 116 } 117 118 func rangeValAddress12() { 119 type v struct { 120 id string 121 } 122 m := map[string]*string{} 123 124 for key, value := range map[string]v{"a": {id: "A"}, "b": {id: "B"}, "c": {id: "C"}} { 125 m[key] = &value.id // MATCH /suspicious assignment of 'value'. range-loop variables always have the same address/ 126 } 127 } 128 129 func rangeValAddress13() { 130 type v struct { 131 id string 132 } 133 m := []*string{} 134 135 otherSlice := map[string]*v{"a": {id: "A"}, "b": {id: "B"}, "c": {id: "C"}} 136 mySlice := otherSlice 137 for _, value := range mySlice { 138 m = append(m, &value.id) 139 } 140 } 141 142 func rangeValAddress14() { 143 type v struct { 144 id *string 145 } 146 147 m := []v{} 148 for _, value := range []string{"A", "B", "C"} { 149 a := v{id: &value} // MATCH /suspicious assignment of 'value'. range-loop variables always have the same address/ 150 m = append(m, a) 151 } 152 } 153 154 func rangeValAddress15() { 155 type v struct { 156 id *string 157 } 158 159 m := []v{} 160 for _, value := range []string{"A", "B", "C"} { 161 m = append(m, v{id: &value}) // MATCH /suspicious assignment of 'value'. range-loop variables always have the same address/ 162 } 163 }