Golang中Lorca出现无效内存地址或空指针解引用问题
Golang中Lorca出现无效内存地址或空指针解引用问题 你好 我需要帮助,拜托了 我只是复制粘贴了一个使用 Golang 与 Chrome GUI 交互的方法,并使用了 Lorca 库。
那么为什么
func getUserName() string {
var envKey string
if runtime.GOOS == "windows" {
envKey = "USERNAME"
} else {
envKey = "USER"
}
return os.Getenv(envKey)
}
func main() {
ui, err := lorca.New("", "", 600, 400)
ui.Bind("getUserName", getUserName) <------------------------
...,
}
会抛出这个错误? panic: runtime error: invalid memory address or nil pointer dereference [signal 0xc0000005 code=0x0 addr=0x18 pc=0xcddbeb]
goroutine 1 [running]: main.main() C:/uga/golang-repo/main.go:27 +0x6b
我该如何传递这个函数才能让它正常工作?
提前感谢 此致
更多关于Golang中Lorca出现无效内存地址或空指针解引用问题的实战教程也可以访问 https://www.itying.com/category-94-b0.html
听起来你的UI对象是nil,请检查为什么lorca无法正确初始化。
更多关于Golang中Lorca出现无效内存地址或空指针解引用问题的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
这个错误是因为在调用 ui.Bind() 时,ui 变量为 nil。lorca.New() 返回错误时,ui 会是 nil,但你没有检查错误。
以下是修复后的代码:
func main() {
ui, err := lorca.New("", "", 600, 400)
if err != nil {
log.Fatal(err)
}
defer ui.Close()
// 现在 ui 不会是 nil,可以安全地调用 Bind
ui.Bind("getUserName", getUserName)
// ... 其他代码
}
错误处理是关键。当 lorca.New() 失败时(例如 Chrome 未安装或路径问题),它会返回非 nil 的错误,而 ui 会是 nil。尝试在 nil 指针上调用 Bind() 方法导致了空指针解引用错误。
另外,确保你的 getUserName 函数在 main 包中是可访问的,并且函数签名正确。你提供的函数应该可以正常工作。
完整示例:
package main
import (
"log"
"os"
"runtime"
"github.com/zserge/lorca"
)
func getUserName() string {
var envKey string
if runtime.GOOS == "windows" {
envKey = "USERNAME"
} else {
envKey = "USER"
}
return os.Getenv(envKey)
}
func main() {
ui, err := lorca.New("", "", 600, 400)
if err != nil {
log.Fatal(err)
}
defer ui.Close()
ui.Bind("getUserName", getUserName)
// 加载你的 HTML 或执行其他操作
ui.Load("data:text/html," + `<html><body>
<button onclick="alert(getUserName())">Get User</button>
</body></html>`)
<-ui.Done()
}
这样修改后,如果 lorca.New() 失败,程序会先打印错误信息并退出,而不是在 nil 指针上调用方法。

