Go에서 문자열을 포맷하는 방법

Go에서 문자열을 포맷하는 방법

Go 코드를 작성할 때 많은 상황에서 문자열 형식이 매우 유용하다는 것을 알게 될 것입니다. 입력을 구문 분석하거나 단순한 연결보다 더 복잡한 출력을 만들 수 있습니다. 일반 문자열이 아닌 다른 유형으로 작업할 수 있습니다.



Go의 문자열 형식은 Java에서 Haskell에 이르기까지 언어에서도 사용하는 익숙한 프로세스와 printf 함수 구문을 사용합니다.





Go는 문자열 형식화를 위한 다양한 방법을 제공합니다. fmt 패키지. 형식화하려는 작업 또는 입력에 따라 문자열 형식화에 함수 및 동사를 사용할 수 있습니다.





Go의 문자열 서식 지정

fmt 패키지의 기능은 다음과 같은 기능과 유사합니다. bash의 printf 함수 또는 C. Go는 C에서 형식화 동사를 파생합니다.

너는 사용한다 문자열 형식화 동사 포함하는 문자열의 변수 값에 대한 자리 표시자로 사용됩니다. 그런 다음 해당 형식화 문자열을 다음과 같은 함수에 전달할 수 있습니다. 인쇄 , 해당 자리 표시자에 해당하는 값과 함께.



문자열 형식화 동사는 다음과 함께 사용할 수 없습니다. 인쇄 그리고 Println 행동 양식. 다음과 같은 방법으로 사용할 수 있습니다. 인쇄 그리고 스프린트 .

fmt.Println("This is a test %v", 90) 
fmt.Printf("This is a test %v", 90)

그만큼 %안에 verb는 모든 값을 기본 형식으로 인쇄합니다. 그만큼 Println 메소드는 동사를 인식하지 못하고 수신한 모든 인수를 인쇄합니다. 그만큼 인쇄 그리고 스프린트 함수는 모두 전달한 첫 번째 문자열 인수의 형식을 지정합니다.





  정수 형식화 결과

fmt 패키지의 문자열 형식화 함수

문자열 서식 지정 Go 프로그래밍 언어 문자열 형식화 함수와 동사를 사용해야 합니다. 함수는 형식이 지정된 문자열을 반환하고 동사는 문자열에 대한 입력에 대한 자리 표시자입니다.

그만큼 인쇄 메서드는 형식 지정자에 따라 입력 형식을 지정하고 기록된 바이트 또는 오류 수를 반환합니다.





가입하거나 지불하지 않고 무료 영화
fmt.Printf("This is a test %v", 90) 

일반적으로 사용할 때 오류에 대해 걱정할 필요가 없습니다. 인쇄 방법.

그만큼 스프린트 메서드는 지정된 형식에 따라 형식을 지정하고 결과를 문자열로 반환합니다.

var result = fmt.Sprintf("This is a test %v", 90) 

그만큼 지문 메서드는 문자열을 형식화하고 작성기에 씁니다(구현하는 메서드 io.Writer 상호 작용)

// write data to standard output 
result, err = fmt.Fprintf(writer, "This is a test %v", 90)

그만큼 Fscanf 메서드는 판독기에서 스캔하고 지정된 형식에 따라 형식을 지정합니다.

var take string 

// read data from the given string
readString := strings.NewReader("This is a test")

read, err := fmt.Fscanf(reader, "%v", &take)

이 경우, Fscanf 판독기의 문자열을 디코딩합니다. 가져가다 변수, 그리고 읽다 변수는 형식의 결과를 보유합니다.

문자열 형식화 동사

Go는 문자열 형식화 함수와 함께 사용할 수 있는 많은 형식화 동사를 제공합니다.

Windows 10에서 명령 프롬프트를 사용하는 방법

다음과 같은 일반적인 문자열 형식화 동사가 있습니다. %안에 문자열 형식화 함수 예제의 동사. 일반 문자열 형식화 동사를 사용하여 모든 데이터 유형의 형식을 지정할 수 있습니다.

당신은 사용할 수 있습니다 %#안에 어떤 값을 출력하는 동사, %+v 구조체의 경우 %티 모든 값의 유형에 대한 동사 및 %% 값이 없는 동사.

type any struct {  
name string
age int
isLoggedIn bool
}

