String 如何将新字符分配到Go中的字符串中?
我正在尝试更改Go中的现有字符串,但我不断收到此错误“无法分配给新的_str[I]”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
主程序包
输入“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