Tabla de contenido
descripción
Implemente la conversión de un entero decimal a una cadena (no use el paquete strconv).
solución
Divida el entero decimal del dígito de las unidades al dígito más alto y convierta los dígitos de cada dígito en una cadena antes de empalmar. Presta atención al signo del número entero.
Código
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"
}
}
Tutorial de código
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)
}