golang
已收录文章:12162篇
-
sync.Once是Go中实现单例最推荐的方式,它通过Do方法确保初始化函数仅执行一次。使用时定义一个Once实例和单例变量,在GetInstance函数中调用once.Do来初始化对象,保证并发安全、代码简洁且性能良好。常见误区包括传参错误和复用Once对象,此外还有全局变量、init函数和加锁等其他单例实现方式,但均不如sync.Once安全高效。116 收藏
-
在Go语言中,结构体嵌套指针的核心在于区分值嵌套与指针嵌套的内存布局:值嵌套使子结构体内联于父结构体,形成连续内存,访问高效但复制开销大;指针嵌套则通过指针引用堆上独立的子结构体,实现内存共享和可选字段,但需间接访问且可能nil。1.使用指针可避免大结构体拷贝、实现数据共享与可变性;2.内存布局上,值嵌套为连续存储,指针嵌套为分离存储加间接寻址;3.典型场景包括共享子结构体、可选字段表示(nil)和递归结构(如树、链表);4.指针字段参与内存对齐,合理排列字段可减少填充浪费;5.选择策略:小结构体用值嵌套116 收藏
-
Golang处理时间的关键在于掌握time.Now()获取当前时间、格式化与解析的方法以及时间计算和比较。1.使用time.Now()获取当前时间对象或时间戳;2.格式化时间需基于参考时间“2006-01-0215:04”进行定义;3.解析字符串为时间需严格匹配格式并注意时区;4.时间加减通过Add方法结合time.Duration实现;5.比较时间使用After、Before或Equal方法,计算间隔可用Sub方法获取时间差。116 收藏
-
1.需求说明 记录一下项目对用户 UGC 文本进行字数限制的具体实现。 不同的产品,出于种种原因,一般都会对用户输入的文本内容做字数限制。 出于产品定位,比如 140 字符限制的 Twitter,让内115 收藏
-
背景 需要遍历结构体的所有field 对于exported的field, 动态set这个field的value 对于unexported的field, 通过强行取址的方法来获取该值(tricky?) 思路 下面的代码实现了从一个strct ptr对一个包外结构体115 收藏
-
我就废话不多说了,大家还是直接看代码吧~ 方法一: //这种发放适用于string,int,float等切片,会对切片中的元素进行排序 func SliceRemoveDuplicates(slice []string) []string { sort.Strings(slice) i:= 0 var j i115 收藏