doucan4815 2019-08-05 12:45

# 如何将整数和nill数组转换为字符串？ [关闭]

Let's say I have array with `integer` and `nil` elements:

``````[15698, nil, 13000, 560365, nil]
``````

I want to convert this array to string where each element separated by `,`.

``````[15698, null, 13000, 560365, null]
``````

I tried next code but it return 0 instead of null. How to fix it?

``````func ConvertIntArrayToString(input []int) string {
if len(input) == 0 {
return ""
}
estimate := len(input) * 4
b := make([]byte, 0, estimate)
for _, n := range input {
b = strconv.AppendInt(b, int64(n), 10)
b = append(b, ',')
}
b = b[:len(b)-1]
return string(b)
}
``````

Here is how I created array:

``````type NilInt struct {
value int
null  bool
}

func (n *NilInt) Value() interface{} {
if n.null {
return nil
}
return n.value
}

func NewInt(x int) NilInt {
return NilInt{x, false}
}

func NewNil() NilInt {
return NilInt{0, true}
}

var x = []utils.NilInt{utils.NewNil(), utils.NewInt(10), utils.NewNil(), utils.NewInt(5)}]

var result strings.Builder

for _, n := range x {
if n.Value() == nil {
result.WriteString("null,")
} else {
result.WriteString(??? + ",")
}
}

fmt.Println(result)
``````
• 写回答

#### 1条回答默认 最新

• douken0530 2019-08-05 13:50
关注

As pointed out in the comments by others, an int slice (`[]int`) cannot contain `nil` values because it is illegal to assign `nil` to a variable of a type whose specified zero value is not `nil`.

If you need a slice that can hold `int` values and `nil`s you can use `[]interface{}`. Then, to construct the desired string you can simply marshal such a slice with the `encoding/json` package.

``````var a = []interface{}{15698, nil, 13000, 560365, nil}
b, err := json.Marshal(a)
if err != nil {
panic(err)
}
fmt.Println(string(b))
``````

https://play.golang.com/p/hEjTFIoJlXj

本回答被题主选为最佳回答 , 对您是否有帮助呢?
评论

#### 悬赏问题

• ¥50 swiftui @query 报错
• ¥50 怎么解决刷卡或扫码后，点击软件输入框，win10屏幕键盘不会自动弹出的问题
• ¥15 如何使用arcgispro的训练深度模型，发现water和nowater精度为0？（相关搜索：深度学习）
• ¥20 matlab作业不太懂呀有问题能给个代码吗
• ¥15 自制电路图为何无法驱动ESP01S？
• ¥15 前端加access数据库
• ¥15 ARCGIS 多值提取到点 ERROR 999999
• ¥15 mysql异常断电， [MY-011971] [InnoDB]
• ¥15 uni.onBluetoothDeviceFound熄屏不运行
• ¥15 求PHDA糖尿病并发症数据集，有偿