table of Contents
description
Implement the conversion of a decimal integer to a string (do not use the strconv package).
solution
Split the decimal integer from the ones digit to the highest digit, and convert the digits of each digit into a string before splicing. Pay attention to the sign of the integer.
Code
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"
}
}
Code walkthrough
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)
}