3 回答
TA贡献1815条经验 获得超13个赞
例如,
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)
}
输入:
1 2 3
输出:
[1 2 3]
TA贡献2037条经验 获得超6个赞
惯用的 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
}
interface{}没什么意思。如果非必要,请不要使用它。
TA贡献1831条经验 获得超10个赞
我认为正确的版本应该是
X := make([]int, 3)
fmt.Scanln(&X[0], &X[1], &X[2])
fmt.Printf("%v\n", X)
- 3 回答
- 0 关注
- 340 浏览
添加回答
举报