恐慌:尝试访问字符串元素时,Go 中的索引超出范围
panic: index out of range in Go when trying to access string element
我目前正在学习如何在 Go 中编写代码,我遇到了代码第 43 行和第 44 行出现的问题,我正在尝试转换 "num" 和 [=25= 的一个元素] 变成一个数字,这样我以后可以用它做我想要的计算,但我收到以下消息:
panic: runtime error: index out of range
goroutine 1 [running]:
main.iterate_transfer(0x7ffecd96f050, 0x3, 0x7ffecd96f054, 0x3)
/home/mlg/Programming/project/107transfer_2019/107transfer.go:43 +0x3af
main.main()
/home/mlg/Programming/project/107transfer_2019/107transfer.go:28 +0xac
我尝试打印 "den" 字符串的 len 和内容,它在正确的位置包含我想要的值,所以我不明白为什么我不能访问它的单个元素
我将“7*2*6”传递给了num_str,将“2*4*3”传递给了den_str
我的代码:
34 func iterate_transfer(num_str, den_str string) () {
35 result := 0.0
36
37 for x := 0.0; x <= 1.00; x += 0.001 {
38 num := strings.Split(num_str, "*")
39 den := strings.Split(den_str, "*")
40 power_num := len(num)
41 power_den := len(den)
42 for s := len(num); s > 0; s-- {
43 num_nb, _ := strconv.Atoi(num[s])
44 den_nb, _ := strconv.Atoi(den[s])
45 result += math.Pow(float64(num_nb), float64(power_den)) / math.Pow(float64(den_nb), float64(power_den))
46 power_num--
47 power_den--
48 }
49 fmt.Println(x, " -> ", result, "\n")
50 }
51 }
在此先感谢您对我的帮助!
len
内置方法,return给定元素的大小。
由于索引是从0开始的,所以需要:
- 检查
len
是否大于0;
- 减去
-1
以访问索引
我目前正在学习如何在 Go 中编写代码,我遇到了代码第 43 行和第 44 行出现的问题,我正在尝试转换 "num" 和 [=25= 的一个元素] 变成一个数字,这样我以后可以用它做我想要的计算,但我收到以下消息:
panic: runtime error: index out of range
goroutine 1 [running]:
main.iterate_transfer(0x7ffecd96f050, 0x3, 0x7ffecd96f054, 0x3)
/home/mlg/Programming/project/107transfer_2019/107transfer.go:43 +0x3af
main.main()
/home/mlg/Programming/project/107transfer_2019/107transfer.go:28 +0xac
我尝试打印 "den" 字符串的 len 和内容,它在正确的位置包含我想要的值,所以我不明白为什么我不能访问它的单个元素
我将“7*2*6”传递给了num_str,将“2*4*3”传递给了den_str
我的代码:
34 func iterate_transfer(num_str, den_str string) () {
35 result := 0.0
36
37 for x := 0.0; x <= 1.00; x += 0.001 {
38 num := strings.Split(num_str, "*")
39 den := strings.Split(den_str, "*")
40 power_num := len(num)
41 power_den := len(den)
42 for s := len(num); s > 0; s-- {
43 num_nb, _ := strconv.Atoi(num[s])
44 den_nb, _ := strconv.Atoi(den[s])
45 result += math.Pow(float64(num_nb), float64(power_den)) / math.Pow(float64(den_nb), float64(power_den))
46 power_num--
47 power_den--
48 }
49 fmt.Println(x, " -> ", result, "\n")
50 }
51 }
在此先感谢您对我的帮助!
len
内置方法,return给定元素的大小。
由于索引是从0开始的,所以需要:
- 检查
len
是否大于0; - 减去
-1
以访问索引