如何将 Golang 字符串转换为 Int
Go 是静态类型的。 每个变量都有一个静态类型,恰好是编译时已知和固定的一种类型:int、float32、*MyType、 []字节等。
在 Go 中,数据类型用于区分一种特定类型的数据,定义可以分配给类型的值以及可以执行的操作。
在编程中,有时您需要在类型之间转换值以以不同方式修改值。 因此,Golang 中的类型转换是最重要的主题之一。
Golang 字符串到 Int
在 Golang 中将字符串转换为 int,
-
strconv.Atoi()
-
strconv.ParseInt()
-
fmt.Sscanf()
Golang 有一个名为 strconv 的内置包,它提供了将字符串转换为 int 的函数。
Atoi() Sscanf() 和 ParseInt() 是将 Golang 字符串转换为 int 的三个函数。 Go 是静态类型语言; 数据类型绑定到变量而不是值。
这意味着如果你定义变量为int,它只能是int; 如果不转换变量的字符串数据类型,就无法将字符串分配给它。
使用 strconv.Atoi(str) 将 Golang 字符串转换为 int
Golang strconv.Atoi() 函数返回其 int 类型的值。 如果 str 是有效输入,则该函数返回传递的字符串编号的等效整数。 Atoi 代表 ASCII 到整数。
如果没有发生有效的转换,则函数返回零。
// hello.go package main import ( "fmt" "strconv" ) func main() { data := "11" if sv, err := strconv.Atoi(data); err == nil { fmt.Printf("%T, %v", sv, sv) } }
输出
go run hello.go int, 11
我们定义了一个名为“1”的字符串,并使用 Atoi() 函数将字符串转换为整数。
然后我们使用 fmt 动词来打印转换后的数据类型和值。
从上面的例子中,我们可以看到它将字符串“”1“”转换为整数11。
在上面的代码示例中,我们取了一个整数 11,通过 puttin”””” 把它变成一个字符串,所以转换成整数后,它就像 11,是一个普通的整数,但是我们尝试转换”” Golan””字符串并查看输出。
// hello.go package main import ( "fmt" "strconv" ) func main() { data := "Golang" sv, err := strconv.Atoi(data) if err == nil { fmt.Printf("%T, %v", sv, sv) } else { fmt.Println(err) } }
在上面的代码中,我们的数据是“”Golang””,它是一个字符串。
现在,strconv.Atoi() 函数将返回错误,因为“”Golan””字符串将被视为无效语法并引发如下错误。
strconv.Atoi: 解析””Golan””: 无效的语法输出
go run hello.go strconv.Atoi: parsing "Golang": invalid syntax
您可以使用 strconv.Atoi(s) 将字符串 s 转换为 32 位整数。 Atoi() 函数等价于 ParseInt(s, 10, 0) 函数,转换为 int 类型。
在 Golang 中将自定义字符串解析为 int
还有 Golang fmt.Sscanf(),它提供了更大的灵活性,就像使用格式字符串一样,您可以指定数字格式(如宽度、基数等)以及输入字符串中的一些额外字符。 让我们深入研究 Golang fmt.Sscanf() 函数。
Golang 函数 Sscanf()
Golang Sscanf() 函数扫描参数字符串,将连续的空格分隔值存储到格式定义的后续参数中。
Sscanf() 返回成功解析的项目数。 输入中的换行符必须与格式中的换行符匹配。
// hello.go package main import ( "fmt" ) func main() { s := "id:00211" var i int if _, err := fmt.Sscanf(s, "id:%5d", &i); err == nil { fmt.Println(i) } }
输出
go run hello.go 211
这里我们的输入以“”id:0021“”的形式提供,其中您有前缀“”id””,数字是固定的五位数字,如果较短则用零填充; 这可以很快解析。 这就是我们在输出中得到 211 的原因。
使用这个 Sscanf() 方法,我们必须指定格式字符串来指导值的解析。 我们可以在格式字符串中使用标准格式代码。 Sscanf 的工作方式与 Sscan 相同,只是我们必须传递一个格式字符串作为第二个参数。
使用 strconv.ParseInt() 将字符串转换为 int
Golang ParseInt() 方法解释给定基数(0, 2 到 36)和位大小(0 到 64)的字符串 s,并返回对应的值 i。 请参阅以下语法。
func ParseInt(s string, base int, bitSize int) (i int64, err error)
如果 base == 0,则 base 由字符串前缀隐含:base 2 表示“0b”,base 8 表示“0”或“0o”,base 16 表示“0x”,否则为 base 10。
此外,仅对于 base == 0,Go 整数文字语法允许使用下划线字符。 如果基数小于 0、为 1 或大于 36,则返回错误。
bitSize 参数定义了结果必须适合的整数类型。
位大小 0、8、16、32 和 64 对应于 int、int8、int16、int32 和 int64。 如果 bitSize 低于 0 或高于 64,则会抛出错误。
ParseInt 返回的错误具有特定类型 *NumError 并且包括 err.Num = s。
如果s为空或包含无效数字,则err.Err = ErrSyntax,返回值为0; 如果s对应的值不能用给定大小的有符号整数表示,则err.Err = ErrRange,返回值是相应bitSize和符号的最大幅度整数。
请参阅以下代码示例。
// hello.go package main import ( "fmt" "reflect" "strconv" ) func main() { fmt.Println("\nConvert String into Integer Data type") str3 := "AppDividend" fmt.Println("Before String Value: ", str3) fmt.Println("Before converting Datatype:", reflect.TypeOf(str3)) intStr, _ := strconv.ParseInt(str3, 10, 64) fmt.Println("After Integer Value: ", intStr) fmt.Println("After converting Datatype:", reflect.TypeOf(intStr)) }
输出
go run hello.go Convert String into Integer Data type Before String Value: AppDividend Before converting Datatype: string After Integer Value: 0 After converting Datatype: int64
在这里,我们得到输出 0,因为字符串是基于字符而不是有符号整数构建的,但是它的数据类型从字符串更改为 int64。 我们使用 Golang ParseInt() 函数将字符串转换为整数。 我们使用反射来获取变量的数据类型,使用 reflect.TypeOf() 函数。
计算中的反射是程序主要通过类型研究其结构的能力; 它是一种元编程形式——类型系统上的反射形式。
func TypeOf(i interface{}) 类型
TypeOf() 返回表示 i 的动态类型的反射类型。 如果i是nil接口值,TypeOf返回nil。我们再举个例子。 请参阅下面的代码。
// hello.go package main import ( "fmt" "reflect" "strconv" ) func main() { fmt.Println("\nConvert String into Integer Data type") str3 := "11192146" fmt.Println("Before String Value: ", str3) fmt.Println("Before converting Datatype:", reflect.TypeOf(str3)) intStr, _ := strconv.ParseInt(str3, 10, 64) fmt.Println("After Integer Value: ", intStr) fmt.Println("After converting Datatype:", reflect.TypeOf(intStr)) }
输出
go run hello.go Convert String into Integer Data type Before String Value: 11192146 Before converting Datatype: string After Integer Value: 11192146 After converting Datatype: int64
结论
Golang 字符串是一个或多个字符(字母、数字或符号)的序列。 字符串是计算机程序中最常用的数据形式。 因此,您可能需要经常将字符串转换为数字或将数字转换为字符串,尤其是在您接收用户生成的数据时。
可以使用 Go 标准库中的 Golang 内置 strconv 包将字符串转换为数字。 strconv 包具有转换整数和浮点数类型的功能。 当接受来自用户的输入时,这是一个普遍的操作。
如果您的字符串没有小数位,您可能希望使用 strconv.Atoi 函数将其转换为整数。 但是对于复杂的场景,您总是可以使用 Sscanf() 函数。
而已。
如何将 Golang 字符串转换为 Int 的帖子首先出现在 AppDividend 上。