var instance = any {
name: "John Doe",
age: 34,
isLoggedIn: true,
}

var result = fmt.Sprintf("This is a struct formatting example %+v", instance)
fmt.Println(result)

그만큼 결과 변수는 인스턴스화된 구조체의 형식화된 문자열을 보유합니다. 인쇄하면 다음과 같아야 합니다.

This is a struct formatting example {name:John Doe age:34 isLoggedIn:true}

채널 및 포인터를 포함하여 특정 Go 기본 데이터 유형의 형식을 지정하는 동사가 있습니다.

%티 부울.
%디 int, int8 등
%d, %#v로 인쇄된 경우 %#x uint, uint8 등
%g float32, complex64 등
%에스 끈.
%피 찬.
%피 바늘.

동사는 다음과 같이 대소문자를 구분하므로 실수하지 않도록 해야 합니다. 그리고 바늘 동사.

정수 및 부동 소수점 형식 지정

정수 형식화를 위한 문자열 형식화 동사가 있습니다. 다른 기지 . 이러한 동사를 사용하여 정수 형식을 지정할 수 있습니다.

%비 베이스 2
%씨 대응하는 유니코드 코드 포인트가 나타내는 문자.
%디 베이스 10.
%영형 베이스 8.
%영형 접두사가 0o인 8진수.
%큐 작은 따옴표로 묶인 문자 리터럴은 Go 구문으로 안전하게 이스케이프되었습니다.
%엑스 기본 16, a-f는 소문자.
%엑스 기본 16, A-F는 대문자입니다.
%에 유니코드 형식: U+1234; 'U+%04X'와 동일합니다.

예를 들어 다음을 사용하여 정수 형식을 지정할 수 있습니다. %디 동사:

var result = fmt.Sprintf("This is an integer formatting example %d", 90) 
fmt.Println(result)

부동 소수점 숫자의 형식을 지정하는 동사입니다.

%비 strconv 방식으로 지수가 2의 거듭제곱인 십진법 과학 표기법. 'b' 형식의 FormatFloat, 예: -123456p-78
%그리고 과학적 표기법, 예. -1.234456e+78
%그리고 소수점은 있지만 지수는 없음(예: 123.456)
%에프 소수점은 있지만 지수는 없음(예: 123.456)
%에프 %f의 동의어입니다.
%g 큰 지수의 경우 %e, 그렇지 않은 경우 %f. 아래 정밀도.
%G 큰 지수의 경우 %E, 그렇지 않은 경우 %F
%엑스 16진수 표기법(2 지수의 10진수 거듭제곱 포함), 예: -0x1.23abcp+20.
%엑스 대문자 16진수 표기법, 예: -0X1.23ABCP+20.

다음은 지수 없이 소수점 서식을 지정하는 예입니다. %에프 동사.

var result = fmt.Sprintf("This is a floating point formatting example %f", 432.9503) 
fmt.Println(result)

유형에 대해 잘 모르는 경우 항상 일반 동사를 사용할 수 있습니다.

문자열 및 바이트 서식 지정

문자열과 바이트 유형의 조각은 Go에서 매우 유사합니다. 이것은 문자열과 바이트를 포맷하기 위한 플래그입니다.

%에스 문자열 또는 슬라이스의 해석되지 않은 바이트
%큐 큰 따옴표로 묶인 문자열은 Go 구문으로 안전하게 이스케이프 처리됩니다.
%엑스 기본 16, 소문자, 바이트당 2자
%엑스 기본 16, 대문자, 바이트당 2자

다음은 문자열 형식을 지정하는 예입니다. %에스 동사.

var score = "example" 
var result = fmt.Sprintf("This is a string formatting example %s", score)
fmt.Println(result)

fmt 패키지는 Python 프로그래밍에 필수적입니다.

그만큼 fmt 패키지에는 문자열 형식화에 필요한 대부분의 기능이 포함되어 있습니다. Go도 제공합니다 문자열 문자열 조작을 위한 패키지 및 통나무 로깅을 위해 문자열을 포맷할 수 있는 패키지.

그만큼 fmt 패키지에는 다음을 구현하는 기능이 있습니다. io.Writer 그리고 io.리더 인터페이스. 웹 및 명령줄 애플리케이션 구축과 같은 많은 사용 사례에 유용하다는 것을 알게 될 것입니다.