[Golang] 콘솔 출력과 입력 함수 1

이정훈·2023년 5월 22일
0

Golang

목록 보기
10/24
post-thumbnail

콘솔 출력 함수 (Print)

  • fmt 패키지를 사용
  • 출력 함수 Println, Print, Printf
  • 파일 출력 함수 Fprintln, Fprint, Fprintf
    • Fprint는 지정된 파일에 포맷되지 않은 데이터를 씁니다.
    • Fprintf는 지정된 파일에 포맷된 데이터를 씁니다.
    • Fprintln은 지정된 파일에 포맷되지 않은 데이터를 쓰고 줄 바꿈 문자를 추가합니다.
  • string형으로 반환 Sprintln, Sprint, Sprintf
    • Sprint는 포맷되지 않은 데이터를 문자열로 반환합니다.
    • Sprintf는 포맷된 데이터를 문자열로 반환합니다.
    • Sprintln은 포맷되지 않은 데이터를 문자열로 반환하고 줄 바꿈 문자를 추가합니다.
  • 자세한 F, S 함수는 추후에 좀 더 공부하기로!!

import "fmt"

  • import "fmt"를 선언함으로써 fmt 패키지를 사용할 수 있다. 이는 C언어의 입/출력 함수인 printf, scanf 함수같은 유사한 함수들을 형식화한 입/출력 함수를 사용할 수 있다는 뜻!
  • 쉽게 말해, 콘솔 입력 함수와 콘솔 출력 함수를 사용하기 위해서는 fmt패키지를 import 해야한다는 것!
  • PrintlnPrint 는 하나의 인자를 출력할 수 도 있고 여러 개의 인자를 콤마로 결합해 열거할 수 있다는 공통점이 있다.

Println

  • 개행 자동 추가!

Print

  • 개행을 하지 않는다! 문나열 (이중인용부호 " " 혹은 Back Quote)내에서 이스케이프 시퀀스인\n 을 입력해 개행!

코드

package main

import "fmt"

func main() {
	fmt.Println("안녕 난 훈이야")
	fmt.Println("나이는 와우")
	fmt.Println("반가워")

	n := 14
	var arr [5]int = [5]int{1, 2, 3, 4, 5} //구문은 길이가 5이고 값이 1, 2, 3, 4, 5인 정수 배열을 선
	fmt.Print("내 동생은", n, "살이야")
	fmt.Print(arr)
	fmt.Print(n, arr)
}

출력

안녕 난 훈이야
나이는 와우
반가워
내 동생은14살이야[1 2 3 4 5]14 [1 2 3 4 5]

코드

package main

import "fmt"

func main() {
	fmt.Print("안녕 난 훈이야")
	fmt.Print("오늘은 크로와상을 먹을거야\n") //개행을 위해 \n를 입력한다.
	fmt.Print("반가워")

	n := 14
	var arr [5]int = [5]int{1, 2, 3, 4, 5}
	fmt.Print("먹을 크로와상은", n, "개야")
	fmt.Print(arr)
	fmt.Print(n, arr)
}

출력

안녕 난 훈이야오늘은 크로와상을 먹을거야
반가워먹을 크로와상은14개야[1 2 3 4 5]14 [1 2 3 4 5]

Printf

  • 개발자가 포멧을 지정하여 원하는 형태로 출력할 때 사용!
  • 반드시 포멧을 지정해줘야 한다!!
    • 예를 들어 a:=5 일 때, fmt.Printf(a) 출력 불가능!
    • fmt.Printf("%d", a) 출력 가능!
  • C언어에서는 int arr[3] = {1, 2, 3}일 때 printf("%d", arr)이 불가능
  • Go언어에서는 var arr [3]int = [5]int{1, 2, 3}일 때 fmt.Printf("%d", arr)이 가능

    코드

package main
>
import "fmt"
>
func main() {
	age, name := 24, "길동"
>
	fmt.Printf("안녕 난 %s이야\n", name)
	fmt.Printf("나이는 %d살이야\n", age)
	fmt.Printf("반가워")
>
	n := 14
	var arr [5]int = [5]int{1, 2, 3, 4, 5}
>	
	fmt.Printf("내 동생은 %d살이야\n", n)
	fmt.Printf("%d \n", arr) //배열 한 번에 출력 가능
	fmt.Printf("%d %d", n, arr)
}

출력

안녕 난 훈이야
나이는 12345살이야
반가워내 동생은 1234살이야
[1 2 3 4 5] 
1234 [1 2 3 4 5]

