Home avatar

<span style="font-weight: bold;">Hollis写字的地方...</span>

切片传参的问题

以下内容来自:毛毛鱼 - golang 切片传参


今天写题时遇到一个需要用到大顶堆的题,以往我是会手写一个堆的,但今天想熟悉一下 go 的标准包就用了标准库提供的 heap 包,实现接口后发现运行不对,排查后发现是实现函数传参时 Push 和 Pop 方法传了切片而不是切片的指针,因此要留个记录,防止再掉坑~

函数参数,带*和不带*的区别

1
2
3
func HandleFunc(pattern string, handler func(ResponseWriter, *Request)) {
	DefaultServeMux.HandleFunc(pattern, handler)
}

为什么 ResponseWriter 不带 * ,Request 带 *,什么时候带?什么时候不带呢?

在Go语言中,函数参数的语法规则是由类型名称和类型修饰符组成的。类型修饰符 “*” 表示指针类型,用于指向某个类型的指针。在函数签名中,类型修饰符的位置决定了传递参数的方式。

并发安全的map

介绍

在Go语言中,可以使用sync包提供的Map类型来实现并发安全的map。sync.Map类型是Go语言中用于并发安全地访问键值对的一种数据结构,它提供了一种无须加锁的方式来进行并发读写操作。

0%