为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用文件名创建切片

如何使用文件名创建切片

Go
HUH函数 2023-02-14 15:20:10
有一个每秒创建文件的程序。我想将文件名附加到切片中并打印出来。现在我的程序执行不正确,它附加名称但仅用于一个文件名。所以我希望得到[]string{"1","2","3"},而不是我得到[]string{"1","1","1"},[]string{"2","2","2"}, []string{"3","3","3"}。如何更正我的程序以获得预期结果?package mainimport (    "encoding/csv"    "fmt"    "os"    "strconv"    "time")func main() {    for {        time.Sleep(1 * time.Second)        createFile()    }}func createFile() {    rowFile := time.Now().Second()    fileName := strconv.Itoa(rowFile)    file, err := os.OpenFile(fileName, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0644)    if err != nil {        fmt.Println(err)    }    defer file.Close()    writer := csv.NewWriter(file)    writer.Comma = '|'    err = writer.Write([]string{""})    if err != nil {        fmt.Println(err)    }    countFiles(fileName)}func countFiles(fileName string) {    arrFiles := make([]string, 0, 3)    for i := 0; i < 3; i++ {        arrFiles = append(arrFiles, fileName)    }    fmt.Println(arrFiles)// here I expect ["1","2","3"] then ["4","5","6"] and so on. But now there is ["1","1","1"] then ["2","2","2"] and so on}
查看完整描述

1 回答

?
FFIVE

TA贡献1797条经验 获得超6个赞

createFile()不会以任何方式保留创建的文件名。你可以这样做:


 package main


import (

    "encoding/csv"

    "fmt"

    "os"

    "strconv"

    "time"

)


func main() {

    files := []string{}

    for {

        time.Sleep(1 * time.Second)

        files = append(files, createFile())

        fmt.Println(files)

    }

}


func createFile() string {

    rowFile := time.Now().Second()

    fileName := strconv.Itoa(rowFile)


    file, err := os.OpenFile(fileName, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0644)

    if err != nil {

        fmt.Println(err)

    }

    defer file.Close()


    writer := csv.NewWriter(file)

    writer.Comma = '|'


    err = writer.Write([]string{""})

    if err != nil {

        fmt.Println(err)

    }

    return fileName

}


查看完整回答
反对 回复 2023-02-14
  • 1 回答
  • 0 关注
  • 119 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信