수색…
소개
문자열은 읽기 전용 바이트 슬라이스입니다. Go에서 문자열 리터럴은 항상 해당 내용의 유효한 UTF-8 표현을 포함합니다.
통사론
- variableName : = "Hello World"// 문자열을 선언하십시오.
- variableName : =`Hello World` // 원시 리터럴 문자열을 선언합니다.
- variableName : = "Hello"+ "World"// 문자열을 연결합니다.
- substring : = "Hello World"[0 : 4] // 문자열의 일부분을 얻는다.
- 문자 : = "Hello World"[6] // 문자열의 문자를 얻습니다.
- fmt.Sprintf ( "% s", "Hello World") // 문자열을 포맷합니다
문자열 유형
string
유형을 사용하면 일련의 문자 인 텍스트를 저장할 수 있습니다. 문자열을 만드는 방법에는 여러 가지가 있습니다. 리터럴 문자열은 큰 따옴표 사이에 텍스트를 쓰면 만들어집니다.
text := "Hello World"
Go 문자열은 UTF-8을 지원하기 때문에 이전 예제는 완벽하게 유효합니다. 문자열은 임의의 바이트를 포함하지만 모든 문자열에 유효한 UTF-8이 포함될 필요는 없지만 문자열 리터럴은 항상 유효한 UTF-8 시퀀스를 보유합니다.
문자열의 0 값은 빈 문자열 ""
입니다.
문자열은 +
연산자를 사용하여 연결할 수 있습니다.
text := "Hello " + "World"
문자열은 역 따옴표를 사용하여 정의 할 수있다 ``
. 이것은 문자가 이스케이프되지 않음을 의미하는 원시 문자열 리터럴을 만듭니다.
text1 := "Hello\nWorld"
text2 := `Hello
World`
이전 예에서 text1
은 새 행을 나타내는 \n
문자를 이스케이프하고 text2
는 새 행 문자를 직접 포함합니다. text1 == text2
를 비교하면 결과가 true
됩니다.
그러나 text2 := `Hello\nWorld`
는 \n
문자를 이스케이프하지 않습니다. 즉, 문자열에 Hello\nWorld
텍스트가 새 행없이 포함되어 있음을 의미합니다. text1 := "Hello\\nWorld"
입력하는 것과 같습니다.
텍스트 서식 지정
fmt
패키지는 형식 동사를 사용하여 텍스트를 인쇄하고 서식을 지정하는 기능을 구현합니다. 동사는 백분율 기호로 표시됩니다.
일반 동사 :
%v // the value in a default format
// when printing structs, the plus flag (%+v) adds field names
%#v // a Go-syntax representation of the value
%T // a Go-syntax representation of the type of the value
%% // a literal percent sign; consumes no value
부울 :
%t // the word true or false
정수:
%b // base 2
%c // the character represented by the corresponding Unicode code point
%d // base 10
%o // base 8
%q // a single-quoted character literal safely escaped with Go syntax.
%x // base 16, with lower-case letters for a-f
%X // base 16, with upper-case letters for A-F
%U // Unicode format: U+1234; same as "U+%04X"
부동 소수점 및 복합 구성 요소 :
%b // decimalless scientific notation with exponent a power of two,
// in the manner of strconv.FormatFloat with the 'b' format,
// e.g. -123456p-78
%e // scientific notation, e.g. -1.234456e+78
%E // scientific notation, e.g. -1.234456E+78
%f // decimal point but no exponent, e.g. 123.456
%F // synonym for %f
%g // %e for large exponents, %f otherwise
%G // %E for large exponents, %F otherwise
문자열 및 바이트 슬라이스 (동사와 동일하게 취급) :
%s // the uninterpreted bytes of the string or slice
%q // a double-quoted string safely escaped with Go syntax
%x // base 16, lower-case, two characters per byte
%X // base 16, upper-case, two characters per byte
바늘:
%p // base 16 notation, with leading 0x
동사를 사용하면 여러 유형을 연결하는 문자열을 만들 수 있습니다.
text1 := fmt.Sprintf("Hello %s", "World")
text2 := fmt.Sprintf("%d + %d = %d", 2, 3, 5)
text3 := fmt.Sprintf("%s, %s (Age: %d)", "Obama", "Barack", 55)
함수 Sprintf
는 첫 번째 매개 변수에서 문자열을 형식화하고 다음 매개 변수의 값으로 동사를 바꾸고 결과를 반환합니다. Sprintf
와 마찬가지로 Printf
함수도 형식을 지정하지만 결과를 반환하는 대신 문자열을 인쇄합니다.
문자열 패키지
-
fmt.Println(strings.Contains("foobar", "foo")) // true fmt.Println(strings.Contains("foobar", "baz")) // false
-
fmt.Println(strings.HasPrefix("foobar", "foo")) // true fmt.Println(strings.HasPrefix("foobar", "baz")) // false
-
fmt.Println(strings.HasSuffix("foobar", "bar")) // true fmt.Println(strings.HasSuffix("foobar", "baz")) // false
-
ss := []string{"foo", "bar", "bar"} fmt.Println(strings.Join(ss, ", ")) // foo, bar, baz
-
fmt.Println(strings.Replace("foobar", "bar", "baz", 1)) // foobaz
-
s := "foo, bar, bar" fmt.Println(strings.Split(s, ", ")) // [foo bar baz]
-
fmt.Println(strings.ToLower("FOOBAR")) // foobar
-
fmt.Println(strings.ToUpper("foobar")) // FOOBAR
-
fmt.Println(strings.TrimSpace(" foobar ")) // foobar
기타 : https://golang.org/pkg/strings/ .