为了账号安全,请及时绑定邮箱和手机立即绑定

为什么 Go Programming 将任何以零开头的数字视为八进制,我该如何防止这种情况发生?

为什么 Go Programming 将任何以零开头的数字视为八进制,我该如何防止这种情况发生?

Go
慕码人8056858 2022-06-27 17:07:05
package maintype contactInfo struct {    number int    email  string}type person struct {    firstName string    lastName  string    contact   contactInfo}func main() {    user1 := person{        firstName: "Anthony",        lastName:  "Martial",        contact: contactInfo{            number: 07065526369,            email: "tony@gmail.com",        },    }    fmt.Println(user1)}当我为变量“数字:07065526369”分配一个值时,出现一个错误,说“八进制文字中的无效数字'9'”,我试图找出一种方法来防止它通过将该数字设为基数 10 而不是以 8 为底,因为我认为 Go 会自动将任何以零开头的数字视为八进制
查看完整描述

1 回答

?
达令说

TA贡献1821条经验 获得超6个赞

即使Go 1.13引入了整数文字的更改,您int仍然会被解释为八进制(其中不能有 '9',因此会出现错误消息)

八进制整数文字:前缀0oor0O表示八进制整数文字,例如0o660. 由前导后跟八进制数字
指示的现有八进制表示法仍然有效。0

任何处理电话号码的 Go 库都会将其存储为字符串。
并且该数据可以比一个字符串更详细。

例如dongri/phonenumber,将遵循ISO 3166 国家代码标准,结构如下

type ISO3166 struct {
    Alpha2             string
    Alpha3             string
    CountryCode        string
    CountryName        string
    MobileBeginWith    []string
    PhoneNumberLengths []int}

这比 int 更安全,并提供更好的验证。


查看完整回答
反对 回复 2022-06-27
  • 1 回答
  • 0 关注
  • 150 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信