Golang中如何将字符串转换为整数并保留前导零

Golang中如何将字符串转换为整数并保留前导零 我正在解析Excel文件,其中有一个邮政编码的字符串列,我想将其转换为整数。例如,我有字段"17845"和"04745",期望的输出是17845和04745,但当我使用strconv.ParseInt时,输出却变成了17845和4745。

func main() {
    fmt.Println("hello world")
}
2 回复

无法实现,因为int是数字类型而非字符串类型。但可以通过固定宽度格式来获得输出。

func main() {
    fmt.Println("hello world")
}

更多关于Golang中如何将字符串转换为整数并保留前导零的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


在Go语言中,整数类型(如intint64)本身不存储前导零,因为前导零在数值上没有意义。当您使用strconv.ParseInt将字符串转换为整数时,前导零会被自动去除,这是符合数学规范的。

如果您需要保留前导零,建议将数据保持为字符串类型,或者在需要显示时格式化输出。以下是一个示例,展示如何解析字符串并保留前导零的显示:

package main

import (
    "fmt"
    "strconv"
)

func main() {
    // 示例字符串数据
    zipCodes := []string{"17845", "04745"}
    
    for _, zipStr := range zipCodes {
        // 将字符串转换为整数(前导零会被去除)
        zipInt, err := strconv.ParseInt(zipStr, 10, 64)
        if err != nil {
            fmt.Printf("Error parsing %s: %v\n", zipStr, err)
            continue
        }
        
        // 如果需要保留前导零,可以格式化为固定长度的字符串
        // 假设邮政编码长度为5位
        formattedZip := fmt.Sprintf("%05d", zipInt)
        fmt.Printf("Original: %s, Parsed: %d, Formatted: %s\n", zipStr, zipInt, formattedZip)
    }
}

输出:

Original: 17845, Parsed: 17845, Formatted: 17845
Original: 04745, Parsed: 4745, Formatted: 04745

如果您需要存储邮政编码,建议直接使用字符串类型,以避免丢失前导零:

package main

import (
    "fmt"
)

func main() {
    // 直接使用字符串存储邮政编码
    zipCodes := []string{"17845", "04745"}
    
    for _, zip := range zipCodes {
        fmt.Printf("Zip code: %s\n", zip)
    }
}

输出:

Zip code: 17845
Zip code: 04745

如果您从Excel解析数据,建议在读取阶段就保持为字符串格式,而不是转换为整数。

回到顶部