programing

골랑은 파이썬처럼 문자열을 곱할 수 있습니까?

javamemo 2023. 5. 5. 08:31
반응형

골랑은 파이썬처럼 문자열을 곱할 수 있습니까?

파이썬은 다음과 같은 문자열을 곱할 수 있습니다.

Python 3.4.3 (default, Mar 26 2015, 22:03:40)
[GCC 4.9.2] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> x = 'my new text is this long'
>>> y = '#' * len(x)
>>> y
'########################'
>>>

골랑이 어떻게든 동등한 일을 할 수 있을까요?

연산자 대신 기능이 있습니다. 여기서 실행할 수 있는 Python 예제의 포트가 있습니다.

package main

import (
    "fmt"
    "strings"
    "unicode/utf8"
)

func main() {
    x := "my new text is this long"
    y := strings.Repeat("#", utf8.RuneCountInString(x))
    fmt.Println(x)
    fmt.Println(y)
}

전자는 "실행"(유니코드 코드 포인트)을 계산하고 후자는 바이트를 계산합니다.의 경우에는"my new text is this long"모든 런이 각각 1바이트이기 때문에 차이는 중요하지 않지만, 의미를 지정하는 습관을 갖는 것이 좋습니다.

len("ā") //=> 2
utf8.RuneCountInString("ā") //=> 1

이것은 Python 비교 질문이었기 때문에, Python에서 하나의 함수는 당신이 무엇을 부르는지에 따라 다른 것들을 계산합니다.파이썬 2에서는 일반 문자열에서 바이트 수를 세고 유니코드 문자열에서 실행됩니다.u'...'):

Python 2.7.18 (default, Aug 15 2020, 17:03:20)
>>> len('ā') #=> 2
>>> len(u'ā') #=> 1

현대 파이썬에서 플레인 문자열은 유니코드 문자열입니다.

Python 3.9.6 (default, Jun 29 2021, 19:36:19) 
>>> len('ā') #=> 1

바이트 수를 계산하려면 문자열을 첫 번째로 인코딩해야 합니다.

>>> len('ā'.encode('UTF-8')) #=> 2

그래서 파이썬은 여러 종류의 문자열과 그들의 길이를 얻기 위한 하나의 함수를 가지고 있습니다; 바둑은 한 종류의 문자열만 가지고 있지만, 당신은 당신이 원하는 의미론과 일치하는 길이 함수를 선택해야 합니다.

아, 또한 "rune"의 Golang 개념이 유니코드에서 "한 문자의 문자열 수는 얼마입니까?"라는 질문이 항상 명확하게 정의된 답을 가지고 있는 것은 아니라는 점에 주목할 필요가 있습니다.이전에 저는 "a"라는 문자열을 2바이트 1런 문자열의 예로 사용했습니다.하지만 이 매우 비슷하게 생긴 문자열 "ā"는 실제로 4바이트 또는 2런 길이입니다.첫 번째는 마크롱이 있는 U+0101 라틴 문자 A이고, 두 번째는 U+0061 라틴 문자 A 다음으로 마크롱이 결합된 U+0304입니다.적절한 유니코드 처리는 이들을 서로 동등하게 취급하지만(정규화 양식이 선택된 것에 따라 이들 중 하나를 정규화된 형식으로 선택), 둘 다 동일한 Platonic 이상적인 문자열이 일정한 수의 코드 포인트를 포함한다고 말할 수 있는 의미는 없습니다.

예, 연산자는 아니지만 표준 라이브러리에 있는 기능을 사용할 수 있습니다.

간단한 루프만 있으면 매우 쉽지만 표준 라이브러리는 매우 최적화된 버전을 제공합니다.

예:

x := "my new text is this long"
y := strings.Repeat("#", len(x))
fmt.Println(y)

Go Playground에서 시도해보세요.

주의:len(x)는 문자열의 "바이트" 길이(바이트 수)입니다(UTF-8 인코딩에서는 Go가 문자열을 메모리에 저장하는 방법).문자 수(실행)를 사용하려면 를 사용합니다.

네. 스트링 패키지는 기능이 있습니다.

문자열 패키지를 사용할 수 있습니다.여기에 반복 기능이 있습니다.

언급URL : https://stackoverflow.com/questions/33139020/can-golang-multiply-strings-like-python-can

반응형