脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|shell|

服务器之家 - 脚本之家 - Golang - Golang中struct{}和struct{}{}的区别解析

Golang中struct{}和struct{}{}的区别解析

2023-03-19 15:38路多辛 Golang

这篇文章主要介绍了Golang中struct{}和struct{}{}的区别,通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

首先说下Golang中的结构体,结构体是由一系列具有相同类型或不同类型的数据构成的数据集合,Golang中使用关键字struct来创建一个结构体,语法如下:

?
1
2
3
typeStudentstruct {
  Name string
}

下面定义一个Student结构体,例如:

?
1
2
3
typeStudentstruct {
        name  string
}

然后声明一个Student类型的变量并赋值

?
1
2
var stu Student
stu.name = "小明"

声明一个struct类型变量并赋值还有一种方式是使用匿名struct,代码非常简洁:

?
1
2
3
4
5
stu := struct {
    name string
}{
    "小明",
}

还可以使用匿名struct声明一个变量但不赋值,例如:

?
1
2
3
4
5
stu := struct {
 
}{
    
}

把空行和空格去掉后就是struct {} {},所以到此就可以看出struct {}和struct {} {}的区别了。

struct {}

struct {}和struct { name string }一样是结构体类型, 只是没有任何元素。struct {}的特点是大小为0,不占用任何内存。

struct {} {}

struct {} {}一个struct {}类型的值,该值也是空。

使用场景举例

比如使用map类型构造集合,可以使用这样一个类型的map:map[string]struct{},使用struct{}类型的值来节省空间。

?
1
2
3
4
5
6
7
8
9
10
11
package main
 
import"fmt"funcmain() {
    zoo := make(map[string]struct{})
    zoo["monkey"] = struct{}{}
    zoo["tiger"] = struct{}{}
    _, ok := zoo["monkey"]
    fmt.Println("Is monkey in the zoo?", ok)
    _, ok = zoo["cat"]
    fmt.Println("Is cat in the zoo?", ok)
}

运行程序,输出如下内容:

Ismonkeyinthezoo?trueIscatinthezoo?false

到此这篇关于Golang中struct{}和struct{}{}的区别解析的文章就介绍到这了,更多相关go struct{}和struct{}{}的区别内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/luduoyuan/article/details/129095066

延伸 · 阅读

精彩推荐
  • GolangGo官方设计了一个信号量库

    Go官方设计了一个信号量库

    信号量(Semaphore),有时被称为信号灯,是[多线程环境下使用的一种设施,是可以用来保证两个或多个关键代码段不被并发调用。在进入一个关键代码段之前...

    Golang梦工厂11352021-08-31
  • Golang解决golang gin框架跨域及注解的问题

    解决golang gin框架跨域及注解的问题

    这篇文章主要介绍了解决golang gin框架跨域及注解的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    Chelydra7302021-04-18
  • GolangGoLang中Json Tag用法实例总结

    GoLang中Json Tag用法实例总结

    这篇文章主要给大家介绍了关于GoLang中Json Tag用法的相关资料,文中通过实例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋...

    小武12892022-09-02
  • GolangGo slice切片make生成append追加copy复制示例

    Go slice切片make生成append追加copy复制示例

    这篇文章主要为大家介绍了Go使用make生成切片、使用append追加切片元素、使用copy复制切片使用示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助...

    王中阳Go6982022-10-19
  • Golanggolang实现微信小程序商城后台系统(moshopserver)

    golang实现微信小程序商城后台系统(moshopserver)

    这篇文章主要介绍了golang实现微信小程序商城后台系统(moshopserver),本文通过截图实例代码的形式给大家介绍的非常详细,具有一定的参考借鉴价值,需要...

    HarlanC4392020-06-05
  • Golanggo语言使用jwt认证的实现

    go语言使用jwt认证的实现

    本文主要介绍了go语言使用jwt认证的实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    sywdebug5752022-09-26
  • Golangweb项目中golang性能监控解析

    web项目中golang性能监控解析

    这篇文章主要为大家介绍了web项目中golang性能监控详细的解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步早日升职加薪...

    Jeff的技术栈9032022-09-15
  • GolangGo 并发实现协程同步的多种解决方法

    Go 并发实现协程同步的多种解决方法

    这篇文章主要介绍了Go 并发——实现协程同步的多种解决方法,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下 ...

    mrr5762020-05-19