Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Indexing Golang:int-to-slice转换_Indexing_Go_Slice - Fatal编程技术网

Indexing Golang:int-to-slice转换

Indexing Golang:int-to-slice转换,indexing,go,slice,Indexing,Go,Slice,总戈朗(和编程)noob 给定任何六位数字,如果该数字的每个字符都被分配到片中的一个单独位置,如何输出片 例如,一个包含所有这些字符的片(我们称之为s)将有s[0]=第一位,s[1]=第二位,s[2]=第三位,依此类推 任何帮助都将不胜感激 这是一个两步过程,首先将int转换为string,然后迭代字符串或转换为slice。因为内置的range函数允许您迭代字符串中的每个字符,所以我建议将其保留为字符串。像这样的东西 import "strconv" str := strconv.Itoa(

总戈朗(和编程)noob

给定任何六位数字,如果该数字的每个字符都被分配到片中的一个单独位置,如何输出片

例如,一个包含所有这些字符的片(我们称之为s)将有s[0]=第一位,s[1]=第二位,s[2]=第三位,依此类推


任何帮助都将不胜感激

这是一个两步过程,首先将int转换为string,然后迭代字符串或转换为slice。因为内置的range函数允许您迭代字符串中的每个字符,所以我建议将其保留为字符串。像这样的东西

 import "strconv"
 str := strconv.Itoa(123456)
 for i, v := range str {
      fmt.Println(v) //prints each char's ASCII value on a newline
      fmt.Printf("%c\n", v) // prints the character value
 }
func IntToSlice(n int64,序列[]int64)[]int64{
如果n!=0{
i:=n%10
//sequence=append(sequence,i)//逆序输出
sequence=append([]int64{i},sequence…)
返回IntToSlice(n/10,顺序)
}
返回序列
}

以上答案是正确的。下面是MBB答案的另一个版本。 避免递归和高效恢复可以提高性能并减少RAM消耗

package main

import (
    "fmt"
)

func reverseInt(s []int) {
    for i, j := 0, len(s)-1; i < j; i, j = i+1, j-1 {
            s[i], s[j] = s[j], s[i]
    }
}

func splitToDigits(n int) []int{
    var ret []int
    
    for n !=0 {
        ret = append(ret, n % 10)
        n /= 10
    }
    
    reverseInt(ret)
    
    return ret
}

func main() {
    for _, n := range splitToDigits(12345) {
        fmt.Println(n)
    }
}
主程序包
进口(
“fmt”
)
函数反转(s[]int){
对于i,j:=0,len(s)-1;i

为什么不使用字符串@MDrollette:在字符串上搜索返回符文@JimB如果您想直接而不是通过
范围
索引到字符串中,我假设您需要转换为
[]符文
@MDrollette通常是(如果您希望按符文/字符而不是字节进行索引)。但是,从
strconv.Itoa
中,您知道每个符文都是一个字节,因此直接索引字符串将给出完全相同的值(即在本例中
rune(str[3])=[]符文(str)[3]
)请至少添加一些解释,说明为什么回答这个问题如果我理解正确,您希望将
12345
转换为
[1,2,3,4,5]
。我说的不对吗?这是一个很好的答案——但它颠倒了顺序。要保留初始顺序,请改用
sequence=append([]int{i},s..)