目次
説明
10進整数から文字列への変換を実装します(strconvパッケージは使用しないでください)。
解決
10進整数を1桁から最上位桁に分割し、各桁の桁を文字列に変換してから接続します。整数の符号に注意してください。
コード
package main
func Itoa(number int) string {
result := ""
positive := true
if number < 0 {
positive = false
number = -number
}
for {
if number < 10 {
result = itoa(number) + result
break
}
temp := number % 10
result = itoa(temp) + result
number /= 10
}
if !positive {
result = "-" + result
}
return result
}
func itoa(number int) string {
switch number {
case 0:
return "0"
case 1:
return "1"
case 2:
return "2"
case 3:
return "3"
case 4:
return "4"
case 5:
return "5"
case 6:
return "6"
case 7:
return "7"
case 8:
return "8"
default:
return "9"
}
}
コードウォークスルー
package main
import "fmt"
func Itoa(number int) string {
result := ""
// positive用来记录整数的正负性。为了计算方便在记录正负性后统一将整数转换为非负数。
positive := true
if number < 0 {
positive = false
number = -number
}
for {
if number < 10 {
result = itoa(number) + result
break
}
// 不断取整数的末位转换
temp := number % 10
result = itoa(temp) + result
number /= 10
}
// 最后对整数的正负性做判断
if !positive {
result = "-" + result
}
return result
}
// 将个位数转换为字符串
func itoa(number int) string {
switch number {
case 0:
return "0"
case 1:
return "1"
case 2:
return "2"
case 3:
return "3"
case 4:
return "4"
case 5:
return "5"
case 6:
return "6"
case 7:
return "7"
case 8:
return "8"
default:
return "9"
}
}
// 自测用例
func main() {
number := 0
result := Itoa(number)
fmt.Println(result)
}