I have a problem with appending to a slice in a loop. The last read content in loop replaces existing slice content.
I have tried the built-in function append and also tried directly assigning with indexes, none works.
package main
import (
"fmt"
"io/ioutil"
"log"
)
func main() {
content, err := ioutil.ReadDir("./")
if err != nil {
log.Fatal(err)
}
var a []map[string]string
e := map[string]string{}
for _, eachContent := range content {
if eachContent.IsDir() {
e["name"] = eachContent.Name()
e["isdir"] = "1"
} else {
e["name"] = eachContent.Name()
e["isdir"] = "0"
}
fmt.Println(e)
a = append(a, e)
}
fmt.Println(a)
}
Exepecting:
[map[name:dev isdir:1] map[isdir:1 name:etc] map[name:test.go isdir:0]]
but I got
[map[name:test.go isdir:0] map[isdir:0 name:test.go] map[name:test.go isdir:0]]