猿问

Golang:int 到切片转换

总 golang(和编程)菜鸟!

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

例如,包含所有这些字符的切片(我们称之为 s)将具有 s[0]=第一个数字、s[1]=第二个数字、s[2]=第三个数字等等。

任何帮助将不胜感激!


鸿蒙传说
浏览 754回答 3
3回答

慕妹3242003

func IntToSlice(n int64, sequence []int64) []int64 {    if n != 0 {        i := n % 10        // sequence = append(sequence, i) // reverse order output        sequence = append([]int64{i}, sequence...)        return IntToSlice(n/10, sequence)    }    return sequence}

慕村9548890

这是一个两步过程,首先将 int 转换为字符串,然后迭代字符串或转换为切片。因为内置的 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 }

慕姐8265434

以上答案都是正确的。这是MBB答案的另一个版本。避免递归和高效恢复可能会提高性能并减少 RAM 消耗。package mainimport (&nbsp; &nbsp; "fmt")func reverseInt(s []int) {&nbsp; &nbsp; for i, j := 0, len(s)-1; i < j; i, j = i+1, j-1 {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; s[i], s[j] = s[j], s[i]&nbsp; &nbsp; }}func splitToDigits(n int) []int{&nbsp; &nbsp; var ret []int&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; for n !=0 {&nbsp; &nbsp; &nbsp; &nbsp; ret = append(ret, n % 10)&nbsp; &nbsp; &nbsp; &nbsp; n /= 10&nbsp; &nbsp; }&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; reverseInt(ret)&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; return ret}func main() {&nbsp; &nbsp; for _, n := range splitToDigits(12345) {&nbsp; &nbsp; &nbsp; &nbsp; fmt.Println(n)&nbsp; &nbsp; }}https://play.golang.org/p/M3aOUnNIbdv
随时随地看视频慕课网APP

相关分类

Go
我要回答