当前位置: 首页 > 面试题库 >

前往:如果唯一则追加

都博裕
2023-03-14
问题内容

有没有一种方法可以检查切片/映射中是否存在值?

只想 在切片中 存在值 时才 向切片添加值。

这可行,但似乎很冗长。有更好的方法吗?

orgSlice := []int{1, 2, 3}
newSlice := []int{}
newInt := 2

newSlice = append(newSlice, newInt)
for _, v := range orgSlice {
    if v != newInt {
        newSlice = append(newSlice, v)
    }
}

newSlice == [2 1 3]

问题答案:

您的方法将为每次插入花费线性时间。更好的方法是使用map[int]struct{}。另外,您也可以使用a
map[int]bool或类似名称,但是empty
struct{}的优点是它不占用任何额外空间。因此,map[int]struct{}是一组整数的普遍选择。

例:

set := make(map[int]struct{})
set[1] = struct{}{}
set[2] = struct{}{}
set[1] = struct{}{}
// ...

for key := range(set) {
  fmt.Println(key)
}
// each value will be printed only once, in no particular order


// you can use the ,ok idiom to check for existing keys
if _, ok := set[1]; ok {
  fmt.Println("element found")
} else {
  fmt.Println("element not found")
}


 类似资料:
  • 本文向大家介绍Rowkey唯一原则相关面试题,主要包含被问及Rowkey唯一原则时的应答技巧和注意事项,需要的朋友参考一下 必须在设计上保证其唯一性。

  • 所以我有了这个数据表 正如您所看到的,如果值为null,则获取前一个值,但是如果您查看第三行,我将获得一个null,我假设是因为它获取了第二行的值,但是当它仍然没有更新时(因此仍然是来自原始dataframe的null)。 我有点不知道该怎么做。有人帮忙吗?

  • 问题内容: 我想知道是否有办法强制唯一的收集条目, 但前提是条目不为null 。e示例架构: 在这种情况下,不需要’email’,但是如果保存了’email’,我想确保该条目是唯一的(在数据库级别)。 空条目的值似乎为’null’,因此每个条目都不会通过’unique’选项使电子邮件崩溃(如果有其他用户没有电子邮件)。 现在,我正在应用程序级别解决它,但希望保存该数据库查询。 谢谢 问题答案: 从

  • 问题内容: 所以我有这个代码,我想当用户键入A来激活在此代码下面的while(attack)时,它就不能继续攻击;我在while(attack)上方放置了一个名为Attack:的标签,但它无法识别,因为稍后会对其进行声明。 这是播放器键入A时必须开始的代码。谢谢您的时间.. :) 问题答案: 标签不能像这样工作。在Java中,没有任何功能。当您有内部循环且需要或有外部循环时,将使用标签,如以下示例

  • 问题内容: 我正在运行以下MySQL查询,以查找没有手册(且车轮有黑轮等)的汽车 查询的结果看起来正确,但是它两次返回ID为27的汽车。如何更改查询,以使所有结果都是唯一的(没有重复项)? 问题答案: 假定这是唯一的主键,那么其中的一种联接将导致笛卡尔乘积。也就是说:或包含多个匹配项。 子查询通常是消除笛卡尔积的好工具。下面的示例查询显示了两种使用子查询的方法。 第一个子查询可确保我们只查看在20

  • 问题内容: 我正在Go中构建一个JSON API,我想将错误响应作为json返回。 响应示例: 我以为我可以创建一个实现错误接口的包装器结构,然后使用Go的json封送处理程序作为获取错误的json表示形式的一种干净方法: 这只会将JsonErr 封送为,是否可以使用默认的Go json封送处理程序对该结构进行编码,还是需要为JsonErr结构编写快速的自定义MarshalJson? 问题答案: