为什么 Go Programming 将任何以零开头的数字视为八进制,我该如何防止这种情况发生?
Why does Go Programming treat any number starting with zero as an octal and how can I prevent this?
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)
}
当我为变量“number: 07065526369”赋值时,会出现一个错误,提示“八进制文字中的无效数字‘9’”,我正试图通过制作该数字来找出防止它发生的方法以 10 为基数而不是以 8 为基数,因为我认为 Go 会自动将任何以零开头的数字视为八进制
即使 Go 1.13 introduced a change in the integer literals,您的 int
仍将被解释为八进制(其中不能包含“9”,因此会出现错误消息)
Octal integer literals: The prefix 0o
or 0O
indicates an octal integer literal such as 0o660
.
The existing octal notation indicated by a leading 0
followed by octal digits remains valid.
任何处理 phone 数字的 Go 库都会将其存储为字符串。
而且那个数据可以比 one string.
更详细
例如dongri/phonenumber
would follow the ISO 3166 COUNTRY CODES standard, with a struct like:
type ISO3166 struct {
Alpha2 string
Alpha3 string
CountryCode string
CountryName string
MobileBeginWith []string
PhoneNumberLengths []int
}
这比 int 更安全,并提供更好的验证。
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)
}
当我为变量“number: 07065526369”赋值时,会出现一个错误,提示“八进制文字中的无效数字‘9’”,我正试图通过制作该数字来找出防止它发生的方法以 10 为基数而不是以 8 为基数,因为我认为 Go 会自动将任何以零开头的数字视为八进制
即使 Go 1.13 introduced a change in the integer literals,您的 int
仍将被解释为八进制(其中不能包含“9”,因此会出现错误消息)
Octal integer literals: The prefix
0o
or0O
indicates an octal integer literal such as0o660
.
The existing octal notation indicated by a leading0
followed by octal digits remains valid.
任何处理 phone 数字的 Go 库都会将其存储为字符串。
而且那个数据可以比 one string.
例如dongri/phonenumber
would follow the ISO 3166 COUNTRY CODES standard, with a struct like:
type ISO3166 struct {
Alpha2 string
Alpha3 string
CountryCode string
CountryName string
MobileBeginWith []string
PhoneNumberLengths []int
}
这比 int 更安全,并提供更好的验证。