在 Go 语言中,虽然没有传统意义上的类和继承,但依然可以实现面向对象的设计思想。依赖倒置(Dependency Inversion Principle,简称 DIP)是面向对象设计中的一个重要原则,它要求
golangpackage main
import "fmt"
func main() {
defer func() {
if err := recover(); err != nil {
fmt.Println(1)
}
}()
go func() {
panic("123")
}()
defer func() {
if err := recover(); err != nil {
fmt.Println("recover")
}
}()
}
问题原因:
pylance版本问题,经常会自动升级为新的版本
解决方案:
降低pylance版本到2023.5月(包括)之前
相关信息
icoding(vscode)无法跳转方法排查
sync
通过sync使程序只执行一次
golang
package main
import (
"fmt"
"sync"
)
func main() {
var once sync.Once
onceBody := func() {
fmt.Println("Only once")
}
done := make(chan bool)
// 创建 10 个 goroutine,但是 onceBody 只会执行 1 次
for i := 0; i < 10; i++ {
go func() {
once.Do(onceBody)
done <- true
}()
}
// 等待 10 个 goroutine 结束
for i := 0; i < 10; i++ {
<-done
}
}