Подробно в java.text.MessageFormat
.Строка, которую вы передаете MessageFormat.format()
, представляет собой шаблон .Шаблон состоит из элементов формата .Форма элемента формата:
FormatElement:
{ ArgumentIndex }
{ ArgumentIndex , FormatType }
{ ArgumentIndex , FormatType , FormatStyle }
Итак, в первом элементе формата:
{0,number,#}
0
- это индекс аргумента, значение которого нужно отформатировать.
number
- это тип формата, а #
- это стиль формата, более конкретно, шаблон подформат .Это означает, что аргумент будет отформатирован с использованием подформата:
new DecimalFormat(subformatPattern, DecimalFormatSymbols.getInstance(getLocale()))
Подформат формата #
описан в java.text.DecimalFormat
.Это просто означает не использовать дробные цифры, только отображать его как целое число, и если оно не является целым числом, оно будет округлено (в режиме RoundingMode.HALF_EVEN
).
InПерейдите к форматированию целого числа, вы можете просто использовать глагол %d
, как вы это сделали, что даст тот же формат вывода для целых чисел.Если число является числом с плавающей запятой, это не сработает (%d
может использоваться только для целых чисел).Если число является числом с плавающей запятой, используйте глагол %f
, точнее %.0f
, чтобы сообщить ему округление до целого числа, или самую короткую форму %.f
.
Также ваша версия Java ставитпоследний аргумент в двойных кавычках, поэтому вы должны сделать то же самое в Go.
value := fmt.Sprintf("%d,%s,%s,%s,\"%s\"",
0,
"5bb2b35c67525f9e845648df370652b8",
"Vm:vm-289",
"1.1.1.1:113", "ABC-Testvm-1")
fmt.Println(value)
Это выведет (попробуйте на Go Playground ):
0,5bb2b35c67525f9e845648df370652b8,Vm:vm-289,1.1.1.1:113,"ABC-Testvm-1"