How to make fmt.Scanln() read into a slice of integers

go

Solution

For example,

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)
}

Input:

1 2 3

Output:

[1 2 3]

Problem

I have a line containing 3 numbers that I want to read from stdin with fmt.Scanln() but this code won't work: ``` X := make([]int, 3) fmt.Scanln(X...) fmt.Printf("%v\n", X) ``` I get this error message: ``` cannot use X (type []int) as type []interface {} in function argument ``` I don't get it.

Original source