String 如何解决Golang中的(字符串和字节类型不匹配) func g(str字符串)字符串{ 变量i=0 var new_str=“” 对于i

String 如何解决Golang中的(字符串和字节类型不匹配) func g(str字符串)字符串{ 变量i=0 var new_str=“” 对于i,string,go,byte,String,Go,Byte,.\fruits.go:11:21:无效操作:new_str+str[i+1](字符串和字节类型不匹配) .go:24:21:无效操作:f(g(str))+str[0](字符串和字节类型不匹配) 错误消息描述了您的问题:无效操作:new_str+str[i+1](字符串和字节类型不匹配)str[i+1]是基础str数组中的字节。Go需要显式转换。写入字符串(str[i+1]) 比如说, func g(str string) string { var i = 0 var new_s

.\fruits.go:11:21:无效操作:new_str+str[i+1](字符串和字节类型不匹配) .go:24:21:无效操作:f(g(str))+str[0](字符串和字节类型不匹配)


错误消息描述了您的问题:
无效操作:new_str+str[i+1](字符串和字节类型不匹配)
str[i+1]
是基础
str
数组中的字节。Go需要显式转换。写入
字符串(str[i+1])

比如说,

func g(str string) string {
    var i = 0
    var new_str = ""
    for i < len(str) - 1 {
        new_str = new_str + str[i + 1]
        i = i + 1
}

func f(str string) string {
if len(str) == 0 {
    return ""
} else {
    if len(str) == 1 {
        return str
    } else {
        return f(g(str)) + str[0]
    }
}

func h(n uint64, str string) string {
for n != 1 {
    if n % 2 == 0 {
        n = n / 2
    } else {
        n = 3*n + 1
    }
    str = f(str)
}
return str
}


func pow(x, y uint64) uint64 {
if y == 0 {
    return 1
} else {
    return x * pow(x, y-1)
}
}


func main() {
fmt.Println(h(1, "fruits"))
fmt.Println(h(2, "fruits"))
fmt.Println(h(5, "fruits"))
fmt.Println(h(pow(2, 1000000000000000), "fruits"))
fmt.Println(h(pow(2, 1000000000000000), "fruits"))
}
主程序包
func g(str字符串)字符串{
变量i=0
var new_str=“”
对于i

游乐场:

你应该尽可能让人们帮助你。你的代码由于不相关的错误而无法编译。这不是你问题的一个最小示例。这里有一个简单的、近乎最小的示例来说明你的问题:请参阅
package main

func g(str string) string {
    var i = 0
    var new_str = ""
    for i < len(str)-1 {

        // invalid operation: new_str + str[i + 1] (mismatched types string and byte)
        // new_str = new_str + str[i+1]

        new_str = new_str + string(str[i+1])
        i = i + 1
    }
    return new_str
}

func main() {}