Convert a decimal integer to a string (Go)

table of Contents

description

solution

Code

Code walkthrough


 

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)
}

Guess you like

Origin blog.csdn.net/TCatTime/article/details/107132659