gpt4 book ai didi

Golang SWIG 示例 2 : slice bounds out of range panic

转载 作者:行者123 更新时间:2023-12-01 22:22:32 26 4
gpt4 key购买 nike

我目前正在通过SWIG Go examples我在第二个示例“constants”上遇到问题

出于某种原因,我让 slice 边界超出范围 panic ,但前提是我指定 32作为 -intgosize 的参数swig 调用中的参数。

如果我用 swig -go -intgosize 64 example.i 痛饮一切正常
example.i swig 文件如下所示

/* File : example.i */
%module example

/* A few preprocessor macros */

#define ICONST 42
#define FCONST 2.1828
#define CCONST 'x'
#define CCONST2 '\n'
#define SCONST "Hello World"
#define SCONST2 "\"Hello World\""

/* This should work just fine */
#define EXPR ICONST + 3*(FCONST)

/* This shouldn't do anything */
#define EXTERN extern

/* Neither should this (BAR isn't defined) */
#define FOO (ICONST + BAR)

/* The following directives also produce constants */

%constant int iconst = 37;
%constant double fconst = 3.14;

从使用 32 参数运行 swig 时得到的输出来看,我认为 panic 是由 SCONST2 引起的。并在注释掉 #define SCONST2 之后行的 panic 消失了。
SCONST2 的输出看起来像这样:
panic: runtime error: slice bounds out of range [:824633720845] with length 2147483647

goroutine 1 [running]:
swigtest/02_constants.swigCopyString(0x1056760, 0xc00000000d, 0xc000107ef0, 0xc000107ef8)
C:/Users/visfgp/go/personal_code/src/swigtest/02_constants/example.go:64 +0xb0
swigtest/02_constants._swig_getSCONST2(0x50230a, 0xc00003e1e0)
C:/Users/visfgp/go/personal_code/src/swigtest/02_constants/example.go:97 +0x4a
swigtest/02_constants.init()
C:/Users/visfgp/go/personal_code/src/swigtest/02_constants/example.go:101 +0x38

我的问题是,这个字符串特别引发了这种 panic ,为什么 SCONST 没有引发这种 panic ? string,它与 go int 的大小有什么关系?

最佳答案

当你定义一个 int32 变量时,它的范围是 -21474836482147483647 .也许你的变量超出了这个范围[:824633720845] .在这种情况下,您应该使用 int64!

关于Golang SWIG 示例 2 : slice bounds out of range panic,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62278859/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com