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

package main


type 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 会自动将任何以零开头的数字视为八进制


慕码人8056858
浏览 151回答 1
1回答

达令说

即使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 更安全,并提供更好的验证。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go