서식문자의 종류와 그 의미

  • Printf함수를 사용하면서 포멧을 지정해줄 때 %d와 같은 문자를 사용!
  • 이는 값을 읿력하고 출력하는 데 있어서 서식을 지정하는 것이다.!
  • 앞에서 몰라서 한번 찾아봤는데 여기서도 다시한번 정리하고자 한다.
  • %t : bool
  • %b : 2진수 정수
  • %c : 문자
  • %d : 10진수 정수
  • %o : 8진수 정수
  • %x : 16진수 정수, 소문자
  • %X : 16진수 정수, 대문자
  • %f : 10진수 방식의 고정 소수점 실수
  • %F : 10진수 방식으 고정 소수점 실수
  • %e : 지수 표현 실수, e
  • %E : 지수 표현 실수, E
  • %g : 간단한 10진수 실수
  • %G : 간단한 10진수 실수
  • %s : 문자열
  • %p : 포인터
  • %U : 유니코드
  • %T : 타입
  • %v : 모든 형식
  • %#v : #을 이용해구분 할 수 있는 형식 표현
  • C언어에서는 %u%x등과 같은 부호의 여부에 따라 표현이 다른 서식문자들이 있다.
  • Go언어에서는 %v 문자를 이용해 변수 타입에 관계없이 출력할 수 있다.
  • 위에 정리되어 있는것은 정수는 정수타입으로, 실수는 실수 타입으로 출력할 수 있다는 것.
  • 포인터 서식문자인 %p는 값이 참조하는 주소값을 반환하는 서식문자.
  • 출력하는 형태를 따로 지정할 수 있다.
  • 원하는 출력 폭을 지정할 떄는 %(폭)d형식으로 입력, 지정한 출력 폭에 0을 채워넣고 싶으면 "%0(폭)d"형식으로 입력, 출력할 때 왼쪽부터 출력을 원한다면 "%-(폭)d"형식으로 입력
  • 출력할 소수점 이하 자리를 지정할 떄 "%.(자릿수)f"형식으로 지정

코드

package main

import "fmt"

func main() {
	fmt.Printf("5>6 = %t \n", 5 > 6)
	fmt.Printf("15는 2진수로 %b\n", 15)
	fmt.Printf("저의 성은 %c 입니다\n", '김')
	fmt.Printf("19는 10진수로 %d입니다.\n", 19)
	fmt.Printf("19는 8진수로 %o입니다.\n", 19)
	fmt.Printf("19는 16진수로 %x입니다.\n", 19)
	fmt.Printf("19는 16진수로 %X입니다.\n", 19)
	fmt.Printf("19.1234는 고정 소수점으로 %f입니다.\n", 19.1234)
	fmt.Printf("19.1234는 고정 소수점으로 %F입니다.\n", 19.1234)
	fmt.Printf("19.1234의 지수 표현은 %e입니다.\n", 19.1234)
	fmt.Printf("19.1234의 지수 표현은 %E입니다.\n", 19.1234)
	fmt.Printf("19.1234의 간단한 실수 표현은 %g입니다.\n", 19.1234) // 고정 소수점이 아님
	fmt.Printf("19.1234의 간단한 실수 표현은 %G입니다.\n", 19.1234) // 고정 소수점이 아님
	fmt.Printf("문자열: %s\n", "안녕하세요.")

	var num int = 50
	fmt.Printf("num은 %d입니다.\n", num)

	fmt.Printf("num의 메모리 주소 출력: %p\n", &num) //주솟값을 참조하기 위해 &를 쓴다.
	fmt.Printf("num의 유니코드 값은 %U입니다.\n", num)
	fmt.Printf("num의 타입은 %T입니다.\n", num)
	fmt.Printf("num의 타입은 %T입니다.\n", num)
	fmt.Printf("모든 형식으로 출력: %v, %v\n", 54.234, "Hello")
	fmt.Printf("num의 타입은 %T입니다.\n", num)
	fmt.Printf("7이 어떤 형식인지 표시: %d, %#o, %#x\n", 7, 7, 7) //8진수는 앞에 0이 붙고, 16진수는 0x가 붙습니다.
	fmt.Printf("네 칸 차지하는 13: %4d\n", 13)
	fmt.Printf("빈칸은 0으로 채우고 4칸 차지하는 13: %04d\n", 13)
	fmt.Printf("총 네 칸 차지하고 왼쪽으로 정렬되는 13과 15: %-4d%-4d\n", 13, 15)
	fmt.Printf("12.1234를 소수점 둘째 자리까지만 표시하면 %.2f입니다.\n", 12.1234)

}

출력

5>6 = false 
15는 2진수로 1111
저의 성은 김 입니다
19는 10진수로 19입니다.
19는 8진수로 23입니다.
19는 16진수로 13입니다.
19는 16진수로 13입니다.
19.1234는 고정 소수점으로 19.123400입니다.
19.1234는 고정 소수점으로 19.123400입니다.
19.1234의 지수 표현은 1.912340e+01입니다.
19.1234의 지수 표현은 1.912340E+01입니다.
19.1234의 간단한 실수 표현은 19.1234입니다.
19.1234의 간단한 실수 표현은 19.1234입니다.
문자열: 안녕하세요.
num은 50입니다.
num의 메모리 주소 출력: 0xc000122090
num의 유니코드 값은 U+0032입니다.
num의 타입은 int입니다.
num의 타입은 int입니다.
모든 형식으로 출력: 54.234, Hello
num의 타입은 int입니다.
7이 어떤 형식인지 표시: 7, 07, 0x7
네 칸 차지하는 13:   13
빈칸은 0으로 채우고 4칸 차지하는 13: 0013
총 네 칸 차지하고 왼쪽으로 정렬되는 13과 15: 13  15  
12.1234를 소수점 둘째 자리까지만 표시하면 12.12입니다.

한 눈에 끝내는 고랭 기초 !!

profile
싱숭생숭늉

0개의 댓글