LoginSignup
1
0

More than 5 years have passed since last update.

Go で複数桁の数字を slice に入れたい時、そして reverse させたい時

Last updated at Posted at 2019-03-30

Go で int と slice をいい感じに扱いたい

こんなん考えたらわかるやろって感じの内容なのかもしれませんが、ググってもいい感じのが出なかったのでメモとして残しておきます。

競技プログラミングとかで使えるかも!

Go で int を1桁ずつ slice に入れる

見てみればなんだこんなもんかって感じです。除算と余りをいい感じに使う再帰関数になってます。

func digit(i int, list []int) []int {
    if i > 0 {
        return digit(i/10, append(list, i%10))
    }
    return list
}

Go で int の slice を逆転したい

作った int の slice を reverse したいときもありますよね?
そういうときはこれです。ループで頑張って入れ替えます。

func reverse(numbers []int) []int {
    for i := 0; i < len(numbers)/2; i++ {
        j := len(numbers) - i - 1
        numbers[i], numbers[j] = numbers[j], numbers[i]
    }
    return numbers
}

int を 1 桁ずつ slice にして逆転する

上記の2つの関数を合わせてこんな感じで使います。
地道にやればなんでもいけますね!

package main

import (
    "fmt"
)

func main() {
    result := 708
    var list []int
    fmt.Println(digit(result, list))
}

func digit(i int, list []int) []int {
    if i > 0 {
        return digit(i/10, append(list, i%10))
    }
    return reverse(list)
}

func reverse(numbers []int) []int {
    for i := 0; i < len(numbers)/2; i++ {
        j := len(numbers) - i - 1
        numbers[i], numbers[j] = numbers[j], numbers[i]
    }
    return numbers
}
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0