我有一行包含3个数字,我想从stdin用fmt.Scanln()读取,但这段代码不起作用:
X := make([]int, 3)
fmt.Scanln(X...)
fmt.Printf("%v\n", X)
Run Code Online (Sandbox Code Playgroud)
我收到此错误消息:
cannot use X (type []int) as type []interface {} in function argument
Run Code Online (Sandbox Code Playgroud)
我不明白.
vou*_*rus 11
惯用Go将是:
func read(n int) ([]int, error) {
in := make([]int, n)
for i := range in {
_, err := fmt.Scan(&in[i])
if err != nil {
return in[:i], err
}
}
return in, nil
}
Run Code Online (Sandbox Code Playgroud)
interface{}没意思.如果您不需要,请不要使用它.
例如,
package main
import "fmt"
func intScanln(n int) ([]int, error) {
x := make([]int, n)
y := make([]interface{}, len(x))
for i := range x {
y[i] = &x[i]
}
n, err := fmt.Scanln(y...)
x = x[:n]
return x, err
}
func main() {
x, err := intScanln(3)
if err != nil {
fmt.Println(err)
return
}
fmt.Printf("%v\n", x)
}
Run Code Online (Sandbox Code Playgroud)
输入:
1 2 3
Run Code Online (Sandbox Code Playgroud)
输出:
[1 2 3]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4695 次 |
| 最近记录: |