exportloopref icon indicating copy to clipboard operation
exportloopref copied to clipboard

cannot detect case when exporting the address of a struct member

Open ljw7630 opened this issue 1 year ago • 1 comments

package main
import "fmt"

type Transaction struct {
	ID     int
	Status int
}

func main() {
	var txns []Transaction
	for i := 0; i < 10; i++ {
		txns = append(txns, Transaction{ID: i, Status: 0})
	}
	var ptr []*int
	for _, txn := range txns {
		fmt.Printf("Transaction ID: %d, Status addr: %p\n", txn.ID, &(txn.Status))
		ptr = append(ptr, &(txn.Status))
	}
}

running: exportloopref got no error

ljw7630 avatar Jul 09 '24 07:07 ljw7630

@ljw7630 You don't need to wrap txn.Status with braces. exportloopref cannot find the wrapped pointer.

package main
import "fmt"

type Transaction struct {
	ID     int
	Status int
}

func main() {
	var txns []Transaction
	for i := 0; i < 10; i++ {
		txns = append(txns, Transaction{ID: i, Status: 0})
	}
	var ptr []*int
	for _, txn := range txns {
		fmt.Printf("Transaction ID: %d, Status addr: %p\n", txn.ID, &(txn.Status))
		ptr = append(ptr, &txn.Status)
	}
}

kyoh86 avatar Jul 13 '24 07:07 kyoh86