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 文件的数据实际上并不是我想要的:

image

打印出来是:\x00\x00\x00\x00\x00\x001490

这是怎么回事?我只想要数字。


更多关于Golang中如何将int类型转换为string的实战教程也可以访问 https://www.itying.com/category-94-b0.html

5 回复

现在可以正常工作了。谢谢!

更多关于Golang中如何将int类型转换为string的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


当内存中已包含所有数据时,可以考虑通过一次调用写入整个文件,如下所示:

	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 偏移量”

favicon

os package - os - Go Packages

Package os provides a platform-independent interface to operating system functionality.

avatar

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 标志是最简洁的方式,它会在打开文件时自动清空文件内容,避免了手动管理文件指针的问题。

回到顶部