Golang空结构体struct{}用途,你知道吗

 更新时间:2021年01月15日 14:52:08   作者:罗奇正  
这篇文章主要介绍了Golang空结构体struct{}用途,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

golang 空结构体 struct{} 可以用来节省内存

a := struct{}{}
println(unsafe.Sizeof(a))
// Output: 0

理由如下:

  1. 如果使用的是map,而且map又很长,通常会节省不少资源
  2. 空struct{}也在向别人表明,这里并不需要一个值

本例说明在map里节省资源的用途:

set := make(map[string]struct{})
for _, value := range []string{"apple", "orange", "apple"} {
  set[value] = struct{}{}
}
fmt.Println(set)
// Output: map[orange:{} apple:{}]

下例,演示了struct{}可以向人展示对象中不需要任何数据,仅包含需要方法。在调用也并无任何区别

type Lamp struct{}

func (l Lamp) On() {
    println("On")

}
func (l Lamp) Off() {
    println("Off")
}

func main() {
    // Case #1.
    var lamp Lamp
    lamp.On()
    lamp.Off()
    // Output:
    // on
    // off
 
    // Case #2.
    Lamp{}.On()
    Lamp{}.Off()
    // Output: 
    // on
    // off
}

还有其他情况,比如有时候使用channel,但并不需要附带任何数据。

func worker(ch chan struct{}) {
 // Receive a message from the main program.
 <-ch
 println("roger")
 
 // Send a message to the main program.
 close(ch)
}

func main() {
 ch := make(chan struct{})
 go worker(ch)
 
 // Send a message to a worker.
 ch <- struct{}{}
 
 // Receive a message from the worker.
 <-ch
 println(“roger")
 // Output:
 // roger
 // roger
}

到此这篇关于Golang空结构体struct{}用途,你知道吗的文章就介绍到这了,更多相关Golang空结构体struct{}内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Golang+Vue轻松构建Web应用的方法步骤

    Golang+Vue轻松构建Web应用的方法步骤

    本文主要介绍了Golang+Vue轻松构建Web应用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-05-05
  • Go操作mongodb数据库方法示例

    Go操作mongodb数据库方法示例

    这篇文章主要为大家介绍了Go操作mongodb数据库方法示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-09-09
  • go语言对文件按照指定块大小进行分割的方法

    go语言对文件按照指定块大小进行分割的方法

    这篇文章主要介绍了go语言对文件按照指定块大小进行分割的方法,实例分析了Go语言文件操作的技巧,需要的朋友可以参考下
    2015-03-03
  • 浅谈goland导入自定义包时出错(一招解决问题)

    浅谈goland导入自定义包时出错(一招解决问题)

    这篇文章主要介绍了浅谈goland导入自定义包时出错(一招解决问题),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • Golang实现EasyCache缓存库实例探究

    Golang实现EasyCache缓存库实例探究

    这篇文章主要为大家介绍了Golang实现EasyCache缓存库实例探究,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2024-01-01
  • Go语言使用defer+recover解决panic导致程序崩溃的问题

    Go语言使用defer+recover解决panic导致程序崩溃的问题

    如果协程出现了panic,就会造成程序的崩溃,这时可以在goroutine中使用recover来捕获panic,进行处理,本文就详细的介绍一下,感兴趣的可以了解一下
    2021-09-09
  • Golang中的占位符详解

    Golang中的占位符详解

    这篇文章主要给大家详细总结了Golang中的占位符用法,文章通过代码示例介绍的非常详细,对我们学习Golang占位符有一定的帮助,需要的朋友可以参考下
    2023-07-07
  • Golang实现单链表的示例代码

    Golang实现单链表的示例代码

    本文主要介绍了Golang实现单链表的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • go单例实现双重检测是否安全的示例代码

    go单例实现双重检测是否安全的示例代码

    这篇文章主要介绍了go单例实现双重检测是否安全,本文给大家分享双重检验示例代码,代码简单易懂,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-03-03
  • 一文带你探索Golang计时器的奥秘

    一文带你探索Golang计时器的奥秘

    在 Golang 中,计时器(timer)是一种常见的工具,用于定期执行某个任务或者在指定时间后触发某个事件。本文将深入探讨 Golang 计时器的实现原理和使用方法,帮助大家更好地理解和应用计时器
    2023-05-05

最新评论