Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 如何将新字符分配到Go中的字符串中?_String_Go_Uppercase_Alter_Toupper - Fatal编程技术网

String 如何将新字符分配到Go中的字符串中?

String 如何将新字符分配到Go中的字符串中?,string,go,uppercase,alter,toupper,String,Go,Uppercase,Alter,Toupper,我正在尝试更改Go中的现有字符串,但我不断收到此错误“无法分配给新的_str[I]” 主程序包 输入“fmt” func-ToUpper(str字符串)字符串{ 新的_str:=str 对于i:=0;i='a'&&str[i]您不能…它们是不可变的。从: 字符串是不可变的:一旦创建,就不可能更改字符串的内容 但是,您可以将其强制转换为[]字节切片,并对其进行更改: func ToUpper(str string) string { new_str := []byte(str) f

我正在尝试更改Go中的现有字符串,但我不断收到此错误“无法分配给新的_str[I]”

主程序包
输入“fmt”
func-ToUpper(str字符串)字符串{
新的_str:=str

对于i:=0;i='a'&&str[i]您不能…它们是不可变的。从:

字符串是不可变的:一旦创建,就不可能更改字符串的内容

但是,您可以将其强制转换为
[]字节
切片,并对其进行更改:

func ToUpper(str string) string {
    new_str := []byte(str)
    for i := 0; i < len(str); i++ {
        if str[i] >= 'a' && str[i] <= 'z' {
            chr := uint8(rune(str[i]) - 'a' + 'A')
            new_str[i] = chr
        }
    }
    return string(new_str)
}
func-ToUpper(str字符串)字符串{
新字符串:=[]字节(str)
对于i:=0;i如果Go字符串中的str[i]>='a'&&str[i]是不可变的

主程序包
输入“fmt”
func-ToUpper(str字符串)字符串{
新的_str:=“”
对于i:=0;i如果chr>='a'&&chr使用
range
并避免不必要的转换和分配。字符串是不可变的。例如

package main

import "fmt"

func ToUpper(s string) string {
    var b []byte
    for i, c := range s {
        if c >= 'a' && c <= 'z' {
            if b == nil {
                b = []byte(s)
            }
            b[i] = byte('A' + rune(c) - 'a')
        }
    }
    if b == nil {
        return s
    }
    return string(b)
}

func main() {
    fmt.Println(ToUpper("cdsrgGDH7865fxgh"))
}
主程序包
输入“fmt”
func ToUpper(s字符串)字符串{
变量b[]字节
对于i,c:=范围s{

如果c>='a'&&c有什么特殊原因不想使用标准库中的
strings.ToUpper
函数吗?
package main

import "fmt"

func ToUpper(str string) string {
    new_str := ""
    for i := 0; i < len(str); i++ {
        chr := str[i]
        if chr >= 'a' && chr <= 'z' {
            chr = chr - 'a' + 'A'
        }
        new_str += string(chr)
    }
    return new_str
}

func main() {
    fmt.Println(ToUpper("cdsrgGDH7865fxgh"))
}
package main

import "fmt"

func ToUpper(s string) string {
    var b []byte
    for i, c := range s {
        if c >= 'a' && c <= 'z' {
            if b == nil {
                b = []byte(s)
            }
            b[i] = byte('A' + rune(c) - 'a')
        }
    }
    if b == nil {
        return s
    }
    return string(b)
}

func main() {
    fmt.Println(ToUpper("cdsrgGDH7865fxgh"))
}
CDSRGGDH7865FXGH