gpt4 book ai didi

arrays - golang 中包含整数和 nil 值的数组?

转载 作者:数据小太阳 更新时间:2023-10-29 03:31:32 26 4
gpt4 key购买 nike

我是 golang 的新手。但我找不到这个问题的答案。

在 python 中我可以做到,

array = [1, 2, 3, None, 5]

但是当我写的时候就开始了

var array = [5]int {1, 2, 3, nil, 5}

编译器给我以下错误:

cannot convert nil to type int

我如何在 golang 中创建一个混合了整数和 nil 值的数组?

最佳答案

首先是一些理论。 Python 是一种动态类型语言。虽然每个单独的值都有一个类型,但您可以毫无问题地为变量分配任何类型的值。因此,python 集合可以包含多种类型的值并且不会提示。以下是有效的 Python 元组 (1, 'a', None, True)。 Go 是一种静态类型语言。如果您的变量定义为整数,则不能为其分配任何非整数值。因此,Go 中的集合有一个类型,并且只能包含一种类型的对象。

现在开始练习。有几种方法可以做你想做的事。经典的 C 方法是选择一个您永远不会遇到的整数值并将其用作空值。 0 或 -1 之类的。虽然这不是很稳健。

更惯用的方法是定义您自己的类型。

package main

import "fmt"

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

func main() {
var x = []NilInt{NewNil(), NewInt(10), NewNil(), NewInt(5)}
for _, i := range x {
fmt.Printf("%v ", i.Value())
}
}

关于arrays - golang 中包含整数和 nil 值的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52449646/

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