반응형
Golang 에서는 "fmt" 라는 기본적인 패키지를 제공해줍니다.
처음 Golang을 접하게 되면 당연 출력하는 것이 "Hello warld"라고 생각합니다.
다음 예제를 보시죠.
package main
import "fmt"
func main() {
println("hi")
fmt.Println("fmt")
}
//Output
hi
fmt
fmt 패키지를 사용해 Println이라는 메소드를 호출하여 흔히 문자열을 출력합니다.
그럼 println 은 뭘까요??
fmt.Println()은 stdout 으로 표준 문자열 출력을 제공하는 함수입니다.
println()은 내장된 함수로 stderr를 출력해주는 내장함수 입니다.
때문에 println()은 주로 디버깅 할때 유용하다고 합니다.
그럼 fmt 패키지에서 제공해주는 print() 에 대해 살펴보도록 하겠습니다.
1. 출력
fmt.Print()
Println(a ...interface{}) (n int, err error)
Println formats using the default formats for its operands and writes to standard output.
Spaces are always added between operands and a newline is appended.
It returns the number of bytes written and any write error encountered.
Println에 대한 설명입니다.
쉽게 말해서 Println을 사용할 때 ','로 구분지어 출력하면 피연산자 사이에 공백이 생기며, 맨 마지막줄엔 개행이 추가된다는 뜻입니다.
또한 에러 발생시 error 객체를 반환한다고 되어 있습니다.
package main
import (
"fmt"
)
func main() {
fmt.Println("name", nil) //output : name <nil>
fmt.Println("hwan", 10, 10, "word") //output : hwan 10 10 word
}
1) 구조체 출력
package main
import (
"fmt"
)
type User struct {
Name string
Age int
}
func main() {
st := User{"name", 10}
fmt.Printf("%v\n", st) //output : {name, 10}
fmt.Printf("%#v\n", st) //output : main.User{Name:"name", Age:10}
fmt.Printf("%+v\n", st) //output : {Name:name Age:10}
fmt.Printf("%T\n", st) //output : main.User
//fmt.Printf("%%\n", st)
}
%v : 구조체 내용물 가져와서 출력
%#v : 해당 구조체를 호출하는 구간과 내용 출력(디버깅용)
%+v : 해당 구조체의 변수 이름까지 함께 출력
%T : 해당 구조체 호출 구간 출력
2) 자료형 출력
package main
import (
"fmt"
)
func main() {
var num int = 10
var name string = "hwan"
var byte1 byte = 'A'
var boolean bool = true
var f float32 = 1.5
var p *int = &num
fmt.Printf("%d\n", num) //output : 10 (정수)
fmt.Printf("%f\n", f) //output : 1.500000(실수)
fmt.Printf("%s\n", name) //output : hwan(문자열)
fmt.Printf("%b\n", byte1) //output : 1000001(2진수)
fmt.Printf("%0o\n", byte1) //output : 101(8진수)
fmt.Printf("%x\n", byte1) //output : 41(16진수)
fmt.Printf("%c\n", byte1) //output : A(char)
fmt.Printf("%t\n", boolean) //output : true(boolean)
fmt.Printf("%U\n", byte1) //output : U+0041(유니코드)
fmt.Printf("%p\n", &p) //output : 0xc000006028(포인터가 가르키는 주소 값 = num의 주소 값)
fmt.Printf("%p\n", p) //output : 0xc000014088(포인터 주소 값)
}
%d | 정수 |
%f | 실수 |
%c | 문자 |
%s | 문자열 |
%0o | 8진수 |
%x | 16진수 |
%b | 2진수 |
%t | 참 혹은 거짓 |
%U | 유니코드 |
%p | 주소 값 |
3)문자열
package main
import (
"fmt"
)
func main() {
var name string = "hwan"
var str1 string = "abc\n" +
"def"
var str2 string = `abc\n` + name
var str3 string = `qqq\n
zzzz`
fmt.Println(`hello` + name) //output : hellohwan
fmt.Println(str1) //output : abc
// def
fmt.Println(str2) //output : abc\nhwan
fmt.Println(str3) //output : qqq\n
// zzzz
}
string의 경우 " 와 ` 를 사용하여 문자열를 정의할 수 있습니다.
` 를 사용하는 경우 문자열의 리터럴 값이 그대로 들어가게 되며,
" 를 사용하는 경우 문자 개행같은 키워드들이 적용되어 나타나게 됩니다.
반응형
'프로그래밍 > Go언어' 카테고리의 다른 글
Golang for문 사용법!! (0) | 2021.05.16 |
---|---|
Golang 구조체 설명 (0) | 2021.05.02 |
Go lang 시작하기(VSCode 셋팅) (0) | 2021.04.05 |
Go 언어의 goroutine에 대해서... (0) | 2020.11.04 |
Go언어를 왜 사용 할까? (0) | 2020.11.04 |
댓글