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

作者:罗奇正 时间:2024-04-26 17:36:56 

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
}

来源:https://blog.csdn.net/weixin_44328662/article/details/86501900

标签:Golang,空结构体,struct{}
0
投稿

猜你喜欢

  • 详解TensorFlow在windows上安装与简单示例

    2021-06-01 23:54:31
  • MySQL5.7 windows二进制安装教程

    2024-01-24 04:10:01
  • python PyAUtoGUI库实现自动化控制鼠标键盘

    2022-07-07 16:47:41
  • 详解Python的基础语法和变量操作

    2021-10-13 17:07:54
  • 原生Javascript插件开发实践

    2024-04-17 09:43:45
  • Python二叉树的遍历操作示例【前序遍历,中序遍历,后序遍历,层序遍历】

    2022-07-06 16:40:59
  • AJAX概述

    2007-11-03 13:41:00
  • Python实现完整的事务操作示例

    2023-11-15 21:02:02
  • python实现简单登陆流程的方法

    2021-01-30 00:48:24
  • Python hashlib模块加密过程解析

    2021-09-08 13:29:25
  • 一文详解websocket在vue2中的封装使用

    2024-05-02 17:08:54
  • Win10下安装CUDA11.0+CUDNN8.0+tensorflow-gpu2.4.1+pytorch1.7.0+paddlepaddle-gpu2.0.0

    2022-05-08 19:29:32
  • Python之lambda匿名函数及map和filter的用法

    2021-01-14 02:11:18
  • pycharm不以pytest方式运行,想要切换回普通模式运行的操作

    2022-02-05 15:27:10
  • js中json处理总结之JSON.parse

    2024-03-28 22:06:31
  • 用Python编写生成树状结构的文件目录的脚本的教程

    2022-12-26 09:54:52
  • Python实现的弹球小游戏示例

    2022-06-04 01:15:35
  • JavaScript编写点击查看大图的页面半透明遮罩层效果实例

    2024-02-24 03:33:08
  • 基于Python实现签到脚本过程解析

    2023-01-13 03:14:56
  • AI经典书单 人工智能入门该读哪些书?

    2023-06-24 07:11:00
  • asp之家 网络编程 m.aspxhome.com