- 책 또는 웹사이트의 내용을 복제하여 다른 곳에 게시하는 것을 금지합니다.
- 책 또는 웹사이트의 내용을 발췌, 요약하여 강의 자료, 발표 자료, 블로그 포스팅 등으로 만드는 것을 금지합니다.
문자열 입출력 함수 사용하기
이재홍 http://www.pyrasis.com 2014.12.17 ~ 2015.02.07
표준 출력(stdout), 표준 입력(stdin)뿐만 아니라 변수를 문자열로 만들거나 문자열에서 변수로 값을 가져올 수 있습니다.
다음은 fmt 패키지에서 제공하는 문자열 입출력 함수입니다.
- func Sprint(a ...interface{}) string: 값을 그대로 문자열로 만듦
- func Sprintln(a ...interface{}) string: 값을 그대로 문자열로 만든 뒤 문자열 끝에 개행 문자(\n)를 붙임
- func Sprintf(format string, a ...interface{}) string: 형식을 지정하여 문자열을 만듦
- func Sscan(str string, a ...interface{}) (n int, err error): 공백, 개행 문자로 구분된 문자열에서 입력을 받음
- func Sscanln(str string, a ...interface{}) (n int, err error): 공백으로 구분된 문자열에서 입력을 받음
- func Sscanf(str string, format string, a ...interface{}) (n int, err error): 문자열에서 형식을 지정하여 입력을 받음
먼저 변수 또는 값을 콘솔(터미널)로 출력하지 않고 문자열을 만들어보겠습니다.
package main
import "fmt"
func main() {
var s1 string
s1 = fmt.Sprint(1, 1.1, "Hello, world!") // 값을 그대로 문자열로 만듦
fmt.Print(s1)
var s2 string
s2 = fmt.Sprintln(1, 1.1, "Hello, world!") // 값을 그대로 문자열로 만든 뒤 문자열 끝에 개행 문자(\n)를 붙임
fmt.Print(s2)
var s3 string
s3 = fmt.Sprintf("%d %f %s\n", 1, 1.1, "Hello, world!") // 형식을 지정하여 문자열로 만듦
fmt.Print(s3)
}
1 1.1Hello, world!1 1.1 Hello, world!
1 1.100000 Hello, world!
fmt.Sprint 함수는 주어진 값을 그대로 문자열로 만들어서 리턴합니다. 마찬가지로 fmt.Sprintln 함수도 값으로 문자열을 만들지만 문자열 끝에 개행 문자(\n)을 넣어줍니다.
fmt.Sprintf 함수는 첫 번째 매개변수에 출력할 형식(format)을 지정해줍니다. 두 번째 매개변수부터는 출력할 값 또는 변수를 나열합니다. 여기서 % (형식 지정자)로 값을 출력할 위치와 타입을 정하며 %의 개수와 변수 또는 값의 개수가 같아야 합니다. 그리고 출력 포맷에 맞게 문자열을 만들어서 리턴합니다.
반대로 문자열에서 입력을 받을 수도 있습니다.
package main
import "fmt"
func main() {
var num1 int
var num2 float32
var s string
input1 := "1\n1.1\nHello"
n, _ := fmt.Sscan(input1, &num1, &num2, &s) // 공백, 개행 문자로 구분된 문자열에서 입력을 받음
fmt.Println("입력 개수:", n) // 입력 개수: 3
fmt.Println(num1, num2, s) // 1 1.1 Hello
input2 := "1 1.1 Hello"
n, _ = fmt.Sscanln(input2, &num1, &num2, &s) // 공백으로 구분된 문자열에서 입력을 받음
fmt.Println("입력 개수:", n) // 입력 개수: 3
fmt.Println(num1, num2, s) // 1 1.1 Hello
input3 := "1,1.1,Hello"
n, _ = fmt.Sscanf(input3, "%d,%f,%s", &num1, &num2, &s) // 문자열에서 형식을 지정하여 입력을 받음
fmt.Println("입력 개수:", n) // 입력 개수: 3
fmt.Println(num1, num2, s) // 1 1.1 Hello
}
입력 개수: 3
1 1.1 Hello
입력 개수: 3
1 1.1 Hello
입력 개수: 3
1 1.1 Hello
fmt.Sscan 함수는 공백이나 개행 문자(\n)로 구분된 문자열에서 입력을 받고, fmt.Sscanln 함수는 공백으로 구분된 문자열에서 입력을 받습니다. 첫 번째 매개변수에 문자열을 넣고, 두 번째 매개변수부터는 입력받을 변수를 레퍼런스 형식으로 넣습니다.
fmt.Sscanf 함수는 설정한 형식대로 문자열에서 입력을 받습니다. 첫 번째 매개변수에 문자열을 넣고, 두 번째 매개변수에 형식을 설정합니다. 그리고 세 번째 매개변수부터는 입력받을 변수를 레퍼런스 형식으로 넣습니다. 여기서는 포맷을 %d,%f,%s로 설정했으므로 , (콤마)로 구분된 값을 변수에 저장합니다.
저작권 안내
이 웹사이트에 게시된 모든 글의 무단 복제 및 도용을 금지합니다.- 블로그, 게시판 등에 퍼가는 것을 금지합니다.
- 비공개 포스트에 퍼가는 것을 금지합니다.
- 글 내용, 그림을 발췌 및 요약하는 것을 금지합니다.
- 링크 및 SNS 공유는 허용합니다.