如何读取多个json文件

I am trying to read json data from multiple json files. I am not sure how I read each files and concatenate all results

There json files name are test1.json, test2.json test3.json..etc with the same data structure but I am having an issue read then all and my code seems to only show the last one. I have concatenated a string based on the file name but seems to not working for me.

type Book struct {
    Id    string `json: "id"`
    Title string `json: "title"`
}

func main() {
    fileIndex := 2 // three json files. All named test1.json, test2.json and test3.json

    var master []Book

    for i := 0; i <= fileIndex; i++ {
        fileName := fmt.Sprintf("%s%d%s", "test", fileIndex, ".json")

        // Open jsonFile
        jsonFile, err := os.Open(fileName)

        defer jsonFile.Close()

        byteValue, _ := ioutil.ReadAll(jsonFile)
        fmt.Println(byteValue)
        var book []Book

        json.Unmarshal(byteValue, &book)
        fmt.Println(book) // all print shows the test3.json result 
    }
}

I need to be able to read all three json files and hoping to concatenate all results. Can anyone help me? Thank you!

You are using fileIndex while generating the filename instead of using i in the for loop. The code after the changes would be :

type Book struct {
    Id    string `json: "id"`
    Title string `json: "title"`
}

func main() {
    fileIndex := 2 // three json files. All named test1.json, test2.json and test3.json

    var master []Book

    for i := 0; i <= fileIndex; i++ {
        fileName := fmt.Sprintf("%s%d%s", "test", i, ".json")

        // Open jsonFile
        jsonFile, err := os.Open(fileName)

        defer jsonFile.Close()

        byteValue, _ := ioutil.ReadAll(jsonFile)
        fmt.Println(byteValue)
        var book []Book

        json.Unmarshal(byteValue, &book)
        fmt.Println(book)
    }
}

Also, you can do something like master = append(master, book) inside the for loop to finally get all JSON content in master