- 프로그램을 입출력하는 방법은 다양하다. 그 중에서 표준이 되는 입출력이란?, 값이 들어오고 나가는 통로는 변함이 없기 때문에 그걸 표준입출력이라 함 (입출력이 되는 통로)
import "fmt"
fmt.Printf("a: %d b: %d f: %f\n", a, b, f )
- % 뒤로 d, d, f에 a, b, f가 들어간다. d는 정수타입만 가능하고 f는 실수타입만 가능하다
- 위 형식들을 서식문자라고 한다.
- %d -> 10진수 정숫값으로 출력 (정수타입만 가능)
- %b -> 2진수로 출력
- %f -> 지수 형태가 아닌 실숫값을 그대로 출력(실수타입만 가능) ; 소숫점 6자리까지 표현
- %v -> 뭐쓸지 모를때 쓸 마법의 서식문자; 데이터 타입에 맞춰서 기본 형태로 출력함
- %s -> 문자열을 출력한다
![](https://velog.velcdn.com/images/lynn_dev_python/post/2daea90e-74f4-4b02-b579-6d7fe1d1f8e8/image.png)
fmt.Println("a:", a, "b:", b, "f:", f) // 지수표현됨
fmt.Printf("a: %d b:%d f:%f\n", a, b, f) // 실수표현됨
실수 소수점 이하 자리수
- %f: 실수를 출력한다. 예를들어 %5.2f는 최소 너비 5칸에 소수점 이하 값 2개를 출력한다.
- %g: 실수를 정수부와 소수점 이하 숫자를 포함해 출력 숫자를 제한. 만약 정해진 길이가 정수부 숫자를 모두 표현 하지 못할 경우 지수 표현으로 전환.
\n : 줄 바꿈
\t : 공백 삽입
// : / 출력
/" : " 출력
func main() {
var a int
var b int
n, err := fmt.Scanln(&a, &b) // a, b 변수의 주소값 ( &)
if err != nil {
fmt.Println(n, err)
}else {
fmt.Println(n,a,b)
}
}
n, err := fmt.Scanln(&a, &b)
a, b 에 &가 붙어서 주소값이 쓰인것에 대해서.
a, b 변수가 쓰였으니까 주소가 자동으로 들어가지 않냐. 고에서는
그렇게 안한다. 인자로 쓰이면 우변의 형태로 쓰이는데 ..
우변의 형태로 쓰인다는게 뭔말이냐면 어떤 변수가 좌측에 쓰이면 공간으로 우변에 쓰이면 값으로 쓰이는데, a = 1, sum = a ; 이걸 예시로 들면 a가 첫번째는 1을 담는 메모리 공간으로 쓰인건데 두번째는 sum이라는 메모리 공간에 a라는 값이 담긴 것 처럼.
Go에서는 인자가 우변의 형태로 동작, 항상 값이 들어간다는것. 그래서 주소값을 넣어주기위해서는 '&'를 쓴다.
Scanln() 함수를 통해 값을 입력받으면 표준 입력 스트림 (; 입력 버퍼) 에 값이 담긴다. 이 때 값은 'FIFO'구조로 담긴다. 'Hello' 입력시 'olleH' 로 담긴다. "H" 부터 읽어서 숫자 인지 아닌지 판단. 입력 실패시 입력 버퍼를 비우는 작업을 해줘야 함.
키보드로 부터 어떤 값을 입력받을 때는 버퍼를 비워줘야 한다는 것을 기억하자
std.ReadString('') : (표준 입력값을 받아 읽어 오는데,) 괄호 안 문자가 나올때 까지 읽어 와라
찾고자 하는 값이 나올때 까지 버퍼를 비우려고 사용함.
출처: Tucker의 Go 언어 프로그래밍