-
Go中实现阻塞的方式
我们知道Go的一大优势就是天然支持并发,但是在使用并发时,如果一旦主协程退出,那么所有的子协程也会强制退出,这显然不是我们想要的结果所以阻塞主协程直到等待所有子协程运行完毕后再结束主协程是编写并发程序必须要做的死锁:在所有子协程运行完毕后如果主协程没有解除阻塞的操作逻辑,称之为死锁,此时会panic,所以在阻塞主协程时一定要注意死锁有条件的解除阻塞time.Sleep这也是在学习Go的时候最早接触的用于阻塞协程的方式,简单粗暴func main(){ go func(){ // ... }() time.Sleep(time.Second) }这...
2025-06-30 -
Go的Playwright库的Page
Page相当于一个浏览器窗口中的标签页,一个浏览器进程(BrowserContext)可以包含若干个PagePage创建有两种方式BrowserContext.NewPage()Browser.NewPage(options ...BrowserNewPageOptions) (Page, error)由于该方式跳过了BrowserContext,所以配置项与Browser.NewContext中的选项相同Page常用方法Page是一个接口,该接口中定义了Page的方法整体操作、设置或信息获取 Goto(url string, options ...PageGotoOptions) (R...
2025-05-21 -
Go的Playwright库的BrowserContext
BrowserContext(浏览器上下文)相当于一个独立的浏览器进程,不会与其他浏览器上下文共享cookie和缓存等信息BrowserContext实例创建有两种方式Browser.NewContextBrowser.NewContext(options ...BrowserNewContextOptions) (BrowserContext, error) type BrowserNewContextOptions struct { AcceptDownloads *bool // 是否同意并自动下载,默认true BaseURL *string ...
2025-05-16 -
Go的Playwright库
Playwright是一个微软开源的跨平台的浏览器自动化工具,通过单个API自动执行Chromium,Firefox和WebKit浏览器,支持无头浏览器(headless)目前官方仅支持python、node、java和.NET,暂时没有官方的Go支持,要想通过Go使用Playwright,需要使用第三方库playwright-go就是在github上的开源的用于使用Go来操作Playwright的库,开源网址是:playwright-go安装库go get -u github.com/playwright-community/playwright-go下载浏览器及驱动 方式一,通过命令...
2025-05-16 -
Go中的空结构体/数组
在 Go 语言中,空结构体(struct{}) 和 空数组([0]type) 是非常特殊的类型,不包含任何字段或元素并且不占用任何内存空间虽然听起来似乎没什么用,但在 Go 编程中有着广泛的应用不占用内存空间下面的代码片段用来验证是否占用内存空间 type EmptyS struct{} var s1 struct{} s2 := EmptyS{} s3 := struct{}{} type EmptyA [0]int var a1 [0]int a2 := EmptyA{} a3 := [0]int{} fmt.Printf("s1 addr: %p, size: %d\n",...
2025-04-21