English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Go 언어에서 문자열은 Java, c++、Python 등. 이는 UTF-8编码의 하나나 다수의 바이트로 표현됩니다. 다시 말해, 문자열은 언제든지 바이트(值为零인 바이트 포함)의 불변 연결이거나, 문자열은 읽기 전용 바이트 슬라이스이며, 문자열의 바이트는 UTF를 사용할 수 있습니다.-8编码으로 표현된 Unicode 텍스트에 있습니다.
UTF-8编码, Golang 문자열은 텍스트를 포함할 수 있으며, 텍스트는 세계의 어떤 언어의 혼합도 페이지 혼란과 제한을 초래하지 않습니다. 일반적으로 문자열은둥근 괄호””내용을، 다음 예제와 같이 보여줍니다:
//문자열을 어떻게 생성하나요? package main import "fmt" func main() { //(原始文本)。原始文本不支持转义字符,可以跨越多行,并且可以包含除反引号之外的任何字符。通常,它用于在正则表达式和HTML中编写多行消息。 //문자열을 포함한 변수 //단축 선언 사용 My_value_1 := "Welcome to oldtoolbag.com" //var 키워드 사용 var My_value_2 string My_value_2 = "w3codebox" //문자열을 표시 fmt.Println("String 1: ", My_value_1) fmt.Println("String 2: ", My_value_2) }
출력:
String 1: Welcome to oldtoolbag.com String 2: w3codebox
주의:문자열은 비어있을 수 있지만 nil이 될 수 없습니다.
Go 언어에서 문자열 리터럴은 두 가지 방식으로 생성됩니다:
둥근 괄호(“”) 사용:여기서, 문자열 리터럴은 둥근 괄호(“”)로 생성됩니다. 이 유형의 문자열 리터럴은 다음 표에 나타낸과 같은 escape 문자를 지원하지만, 다중 행을 건너뛰지 않습니다. 이 유형의 문자열 리터럴은 Golang 프로그램에서 널리 사용됩니다。
scape 문자 | 설명 |
---|---|
\\\ | 반쪽 기호(\) |
\000 | \xhh3具有给定的8비트 8진 코드 포인트의 유니코드 문자 |
\’ | 尖括호('))。문자 텍스트에서만 사용가능 |
\” | 둥근 괄호("")。해석된 문자열 텍스트에서만 사용가능 |
\a | ASCII 벨(BEL) |
\b | ASCII 백스페이스 키(BS) |
\f | ASCII 페이지 변경(FF) |
\n | ASCII 줄 바꿈(LF) |
\r | ASCII 개행(CR) |
\t | ASCII 탭(TAB) |
\uhhhh | \xhh4具有给定的16位 |
\xhh8具有给定的32位 | |
\v | ASCII 수직 테이블 표시(VT) |
\xhh | \xhh2具有给定的8位 |
位十六进制代码点的Unicode字符。使用反引号(``):此处,字符串文字是使用反引号(``)创建的,也称为raw literals
package main import "fmt" func main() { //(原始文本)。原始文本不支持转义字符,可以跨越多行,并且可以包含除反引号之外的任何字符。通常,它用于在正则表达式和HTML中编写多行消息。 //创建并初始化 //带有字符串文字的变量 My_value_1 := "Welcome to w3codebox" //添加转义字符 My_value_2 := "Welcome to w3codebox" //:= "Welcome!\nw My_value_3 := `Hello!w3codebox` //添加转义字符 //原始文本 My_value_4 := `Hello!\nw3codebox` //显示 fmt.Println("String 1: ", My_value_1) fmt.Println("String 2: ", My_value_2) fmt.Println("String 3: ", My_value_3) fmt.Println("String 4: ", My_value_4) }
출력:
String 1: Welcome to w3codebox String 2: Welcome! w3codebox String 3: Hello!w3codebox String 4: Hello!\nw3codebox
字符串是不可变的:在Go语言中,一旦创建了字符串,则字符串是不可变的,无法更改字符串的值。换句话说,字符串是只读的。如果尝试更改,则编译器将引发错误。
//字符串是不可变的 package main import "fmt" func main() { //문자열 생성 및 초기화 //단축 선언 사용 mystr := "Welcome to w3codebox" fmt.Println("String:", mystr) /* 如果你试图改变字符串的值,编译器将抛出一个错误,例如, cannot assign to mystr[1] mystr[1]= 'G' fmt.Println("String:", mystr) */ }
출력:
String: Welcome to w3codebox
如何遍历字符串?:您可以使用for range循环遍历字符串。此循环可以在Unicode代码点上迭代一个字符串。
语法:
for index, chr := range str{ // 语句.. }
在这里,索引是存储UTF-8编码代码点的第一个字节的变量,而chr는存储给定字符串的字符的变量,str는 문자열입니다。
//遍历字符串 //使用for范围循环 package main import "fmt" func main() { //字符串作为for循环中的范围 for index, s := range "w3codebox" { fmt.Printf("%c 인덱스 값은 %d\n", s, index) } }
출력:
n 인덱스 값은 0 h 인덱스 값은 1 o 인덱스 값은 2 o 인덱스 값은 3 o 인덱스 값은 4
如何访问字符串的单个字节?:字符串是一个字节,因此,我们可以访问给定字符串的每个字节。
//访问字符串的字节 package main import "fmt" func main() { //创建和初始化一个字符串 str := "Welcome to w3codebox" //지정된 문자열의 바이트에 접근 for c := 0; c < len(str); c++ { fmt.Printf("\n캐릭터 = %c 바이트 = %v", str[c], str[c]) } }
출력:
캐릭터 = W 바이트 = 87 캐릭터 = e 바이트 = 101 캐릭터 = l 바이트 = 108 캐릭터 = c 바이트 = 99 캐릭터 = o 바이트 = 111 캐릭터 = m 바이트 = 109 캐릭터 = e 바이트 = 101 캐릭터 = 바이트 = 32 캐릭터 = t 바이트 = 116 캐릭터 = o 바이트 = 111 캐릭터 = 바이트 = 32 캐릭터 = n 바이트 = 110 캐릭터 = h 바이트 = 104 캐릭터 = o 바이트 = 111 캐릭터 = o 바이트 = 111 캐릭터 = o 바이트 = 111
슬라이스에서 문자열을 어떻게 생성할 수 있습니까?:Go 언어에서는 바이트 슬라이스에서 문자열을 생성할 수 있습니다.
//슬라이스에서 문자열 생성 package main import "fmt" func main() { //데이터 타입 byte의 슬라이스 생성 및 초기화 myslice1 := []byte{0x47, 0x65, 0x65, 0x6b, 0x73} //슬라이스에서 문자열 생성 mystring1 := string(myslice1) //문자열을 표시 fmt.Println("String 1: ", mystring1) //데이터 타입 rune의 슬라이스 생성 및 초기화 myslice2 := []rune{0x0047, 0x0065, 0x0065, 0x006b, 0x0073} //슬라이스에서 문자열 생성 mystring2 := string(myslice2) //문자열을 표시 fmt.Println("String 2: ", mystring2) }
출력:
String 1: Geeks String 2: Geeks
문자열의 길이를 어떻게 찾을 수 있습니까?:Golang 문자열에서는 두 가지 함수를 사용할 수 있습니다. (한 가지는len(),다른 것은RuneCountInString())문자열의 길이를 찾으려면 UTF-8패키지는 RuneCountInString() 함수를 제공합니다. 이 함수는 문자열에存在的 모든 캐릭터 수를 반환합니다.len()함수는 문자열의 바이트수를 반환합니다.
//문자열의 길이를 찾기 package main import (" "fmt" "unicode/utf8" ) func main() { //문자열 생성 및 초기화 //단축 선언 사용 mystr := "Welcome to w3codebox ??????" //문자열의 길이를 찾기 //len() 함수를 사용 length1 := len(mystr) //RuneCountInString() 함수를 사용 length2 := utf8.RuneCountInString(mystr) //문자열의 길이를 표시 fmt.Println("string:", mystr) fmt.Println("Length 1:", length1) fmt.Println("Length 2:", length2) }
출력:
string: Welcome to w3codebox ?????? Length 1: 31 Length 2: 31