gpt4 book ai didi

go - 更改指向 *os.File 的指针

转载 作者:IT王子 更新时间:2023-10-29 02:28:42 25 4
gpt4 key购买 nike

我有旋转文件,我需要定期更改文件,但我无法更新我的文件指针

var (
file *os.File
)

func init() {
file, err = os.Create(fileName)
}

func main() {
ticker = time.NewTicker(time.Second * 6)
defer ticker.Stop()

go func(file *os.File) {
<- ticker.C
fn := fmt.Sprintf("%d%s", time.Now().Unix(), ".txt")
file, _ = os.Create(fn)
}(file)

http.HandleFunc("/go", goHandler)
}

func goHandler(w http.ResponseWriter, r *http.Request) {
fmt.Printf("hand File: %v\n", *file)
// when handler triggered file stay the same
file.WriteString(myPayload)
}

它在 goroutines 内部发生变化,但它不会在处理程序中使用react,因此文件始终保持不变。

请建议,我如何更改指向 *os.File 的指针

最佳答案

在您的代码中,goroutine 只运行一次。所以它创建了一个新文件,什么都不做——这意味着 *file只改变了一次。

你应该改变<- ticker.Cfor _ = range ticker.C { ... } .

此外,您应该注意更改和读取 *file 中的值用sync.Mutex ,因为两个 goroutine 之间存在数据竞争。

关于go - 更改指向 *os.File 的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51212999/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com