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  }