답변:
fmt 패키지는 다음을 수행 할 수 있습니다.
fmt.Printf("|%06d|%6d|\n", 12, 345)
% 06d의 0은 너비가 6이되고 0으로 채워집니다. 두 번째는 공백으로 채워집니다.
여기에서 실제 동작을 볼 수 있습니다 : http://play.golang.org/p/cinDspMccp
Sprintf
대신 사용하십시오.Printf
of 및 패딩 문자와 함께 fmt 패키지 의 Printf
함수를 사용하십시오 .width
6
0
import "fmt"
fmt.Printf("%06d", 12) // Prints to stdout '000012'
width
형식 지정자 ( '동사') 바로 앞에 정수를 넣어 작업을 설정합니다 .
fmt.Printf("%d", 12) // Uses default width, prints '12'
fmt.Printf("%6d", 12) // Uses a width of 6 and left pads with spaces, prints ' 12'
Golang (및 대부분의 다른 언어)에서 지원하는 유일한 패딩 문자는 공백 및 0
:
fmt.Printf("%6d", 12) // Default padding is spaces, prints ' 12'
fmt.Printf("%06d", 12) // Change to 0 padding, prints '000012'
마이너스를 앞에 추가하여 인쇄를 오른쪽 정렬 할 수 있습니다 -
.
fmt.Printf("%-6d", 12) // Padding right-justified, prints '12 '
부동 소수점 숫자의 경우 너비에는 전체 형식 문자열이 포함됩니다.
fmt.Printf("%6.1f", 12.0) // Prints '0012.0' (width is 6, precision is 1 digit)
*
숫자 대신 사용 하고 너비를 int
매개 변수 로 전달 하여 프로그래밍 방식으로 너비를 설정할 수도 있습니다 .
myWidth := 6
fmt.Printf("%0*d", myWidth, 12) // Prints '000012' as before
이는 인쇄하려는 가장 큰 값이 런타임에만 알려진 경우에 유용 할 수 있습니다 ( maxVal
다음 예제에서 호출 됨 ).
myWidth := 1 + int(math.Log10(float64(maxVal)))
fmt.Printf("%*d", myWidth, nextVal)
마지막으로, 인쇄하고 싶지 stdout
않지만 문자열을 반환하는 경우 동일한 매개 변수를 사용 Sprintf
하여 fmt 패키지 에서도 사용 하십시오.
s := fmt.Sprintf("%06d", 12) // returns '000012' as a String
이를 달성하는 가장 간단한 방법이 있습니다. 사용하다
func padNumberWithZero(value uint32) string {
return fmt.Sprintf("%02d", value)
}
fmt.Sprintf
어디에도 인쇄하지 않고 문자열을 형식화하고 반환합니다. 여기 %02d
에 숫자가 2 미만인 값에 대해 왼쪽에 패드 0이 표시됩니다. 주어진 값에 2 개 이상의 숫자가 있으면 패딩되지 않습니다. 예를 들면 :
%03d
더 많은 0 패딩에 이상을 사용할 수 있습니다 .
" Go lang의 인쇄 형식 목록 "이라는 질문 은 플래그도 있음을 상기시킵니다.
-
왼쪽이 아닌 오른쪽에 공백이있는 채우기 (필드를 왼쪽 정렬)
DaddyOh/golang-samples/pad.go
다른 문자열 시퀀스 ( ' 0
'또는 ' ' 보다 더 복잡함)로 채우려면를 사용하여 더 많은 채우기 예제를 볼 수 있습니다 .
leftPad(s string, padStr string, pLen int)
rightPad(s string, padStr string, pLen int)
leftPad2Len(s string, padStr string, overallLen int)
rightPad2Len(s string, padStr string, overallLen int)
참조 play.golang.org:
1234567890
leftPad(str, "*", 3) ***1234567890
leftPad2Len(str, "*-", 13) -*-1234567890
leftPad2Len(str, "*-", 14) *-*-1234567890
leftPad2Len(str, "*", 14) ****1234567890
leftPad2Len(str, "*-x", 14) x*-x1234567890
leftPad2Len(str, "ABCDE", 14) BCDE1234567890
leftPad2Len(str, "ABCDE", 4) 7890
rightPad(str, "*", 3) 1234567890***
rightPad(str, "*!", 3) 1234567890*!*!*!
rightPad2Len(str, "*-", 13) 1234567890*-*
rightPad2Len(str, "*-", 14) 1234567890*-*-
rightPad2Len(str, "*", 14) 1234567890****
rightPad2Len(str, "*-x", 14) 1234567890*-x*
rightPad2Len(str, "ABCDE", 14) 1234567890ABCD
rightPad2Len(str, "ABCDE", 4) 1234
-
하면 공백 만 제공되며 0이 필요합니다.