수색…


소개

문자열은 읽기 전용 바이트 슬라이스입니다. 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 함수도 형식을 지정하지만 결과를 반환하는 대신 문자열을 인쇄합니다.

문자열 패키지

  • strings.Contains

    fmt.Println(strings.Contains("foobar", "foo")) // true
    fmt.Println(strings.Contains("foobar", "baz")) // false
    
  • strings.HasPrefix

    fmt.Println(strings.HasPrefix("foobar", "foo")) // true
    fmt.Println(strings.HasPrefix("foobar", "baz")) // false
    
  • strings.HasSuffix

    fmt.Println(strings.HasSuffix("foobar", "bar")) // true
    fmt.Println(strings.HasSuffix("foobar", "baz")) // false
    
  • strings.Join

    ss := []string{"foo", "bar", "bar"}
    fmt.Println(strings.Join(ss, ", ")) // foo, bar, baz
    
  • strings.Replace

    fmt.Println(strings.Replace("foobar", "bar", "baz", 1)) // foobaz
    
  • strings.Split

    s := "foo, bar, bar"
    fmt.Println(strings.Split(s, ", ")) // [foo bar baz]
    
  • strings.ToLower

    fmt.Println(strings.ToLower("FOOBAR")) // foobar
    
  • strings.ToUpper

    fmt.Println(strings.ToUpper("foobar")) // FOOBAR
    
  • strings.TrimSpace

    fmt.Println(strings.TrimSpace("  foobar  ")) // foobar
    

기타 : https://golang.org/pkg/strings/ .



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow