Golang:如何将字符串转换为[]int?

yam*_*han 5 go

我解决这个问题

我需要将字符串转换为 int。在这种情况下,我需要将“5 2 4 6 1 3”转换为例如[6]int{5,2,4,6,1,3}。我按照这段代码编写,特别是AizuArray(). 看来 elements 在这里。请告诉我我的方法是否正确?或者你能告诉我更好的方法吗?我问这个是因为我觉得我的方式是多余的,而Java方式要容易得多。谢谢。

package main

import (
    "fmt"
    "reflect"
    "strconv"
    "strings"
)

func AizuArray(A string, N string) []int {
    a := strings.Split(A, " ")
    n, _ := strconv.Atoi(N) // int 32bit
    b := make([]int, n)
    for i, v := range a {
        b[i], _ = strconv.Atoi(v)
    }
    return b
}

func main() {
    A := "5 2 4 6 1 3"
    N := "6"
    j := strings.Split(A, " ")
    for _, v := range j {
        fmt.Println(reflect.TypeOf(v))
    }
    b := AizuArray(A, N)
    fmt.Println(b)
    for _, v := range b {
        fmt.Println(reflect.TypeOf(v))
    }
}
Run Code Online (Sandbox Code Playgroud)

小智 8

请告诉我我的方法是否正确?

如果您只想将字符串(空格分隔的整数)转换为 []int

func AizuArray(A string, N string) []int {
 a := strings.Split(A, " ")
 n, _ := strconv.Atoi(N) // int 32bit
 b := make([]int, n)
 for i, v := range a {
     b[i], err = strconv.Atoi(v)
     if err != nil {
        //proper err handling
        //either b[i] = -1 (in case positive integers)
     }
 }
 return b
}
Run Code Online (Sandbox Code Playgroud)

那么你的做法是正确的。

我来解答这个问题。

在这个问题的上下文中,您想从 STDIN 获取输入,所以应该这样做,

package main

import (
    "fmt"
)

func insertionSort(arr []int) {
    //do further processing here.
   fmt.Println(arr)
}

func main() {
    var N int
    fmt.Scanf("%d", &N)
    b := make([]int, N)
    for iter:=0;iter<N;iter++ {
        fmt.Scanf("%d",&b[iter])
    }
    insertionSort(b)
}
Run Code Online (Sandbox Code Playgroud)