恐慌:尝试访问字符串元素时,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开始的,所以需要:

  1. 检查len是否大于0;
  2. 减去 -1 以访问索引