将Python中的字符串作为参数传递给共享obj中的Go函数

2024-04-25 18:07:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图通过使用ctypes模块从Python传递字符串来调用下面的MakeQuery(query string)函数。你知道吗

当我从Python调用它作为一个函数共享对象,并使用Go中的Works()的硬编码参数时,它就可以工作了:

//export Works
func Works() {
    newMod := MakeQuery(`SELECT TOP 3 NodeID FROM NCM.ConfigArchive`)
    fmt.Println(newMod)
}

// Query db connection and return results as map
//export MakeQuery
func MakeQuery(query string) []map[string]interface {} {...}

根据一些web教程,我需要将其转换为:

from ctypes import *

lib = cdll.LoadLibrary("./test.so")
query = "SELECT TOP 3 NodeID FROM NCM.ConfigArchive"
b_query = query.encode('utf-8')
lib.MakeQuery.argtypes = [c_char_p]
print lib.MakeQuery(b_query)

但由于某些字符串类型转换错误,它无法工作:

&{400 Bad Request 400 HTTP/1.1 1 1 map[Content-Length:[1602] Content-Type:
[application/json] Date:[Sat, 18 May 2019 12:48:54 GMT] Server:[Microsoft-
HTTPAPI/2.0]] 0xc00009a1c0 1602 [] false false map[] 0xc000104000 0xc0001a8000}

如果有人能告诉我如何以某种方式将Python的字符串类型转换为Go,那将是一个很大的帮助。你知道吗


Tags: 函数字符串gomapstringlibtopexport

热门问题