LINUX.ORG.RU

История изменений

Исправление LightDiver, (текущая версия) :

Я не пока этот язык не изучал, но скинул твой код СИИ, он мне подробно рассказал что это, какой язык. Какие косяки текущей реализации, посоветовал не страдать дурью и использовать уже готовый strconv.Itoa:

package main

import (
	"fmt"
	"strconv"
)

func main() {
	fmt.Println(strconv.Itoa(12345))   // "12345"
	fmt.Println(strconv.Itoa(-6789))  // "-6789"
	fmt.Println(strconv.Itoa(0))      // "0"
}

Они действительно классные, если уметь ими пользоваться.

Например, вот он улучшил твою реализацию ручную:

package main

import (
	"fmt"
	"strings"
)

func IntToString(i int) string {
	digits := "0123456789"
	if i == 0 {
		return "0"
	}

	var result strings.Builder
	negative := i < 0
	if negative {
		i = -i
	}

	for i > 0 {
		result.WriteByte(digits[i%10])
		i /= 10
	}

	if negative {
		result.WriteByte('-')
	}

	// Реверсируем строку, так как цифры добавлялись в обратном порядке
	runes := []rune(result.String())
	for i, j := 0, len(runes)-1; i < j; i, j = i+1, j-1 {
		runes[i], runes[j] = runes[j], runes[i]
	}

	return string(runes)
}

func main() {
	fmt.Println(IntToString(12345))   // "12345"
	fmt.Println(IntToString(-6789))  // "-6789"
	fmt.Println(IntToString(0))      // "0"
}

Исходная версия LightDiver, :

Я не пока этот язык не изучал, но скинул твой код СИИ, он мне подробно рассказал что это, какой язык. Какие косяки текущей реализации, посоветовал не страдать дурью и использовать уже готовый strconv.Itoa:

package main

import (
	"fmt"
	"strconv"
)

func main() {
	fmt.Println(strconv.Itoa(12345))   // "12345"
	fmt.Println(strconv.Itoa(-6789))  // "-6789"
	fmt.Println(strconv.Itoa(0))      // "0"
}

Они действительно классные, если уметь ими пользоваться.