zoukankan      html  css  js  c++  java
  • (转)Golang struct{}的几种特殊用法

    1.声明为map[string]struct{}

    由于struct{}是空,不关心内容,这样map便改造为set

    map可以通过“comma ok”机制来获取该key是否存在,例如_, ok := map["key"],如果没有对应的值,ok为false

    可以通过定义成map[string]struct{}的形式,值不再占用内存。其值仅有两种状态,有或无

    如果定义的是map[string]bool,则结果有true、false或没有

    下面的例子用于查看数组中是否有重复的值,就使用了map[string]struct{}

    如果任何值在数组中出现至少两次,函数返回 true。如果数组中每个元素都不相同,则返回 false。

    func containsDuplicate(nums []int) bool {
        m := make(map[int]struct{})
        for _, v := range nums{
            _, ok := m[v]
            if ok {
                return true
            }
            m[v] = struct{}{}
        }
        return false
    }

    2.chan struct{}:可以用作通道的退出

    3.两个structt{}{}地址相等

    总结:

    struct {}

    struct {}是一个无元素的结构体类型,通常在没有信息存储时使用。优点是大小为0,不需要内存来存储struct {}类型的值。

    struct {} {}

    struct {} {}是一个复合字面量,它构造了一个struct {}类型的值,该值也是空。

    转自:https://www.cnblogs.com/wanghui-garcia/p/10581388.html

  • 相关阅读:
    luogu P1415 拆分数列 序列DP
    [HAOI2015]树上操作
    [SHOI2012]魔法树
    [SCOI2010]连续攻击游戏
    [NOI2016]区间
    简单数论(一)
    iermu爱耳目
    李宇春:会跳舞的文艺青年
    文峰塔很安祥
    技术宅之flappy bird 二逼鸟
  • 原文地址:https://www.cnblogs.com/zhangmingcheng/p/15206115.html
Copyright © 2011-2022 走看看