网络异常
请检查网络设置后重试
重新加载
golang入门知识
2
成员
登录后加入频道即可发帖
0/1000
不选择版块
发表
全部
冰柠檬
频道主
2024-10-31
#golang
空 struct{} 占用空间么?用途是什么?
空结构体 struct{} 实例不占据任何的内存空间。
用途:
1.将 map 作为集合(Set)使用时,可以将值类型定义为空结构体,仅作为占位符使用即可。
2.不发送数据的信道(channel)
使用 channel 不需要发送任何的数据,只用来通知子协程(goroutine)执行任务,或只用来控制协程并发度。
3.结构体只包含方法,不包含任何的字段
点赞
评论
分享
冰柠檬
频道主
2024-10-31
#golang
什么是 rune 类型?
Go语言的字符有以下两种:
1.uint8 类型,或者叫 byte 型,代表了 ASCII 码的一个字符。
2.rune
类型,代表一个 UTF-8 字符,当需要处理中文、日文或者其他复合字符时,则需要用到 rune 类型。rune 类型等价于 int32 类型。
点赞
评论
分享
冰柠檬
频道主
2024-10-31
#golang
两个 interface 可以比较吗?
1.判断类型是否一样
reflect.TypeOf(a).Kind() == reflect.TypeOf(b).Kind()
2.判断两个interface{}是否相等
reflect.DeepEqual(a, b)
3.将一个interface{}赋值给另一个interface{}
reflect.ValueOf(&a).Elem().Set(reflect.ValueOf(b))
点赞
评论
分享
冰柠檬
频道主
2024-10-31
#golang
Go语言中的内存对齐
CPU 并不会以一个一个字节去读取和写入内存。相反 CPU 读取内存是一块一块读取的,块的大小可以为 2、4、6、8、16 字节等大小。块大小我们称其为内存访问粒度,内存访问粒度跟机器字长有关。
对齐规则:
1.结构体的成员变量,第一个成员变量的偏移量为 0。往后的每个成员变量的对齐值必须为编译器默认对齐长度或当前成员变量类型的长度,取最小值作为当前类型的对齐值。其偏移量必须为对齐值的整数倍
点赞
评论
分享
冰柠檬
频道主
2024-10-31
#golang
Goroutine和线程的区别?
1.一个线程可以有多个协程
2.线程、进程都是同步机制,而协程是异步
3.协程可以保留上一次调用时的状态,当过程重入时,相当于进入了上一次的调用状态
4.协程是需要线程来承载运行的,所以协程并不能取代线程,「线程是被分割的CPU资源,协程是组织好的代码流程」
点赞
评论
分享
公告
暂无公告
直播
暂无直播