📜  Golang 中的 fmt.Sscan()函数示例(1)

📅  最后修改于: 2023-12-03 15:01:01.598000             🧑  作者: Mango

Golang 中的 fmt.Sscan()函数示例

在 Golang 中,fmt 包提供了许多函数用于字符串和数据类型之间的转换。其中一个非常有用的函数是 fmt.Sscan()。该函数可以将一个字符串解析为多个值,并将它们存储到提供的变量中。在本文中,我们将探讨 fmt.Sscan() 函数的用法和一些示例,帮助你更好地理解它是如何工作的。

函数定义

下面是 fmt.Sscan() 的函数定义:

func Sscan(str string, a ...interface{}) (n int, err error)
  • str:要扫描的字符串。
  • a ...interface{}:要存储结果的变量列表。可以有任意数量的变量。
示例

下面是一个简单的示例,演示了如何使用 fmt.Sscan() 函数将字符串解析为多个值:

package main

import (
	"fmt"
)

func main() {
	var a, b, c int
	str := "10 20 30"
	n, err := fmt.Sscan(str, &a, &b, &c)
	if err != nil {
		fmt.Println(err)
	}
	fmt.Println("Parsed successfully:", n, "values.")
	fmt.Println("a =", a)
	fmt.Println("b =", b)
	fmt.Println("c =", c)
}

输出:

Parsed successfully: 3 values.
a = 10
b = 20
c = 30

在上面的示例中,我们将字符串 "10 20 30" 解析为三个整数,并将它们存储到变量 a、b 和 c 中。

处理字符串中的分隔符

默认情况下,fmt.Sscan() 函数使用空格作为分隔符。但是,在某些情况下,字符串可能包含不同的分隔符。在这种情况下,你可以使用 fmt.Scanln() 函数的第一个参数来指定分隔符。下面是一个示例:

package main

import (
	"fmt"
	"strings"
)

func main() {
	var a, b, c int
	str := "10,20,30"
	r := strings.NewReader(str)
	n, err := fmt.Fscanf(r, "%d,%d,%d", &a, &b, &c)
	if err != nil {
		fmt.Println(err)
	}
	fmt.Println("Parsed successfully:", n, "values.")
	fmt.Println("a =", a)
	fmt.Println("b =", b)
	fmt.Println("c =", c)
}

输出:

Parsed successfully: 3 values.
a = 10
b = 20
c = 30

在上面的示例中,我们使用 fmt.Fscanf() 函数来读取一个包含逗号分隔符的字符串,并将其存储为三个整数。注意,这里我们使用了 strings.NewReader() 函数来创建一个 io.Reader 对象,作为 fmt.Fscanf() 的第一个参数。

总结

fmt.Sscan() 函数是一个非常有用的函数,可以将一个字符串解析为多个值,并将它们存储到提供的变量中。在使用该函数时,你需要指定要解析的字符串和要存储结果的变量列表。如果你需要指定分隔符,可以使用 fmt.Fscanf() 函数。希望本文能对你的 Golang 编程工作有所帮助!