Golang中如何将int类型转换为string
Golang中如何将int类型转换为string
我使用 strconv 包将 int 转换为 string,然后将这个字符串变量写入文件。这是我的代码:
currentTotal := 1490
file, err := os.OpenFile("db", os.O_RDWR, 0666)
file.Truncate(0)
_,err = file.WriteString(strconv.Itoa(currentTotal))
但是写入 db 文件的数据实际上并不是我想要的:

打印出来是:\x00\x00\x00\x00\x00\x001490
这是怎么回事?我只想要数字。
更多关于Golang中如何将int类型转换为string的实战教程也可以访问 https://www.itying.com/category-94-b0.html
5 回复
当内存中已包含所有数据时,可以考虑通过一次调用写入整个文件,如下所示:
currentTotal := 1490
s := strconv.Itoa(currentTotal)
os.WriteFile("db", []byte(s), 0666)
package main
import (
"fmt"
"os"
"strconv"
)
func main() {
num := 42
str := strconv.Itoa(num)
f, err := os.Create("output.txt")
if err != nil {
fmt.Println(err)
return
}
defer f.Close()
f.WriteString(str)
}
尝试使用。
file.Seek(0,0)
“Truncate 改变文件的大小。它不会改变 I/O 偏移量”
os package - os - Go Packages
Package os provides a platform-independent interface to operating system functionality.

How do I truncate and completely rewrite a file without having leading zeros?
go
你遇到的问题是由于文件指针位置引起的。在调用 Truncate(0) 后,文件指针仍然停留在文件开头,但 WriteString 是从当前指针位置开始写入的。
以下是修正后的代码:
package main
import (
"os"
"strconv"
)
func main() {
currentTotal := 1490
// 使用 O_TRUNC 标志直接清空文件
file, err := os.OpenFile("db", os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0666)
if err != nil {
panic(err)
}
defer file.Close()
// 直接写入字符串
_, err = file.WriteString(strconv.Itoa(currentTotal))
if err != nil {
panic(err)
}
}
或者,如果你需要保留原来的文件句柄操作方式,可以在 Truncate 后重置文件指针:
currentTotal := 1490
file, err := os.OpenFile("db", os.O_RDWR, 0666)
if err != nil {
panic(err)
}
defer file.Close()
file.Truncate(0)
file.Seek(0, 0) // 重置文件指针到开头
_, err = file.WriteString(strconv.Itoa(currentTotal))
if err != nil {
panic(err)
}
使用 os.O_TRUNC 标志是最简洁的方式,它会在打开文件时自动清空文件内容,避免了手动管理文件指针的问题。

