亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用 golang 庫中的回調函數?

如何使用 golang 庫中的回調函數?

Go
楊魅力 2023-06-12 15:03:33
我對 Go 還是比較陌生,我決定嘗試一些 OpenGL,因為存在一個為此提供綁定的 Go 庫。作為設置 OpenGL 的一部分,我需要使用 Go?glfw 庫。我需要使用 glfw 庫函數SetFramebufferSizeCallback ,它需要一個FrameBuffersizeCallback類型的參數;所以我基本上需要傳遞一個與我相信我已經完成的類型的簽名相匹配的函數。但是,我不斷收到以下錯誤:./main.go:43:35: 不能在 window.SetFramebufferSizeCallback 的參數中使用 fbCallback(類型 func(*glfw.Window,int32,int32))作為類型 glfw.FramebufferSizeCallback我真的不確定為什么會這樣。我檢查過我的 glfw 版本是否與文檔匹配;我已經檢查了 github 和我的機器上的實現代碼,它們都是一致的。所以我不知道我做錯了什么。這是我的代碼,如果構建它應該不會做任何有趣的事情,但會顯示錯誤:package mainimport (? ? "github.com/go-gl/gl/v3.3-core/gl"? ? "github.com/go-gl/glfw/v3.2/glfw"? ? "log"? ? "runtime")func fbCallback(window *glfw.Window, width int32, height int32) {? ? gl.Viewport(0, 0, width, height)}func init() {? ? runtime.LockOSThread()}func main() {? ? err := glfw.Init()? ? if err != nil {? ? ? ? panic(err)? ? }? ? defer glfw.Terminate()? ? glfw.WindowHint(glfw.ContextVersionMajor, 3)? ? glfw.WindowHint(glfw.ContextVersionMinor, 3)? ? glfw.WindowHint(glfw.OpenGLProfile, glfw.OpenGLCoreProfile)? ? window, err := glfw.CreateWindow(640, 480, "Testing", nil, nil)? ? if err != nil {? ? ? ? panic(err)? ? }? ? window.MakeContextCurrent()? ? if err := gl.Init(); err != nil {? ? ? ? log.Fatalln(err)? ? }? ? gl.Viewport(0, 0, 800, 600)? ? window.SetFramebufferSizeCallback(fbCallback) //Does not work}我對這應該如何真正工作的理解在以下有效的簡短程序中得到了證明。我很高興有人指出為什么這個簡短的示例有效而上面的示例無效。我的理解可能有一些漏洞。package mainimport (? ? "fmt")type callback func(int, int) intfunc sum(x int, y int) int {? ? return x + y}func useCallback(cb callback) {? ? result := cb(2, 3)? ? fmt.Println(result)}func main() {? ? useCallback(sum)}
查看完整描述

1 回答

?
慕俠2389804

TA貢獻1719條經驗 獲得超6個贊


type?FramebufferSizeCallback?func(w?*Window,?width?int,?height?int)

對比

func?fbCallback(window?*glfw.Window,?width?int32,?height?int32)

您的函數沒有相同的簽名,它使用的是 int32 而不是 int。


查看完整回答
反對 回復 2023-06-12
  • 1 回答
  • 0 關注
  • 131 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號