使用fmt.Scanf函数从输入中读取格式化的数据并赋值给变量
在Go语言中,使用fmt.Scanf函数可以从标准输入中读取一定格式的数据,并赋值给指定的变量。fmt.Scanf函数的语法如下:
```go
func Scanf(format string, a ...interface{}) (n int, err error)
```
其中,format参数用于指定输入数据的格式,a...interface{}参数则为要接收的变量。下面我们通过一些示例来详细说明fmt.Scanf函数的使用。
示例1:读取整数
下面的示例代码演示了如何从标准输入中读取一个整数并将其赋值给变量n:
```go
var n int
fmt.Scanf("%d", &n)
fmt.Println("读取到的整数为:", n)
```
上面代码中,"%d"参数为格式化字符串,用于指定读取的数据为整数。&n是变量n的地址,可以将读取到的整数赋值给变量n。
示例2:读取字符串
下面的示例代码演示了如何从标准输入中读取一个字符串并将其赋值给变量str:
```go
var str string
fmt.Scanf("%s", &str)
fmt.Println("读取到的字符串为:", str)
```
上面代码中,"%s"参数为格式化字符串,用于指定读取的数据为字符串。&str是变量str的地址,可以将读取到的字符串赋值给变量str。
示例3:读取多个值
下面的示例代码演示了如何从标准输入中读取多个值,并将其赋值给不同的变量:
```go
var n int
var str string
fmt.Scanf("%d %s", &n, &str)
fmt.Println("读取到的整数为:", n)
fmt.Println("读取到的字符串为:", str)
```
上面代码中,"%d %s"参数为格式化字符串,用于指定读取的第一个值为整数,第二个值为字符串。&n和&str分别是变量n和变量str的地址。
示例4:读取多个类型的值
下面的示例代码演示了如何从标准输入中读取多个类型的值,并将其赋值给不同的变量:
```go
var n int
var f float64
var str string
fmt.Scanf("%d %f %s", &n, &f, &str)
fmt.Printf("读取到的整数为:%d,读取到的浮点数为:%f,读取到的字符串为:%s\n", n, f, str)
```
上面代码中,"%d %f %s"参数为格式化字符串,用于指定读取的第一个值为整数,第二个值为浮点数,第三个值为字符串。&n、&f和&str分别是变量n、变量f和变量str的地址。
示例5:读取带空格的字符串
当读取一个带空格的字符串时,需要用"%s"参数的加强版"%q"参数来进行格式化:
```go
var str string
fmt.Scanf("%q", &str)
fmt.Printf("读取到的字符串为:%s\n", str)
```
上面代码中,"%q"参数为格式化字符串的加强版,用于指定读取的数据为带空格的字符串。&str是变量str的地址,可以将读取到的字符串赋值给变量str。
总结
以上就是使用fmt.Scanf函数从输入中读取格式化的数据并赋值给变量的详细讲解。fmt.Scanf函数使用起来虽然简单,但在实际的开发中应用十分广泛。要注意在读取不同类型数据时使用不同的格式化字符串,否则会出现读取错误。