gpt4 book ai didi

java - Java 中的消息格式以及如何在 Golang 中复制相同的格式

转载 作者:IT王子 更新时间:2023-10-29 01:56:45 26 4
gpt4 key购买 nike

Java 代码如下:

AtomicInteger obIndex = new AtomicInteger(0);
MessageFormat.format("{0,number,#},{1},{2},{3},\"{4}\"",
obIndex.getAndIncrement(),
"5bb2b35c67525f9e845648df370652b8",
"Vm:vm-289",
"1.1.1.1:113",
"ABC-Testvm-1");

输出:

0,5bb2b35c67525f9e845648df370652b8,Vm:vm-289,1.1.1.1:113,"ABC-Testvm-1"

我在 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)

哪些输出:

0,5bb2b35c67525f9e845648df370652b8,Vm:vm-289,1.1.1.1:113,ABC-Testvm-1

{0,number,#} 的意义是什么?我如何在 Go 中获得相同的值?

最佳答案

这在 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模式)。

在 Go 中格式化一个整数,你可以简单地使用 %d 动词,这将产生相同的整数输出格式。如果数字是 float ,这将不起作用(%d 只能用于整数)。如果数字是 float ,使用 %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"

关于java - Java 中的消息格式以及如何在 Golang 中复制相同的格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52704113/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com