为了账号安全,请及时绑定邮箱和手机立即绑定

Golang:int 到切片转换

Golang:int 到切片转换

Go
鸿蒙传说 2021-11-08 18:31:11
总 golang(和编程)菜鸟!给定任何六位数字,如何输出一个切片,其中该数字的每个字符都被分配到切片内的一个单独位置?例如,包含所有这些字符的切片(我们称之为 s)将具有 s[0]=第一个数字、s[1]=第二个数字、s[2]=第三个数字等等。任何帮助将不胜感激!
查看完整描述

3 回答

?
慕妹3242003

TA贡献1824条经验 获得超6个赞

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

}


查看完整回答
反对 回复 2021-11-08
?
慕村9548890

TA贡献1884条经验 获得超4个赞

这是一个两步过程,首先将 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

 }


查看完整回答
反对 回复 2021-11-08
?
慕姐8265434

TA贡献1813条经验 获得超2个赞

以上答案都是正确的。这是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)

    }

}

https://play.golang.org/p/M3aOUnNIbdv


查看完整回答
反对 回复 2021-11-08
  • 3 回答
  • 0 关注
  • 753 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信