You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Go语言中赋值01000为何显示为512?结构体相关技术问询

Go结构体中zipCode赋值01000输出512的问题解决

问题根源

你遇到的问题是因为Go语言中以0开头的整数字面量会被解析为八进制数,01000作为八进制数转换为十进制的结果就是512,所以终端输出的zipCode是512而非你预期的01000。

解决方案

根据你的需求,有两种处理方式:

  • 如果需要保留zipCode的前导零格式(比如作为邮政编码的字符串形式),应将zipCode的类型从int改为string——整数类型无法存储前导零。
  • 如果仅需要存储数值,直接去掉前导零,使用十进制数值赋值即可。

修正后的代码示例

方式1:将zipCode改为string类型

package main

import "fmt"

type contactInfo struct {
    email   string
    zipCode string // 修改为string类型
}

type person struct {
    firstName string
    lastName  string
    contact   contactInfo
}

func main() {
    jim := person{
        firstName: "Jim",
        lastName:  "Party",
        contact:   contactInfo{email: "jim.party@gmail.com", zipCode: "01000"}, // 用字符串赋值
    }

    fmt.Printf("%+v", jim)
}

运行输出:

{firstName:Jim lastName:Party contact:{email:jim.party@gmail.com zipCode:01000}}

方式2:保留int类型,使用十进制数值

package main

import "fmt"

type contactInfo struct {
    email   string
    zipCode int
}

type person struct {
    firstName string
    lastName  string
    contact   contactInfo
}

func main() {
    jim := person{
        firstName: "Jim",
        lastName:  "Party",
        contact:   contactInfo{email: "jim.party@gmail.com", zipCode: 1000}, // 去掉前导零
    }

    fmt.Printf("%+v", jim)
}

运行输出:

{firstName:Jim lastName:Party contact:{email:jim.party@gmail.com zipCode:1000}}

内容的提问来源于stack exchange,提问作者Daniel Sogbey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 06:05:08