迭代 ListObject 时的文件名相同
Same file name on iterating ListObject
我想读取 minio 存储桶中的文件列表。按照文档,我执行以下步骤:
var listFile []*string
minioClient, err := minio.New(location, user, password, true)
// Create a done channel.
doneCh := make(chan struct{})
defer close(doneCh)
// Recursively list all objects in 'mytestbucket'
recursive := true
bucket := "private"
url := "production/font/"
objectCh := minioClient.ListObjects(bucket, url, recursive, doneCh)
for message := range objectCh {
listFile = append(listFile, &message.Key)
}
return listFile, err
当我读取文件列表时,我将获得一个包含 24 个项目但具有相同文件名的数组,例如:
"production/font/merriweathersans-regular-webfont.ttf",
"production/font/merriweathersans-regular-webfont.ttf",
"production/font/merriweathersans-regular-webfont.ttf",
"production/font/merriweathersans-regular-webfont.ttf",
"production/font/merriweathersans-regular-webfont.ttf",
...
但我应该看到该目录的所有文件名:
"production/font/Nexa-Light.ttf",
"production/font/Nexa-Bold.ttf",
"production/font/merriweathersans-regular-webfont.ttf",
....
我哪里错了?
问题是循环中的错字,即将 &message.Key
附加到 listFile
。这里 message
变量总是相同的,并且您要追加相同的变量,因此 listFile
总是指向 message.key
.
的最后一个值
要解决此问题,您可以:
for message := range objectCh {
tmpMessage := message
listFile = append(listFile, &tmpMessage.Key)
}
我想读取 minio 存储桶中的文件列表。按照文档,我执行以下步骤:
var listFile []*string
minioClient, err := minio.New(location, user, password, true)
// Create a done channel.
doneCh := make(chan struct{})
defer close(doneCh)
// Recursively list all objects in 'mytestbucket'
recursive := true
bucket := "private"
url := "production/font/"
objectCh := minioClient.ListObjects(bucket, url, recursive, doneCh)
for message := range objectCh {
listFile = append(listFile, &message.Key)
}
return listFile, err
当我读取文件列表时,我将获得一个包含 24 个项目但具有相同文件名的数组,例如:
"production/font/merriweathersans-regular-webfont.ttf",
"production/font/merriweathersans-regular-webfont.ttf",
"production/font/merriweathersans-regular-webfont.ttf",
"production/font/merriweathersans-regular-webfont.ttf",
"production/font/merriweathersans-regular-webfont.ttf",
...
但我应该看到该目录的所有文件名:
"production/font/Nexa-Light.ttf",
"production/font/Nexa-Bold.ttf",
"production/font/merriweathersans-regular-webfont.ttf",
....
我哪里错了?
问题是循环中的错字,即将 &message.Key
附加到 listFile
。这里 message
变量总是相同的,并且您要追加相同的变量,因此 listFile
总是指向 message.key
.
要解决此问题,您可以:
for message := range objectCh {
tmpMessage := message
listFile = append(listFile, &tmpMessage.Key)
}