반응형
표준 입출력
프로그램과 사용자는 입력 / 출력 을 통해 상호작용을 한다 이는 운영체제가 제공하는 표준 입출력스트림(Standard I/O)를 통해 이루어 진다. Go언어에서는 fmt 패키지를 이용해서 처리할 수 있다.
표준 출력 3가지
표준 출력에는 총 3가지 함수가 있다.
- Print() : 함수 입력값들을 출력한다
- Println() : 함수 입력값들을 출력하고 개행(\n)한다
- Printf() : format에 맞도록 입력값을 출력한다.
package main
import "fmt"
func main() {
var a int = 10
b := 20
var f float64 = 327999.8297
fmt.Println("a : ", a)
fmt.Print("b : ", b)
fmt.Printf("a : %d b : %v f : %f", a, b, f)
}
Printf()의 사용된 서식지정자 몇가지를 살펴보자
- %v : 데이터 타입에 맞춰 기본 형태 출력
- %d : 정수
- %f : 실수형
표준 입력
표준 입력은 입력장치에서 데이터를 가져온다. 표준 입력을 제공하는 함수에는 아래와 같은 것들이 있다.
- Scan() : 표준 입력에서 값을 입력받는다
- Scanf() : 표준 입력에서 서식형태로 값을 입력받는다
- Scanln() : 표준 입력에서 한줄을 읽어 값을 입력받는다.
Scan()
Scan()은 값을 채워 넣을 변수들의 메모리 주소를 인수로 받는다. 함수 반환값은 성공적으로 입력한 개수와 입력 실패시 에러를 반환한다
package main
import "fmt"
func main() {
var a, b int
n, err := fmt.Scan(&a, &b)
if err != nil {
fmt.Println(n, err)
} else {
fmt.Println(n, err)
}
}
/*
3 4
2 <nil>
Hello 4
0 expected integer
*/
Scanf()
Scanf()는 서식에 맞춘 입력을 받는다
package main
import "fmt"
func main() {
var a, b int
n, err := fmt.Scanf("%d %d\n", &a, &b)
if err != nil {
fmt.Println(n, err)
} else {
fmt.Println(n, err)
}
}
/*
3 4
2 <nil>
Hello 4
0 expected integer
*/
Scanf()처럼 서식에 맞춰 입력하는게 쉽지 않기때문에 Scan()혹은 Scanln()을 사용하는것이 좋다
Scanln()
Scanln()은 한줄을 입력받아 인수로 들어온 변수 메모리 주소에 값을 채운다. Scnaln()은 엔터키로 입력을 종료해야한다는 특징이 있다.
package main
import "fmt"
func main() {
var a, b int
n, err := fmt.Scanln(&a, &b)
if err != nil {
fmt.Println(n, err)
} else {
fmt.Println(n, err)
}
}
/*
3 4
2 <nil>
Hello 4
0 expected integer
*/
반응형