今天在公司用 golang 寫了一個工具程序,用到了代碼倉庫中的一個讀取 k-v 數據庫的接口,運行,出現panic:
panic: runtime error: cgo argument has Go pointer to Go pointer
......
這個接口線上模塊也在用,應該是沒問題的;由於對golang還沒有掌握到爐火純青的地步,一直不明白問題原因,懷疑是環境問題。
詢問多人,終於大神回答說,需要添加如下環境變量來支持 cgo:
export GODEBUG=cgocheck=0
一試,果然行了!
記錄一下,點滴積累。
2020.11.25 Wed 21:27
2020.12.17 Thu 23:06
補充
《Go 語言高級編程》2.7 節 《CGO內存模型》 對此有解釋。
可以通過設置環境變量GODEBUG=cgocheck=0來關閉指針檢查行為。
cgocheck默認的值是1,對應一個簡化版本的檢測;
cgocheck=2:完整的檢測功能。
