Go 언어의 출력문을 제공하는 기본 내장 패키지입니다.
오늘은 fmt 패키지에 있는 여러 출력문을 (
Print, Println, Printf) 좀 더 자세히 알아보도록 하겠습니다.
값을 그 자리에 출력합니다.
Hello와World를 출력하려고 하면Hello World이런식으로 옆에 출력됩니다.
package main
import "fmt"
func main() {
var num1 int = 10
var num2 float32 = 3.2
var num3 complex64 = 2.5 + 8.1i
var hello string = "Hello, World"
var boolean bool = true
var intSlice []int = []int{1, 2, 3}
var strSlice []string = []string{"Hello","World"}
var mapping map[int]string = map[int]string{0:"Hello",1:"World",2:""}
var pointer *int = new(int)
type Data struct{a,b int}
var data Data = Data{1,2}
var i interface{} = 1
fmt.Print("정수 : ",num1)
fmt.Print("실수 : ",num2)
fmt.Print("복소수 : ",num3)
fmt.Print("문자열 : ",hello)
fmt.Print("불 : ",boolean)
fmt.Print("정수 슬라이스 : ",intSlice)
fmt.Print("문자열 슬라이스 : ",strSlice)
fmt.Print("맵 : ",mapping)
fmt.Print("포인터 : ",pointer)
fmt.Print("구조체 : ",data)
fmt.Print("인터페이스 : ",i)
}
실행 결과
정수 : 10실수 : 3.2복소수 : (2.5+8.1i)문자열 : Hello, World불 : true정수 슬라이스 : [1 2 3]문자열 슬라이스 : [Hello World]맵 : map[0:Hello 1:World 2:]포인터 : 0xc0000180a8구조체 : {1 2}인터페이스 : 1%
값, 또는 여러개의 변수를 모두 각 한줄로 출력됩니다. 또한 모든 형태의 값과 변수를 출력할 수 있으며, 따라서 배열, 슬라이스, 맵, 포인터, 구조체, 인터페이스 등도 간단하게 출력할 수 있습니다.
package main
import "fmt"
func main() {
var num1 int = 10
var num2 float32 = 3.2
var num3 complex64 = 2.5 + 8.1i
var hello string = "Hello, World"
var boolean bool = true
var intSlice []int = []int{1, 2, 3}
var strSlice []string = []string{"Hello","World"}
var mapping map[int]string = map[int]string{0:"Hello",1:"World",2:""}
var pointer *int = new(int)
type Data struct{a,b int}
var data Data = Data{1,2}
var i interface{} = 1
fmt.Println("정수 : ",num1)
fmt.Println("실수 : ",num2)
fmt.Println("복소수 : ",num3)
fmt.Println("문자열 : ",hello)
fmt.Println("불 : ",boolean)
fmt.Println("정수 슬라이스 : ",intSlice)
fmt.Println("문자열 슬라이스 : ",strSlice)
fmt.Println("맵 : ",mapping)
fmt.Println("포인터 : ",pointer)
fmt.Println("구조체 : ",data)
fmt.Println("인터페이스 : ",i)
}
실행 결과
정수 : 10
실수 : 3.2
복소수 : (2.5+8.1i)
문자열 : Hello, World
불 : true
정수 슬라이스 : [1 2 3]
문자열 슬라이스 : [Hello World]
맵 : map[0:Hello 1:World 2:]
포인터 : 0xc0000ac008
구조체 : {1 2}
인터페이스 : 1
함수의 첫 매개변수에 출력할 형식을 지정합니다. 그리고 두 번째 매개변수부터는 출력할 값 또는 변수를 나열합니다.
여기서 % (형식지정자)로 값을 출력할 위치와 타입을 정하며 %의 개수와 변수 또는 값의 개수가 같아야 합니다.
형식은 자유자재로 구성할 수 있으며 형식안에 개행 문자를 ( \n )을 넣으면 다음줄로 넘어갑니다.
package main
import "fmt"
func main() {
var num1 int = 10
var num2 float32 = 3.2
var num3 complex64 = 2.5 + 8.1i
var hello string = "Hello, World"
var boolean bool = true
var intSlice []int = []int{1, 2, 3}
var strSlice []string = []string{"Hello","World"}
var mapping map[int]string = map[int]string{0:"Hello",1:"World",2:""}
var pointer *int = new(int)
type Data struct{a,b int}
var data Data = Data{1,2}
var i interface{} = 1
fmt.Printf("정수 : %d\n",num1)
fmt.Printf("실수 : %f\n",num2)
fmt.Printf("복소수 : %f\n",num3)
fmt.Printf("문자열 : %s\n",hello)
fmt.Printf("불 : %t\n",boolean)
fmt.Printf("정수 슬라이스 : %v\n",intSlice)
fmt.Printf("문자열 슬라이스 : %v\n",strSlice)
fmt.Printf("맵 : %v\n",mapping)
fmt.Printf("포인터 : %p\n",pointer)
fmt.Printf("구조체 : %v\n",data)
fmt.Printf("인터페이스 : %v\n",i)
}
실행 결과
정수 : 10
실수 : 3.200000
복소수 : (2.500000+8.100000i)
문자열 : Hello, World
불 : true
정수 슬라이스 : [1 2 3]
문자열 슬라이스 : [Hello World]
맵 : map[0:Hello 1:World 2:]
포인터 : 0xc0000ac008
구조체 : {1 2}
인터페이스 : 1
%v 모든 값을 사용할 수 있는 기본 지정자이며 슬라이스, 맵, 포인터, 구조체, 인터페이스 등에 사용됩니다.
%+v처럼 +를 붙이면 구조체의 필드도 함께 표시합니다.
fmt.Printf("%+\n", data) /** -> {a:1 b:2} */
타입과 값을 함께 표현합니다.
fmt.Printf("%#v\n", m) /** -> map[string]int{"Hello":1} */ fmt.Printf("%#v\n", a) /** -> []int{1,2,3} */ fmt.Printf("%#v\n", data) /** -> main.Data{a:1, b:2} */
타입을 표현합니다.
fmt.Printf("%T\n", num1) /** -> int */ fmt.Printf("%T\n", m) /** -> map[string]int */ fmt.Printf("%T\n", a) /** -> []int */ fmt.Printf("%T\n", data) /** -> main.Data */
아무 값도 표현하지 않고, % 문자를 그대로 출력합니다.
fmt.Printf("%12345%\n") /** -> % */
불(
bool)을 표현합니다.fmt.Printf("%t\n",123 == 123) /** -> true */
2진수를 표현합니다.
fmt.Printf("%b\n",12345) /** -> 11000000111001 */
10진수를 표현합니다.
fmt.Printf("%d\n",12345) /** -> 12345 */
8진수를 표현합니다.
fmt.Printf("%o\n",12345) /** -> 30071 */
유니코드로 된 문자 하나를 표현합니다.
fmt.Printf("%c %c\n", "a", "가") /** -> a 가 */
문자열을
Escape하여 표현합니다.(
Escape란 특수문자를 문자 그대로 표현하기 위해 문자 앞에 역슬래시를 붙이는 작업을escape라고 합니다.)fmt.Printf("%q\n", `"Hello, world!" "안녕"`) /** -> "\"Hello, world!\" \"안녕\"" */
숫자와 영문 소문자로 16진수를 표현합니다.
var hello string = "Hello, Go!" fmt.Printf("%x\n", hello) /** -> 48656c6c6f2c20476f21 */
숫자와 영문 대문자로 16진수를 표현합니다.
var hello string = "Hello, Go!" fmt.Printf("%x\n", hello) /** -> 48656C6C6F2C20476F21 */
유니코드 형식으로 표현합니다.
fmt.Printf("%U\n", 'u') /** -> U+0075 */
실수를 2의 제곱으로 표현합니다.
var num float32 = 3.33 fmt.Printf("%b\n", num) /** -> 13967032p-22 */
실수를 지수 표기법으로 표현하고 e는 소문자 입니다.
var num float32 = 3.2 fmt.Printf("%e\n", num) /** -> 3.200000e+00 */
실수를 지수 표기법으로 표현하고 E는 대문자입니다.
var num2 float32 = 3.2 fmt.Printf("%E\n", num2) // 3.200000E+00
실수를 소수점 형식으로 표현합니다.
var num float32 = 3.2 fmt.Printf("%f\n", num) /** -> 3.200000 */
실수에서 지수가 크면
%e, %E로 표현하고, 지수가 작으면%f, %F로 표현합니다.fmt.Printf("%g %g\n", 123.12345, 1.3555) /** -> 123.12345 1.3555 */
문자열을 표현합니다.
fmt.Printf("%s\n","Hello, Go!") /** -> Hello, Go! */
포인터, 패널을 표현하며 앞에 0x가 붙습니다.
var pointer *int = new(int) fmt.Printf("%p\n",pointer) /** -> 0xc0000180a8 */
Go 언어 공부 GoGo~~! 엌ㅋㅋㅋㅋㅋㅋㅋ