Go는 |
|
package main
|
|
import "fmt"
import "os"
|
|
type point struct {
x, y int
}
|
|
func main() {
|
|
Go는 일반적인 값들을 포맷팅 하기 위해 설계된 몇 가지 출력 "verbs"를 제공합니다. 예를 들어, 다음은 |
p := point{1, 2}
fmt.Printf("%v\n", p)
|
값이 구조체인 경우, |
fmt.Printf("%+v\n", p)
|
|
fmt.Printf("%#v\n", p)
|
값의 타입을 출력하기 위해선, |
fmt.Printf("%T\n", p)
|
불리언 포맷팅은 직관적입니다. |
fmt.Printf("%t\n", true)
|
정수 포맷팅에는 여러가지 옵션이 있습니다. 표준적인 10진수 포맷팅은 |
fmt.Printf("%d\n", 123)
|
다음은 바이너리 표현을 출력합니다. |
fmt.Printf("%b\n", 14)
|
다음은 주어진 정수에 해당하는 문자를 출력합니다. |
fmt.Printf("%c\n", 33)
|
|
fmt.Printf("%x\n", 456)
|
실수에 대해서도 몇 가지 포맷팅 옵션이 있습니다. 기본적인 십진수 포맷팅에 대해서는 |
fmt.Printf("%f\n", 78.9)
|
|
fmt.Printf("%e\n", 123400000.0)
fmt.Printf("%E\n", 123400000.0)
|
기본적인 문자열 출력에는 |
fmt.Printf("%s\n", "\"string\"")
|
Go 소스에서와 같이 문자열을 쌍따옴표로 묶으려면, |
fmt.Printf("%q\n", "\"string\"")
|
앞에서 본 정수와 마찬가지로, |
fmt.Printf("%x\n", "hex this")
|
포인터의 표현(메모리 표현)을 출력하기 위해선, |
fmt.Printf("%p\n", &p)
|
숫자를 포맷팅할때 결과 형태의 너비와 정확도를 조정하고 싶을때가 종종 있습니다. 정수의 너비를 지정하려면, 숫자를 |
fmt.Printf("|%6d|%6d|\n", 12, 345)
|
출력된 실수에 너비를 지정할 수도 있지만, 일반적으로는 windth.precision 구문을 사용해 정밀도를 제한하고자 합니다. |
fmt.Printf("|%6.2f|%6.2f|\n", 1.2, 3.45)
|
좌측 정렬을 위해선, |
fmt.Printf("|%-6.2f|%-6.2f|\n", 1.2, 3.45)
|
문자열을 포맷팅할 때, 특히 테이블같은 형태로 정렬하기 위해 너비를 조정하고 싶을때도 있습니다. 다음은 기본적인 우측 정렬 너비의 예입니다. |
fmt.Printf("|%6s|%6s|\n", "foo", "b")
|
숫자에서와 마찬가지로 좌측 정렬을 위해선 |
fmt.Printf("|%-6s|%-6s|\n", "foo", "b")
|
이제까지 우린 |
s := fmt.Sprintf("a %s", "string")
fmt.Println(s)
|
|
fmt.Fprintf(os.Stderr, "an %s\n", "error")
}
|
$ go run string-formatting.go
{1 2}
{x:1 y:2}
main.point{x:1, y:2}
main.point
true
123
1110
!
1c8
78.900000
1.234000e+08
1.234000E+08
"string"
"\"string\""
6865782074686973
0x42135100
| 12| 345|
| 1.20| 3.45|
|1.20 |3.45 |
| foo| b|
|foo |b |
a string
an error
|
다음 예제: 정규표현식.