◆ fmt 패키지의 표준 출력함수
▶ func Print(a ...interface{}) (n int, err error): 값을 그 자리에 출력(새 줄로 넘어가지 않음)
▶ func Println(a ...interfaced) (n int, err error): 값을 출력한 뒤 새 줄로 넘어감(개행)
▶ func Printf(format string, a ...interfaced) (n int, err error): 형식을 지정하여 값을 출력
package main
import "fmt"
func main() {
var num1 int = 10
var num2 float32 = 3.2
var num3 complex64 = 2.5 + 8.1i
var s string = "Hello, world!"
var b bool = true
var a []int = []int{1, 2, 3}
var m map[string]int = map[string]int{"Hello": 1}
var p *int = new(int)
type Data struct{ a, b int }
var data Data = Data{1, 2}
var i interface{} = 1
fmt.Printf("정수: %d\n", num1) // 정수: 10
fmt.Printf("실수: %f\n", num2) // 실수: 3.2
fmt.Printf("복소수: %f\n", num3) // 복소수: (2.500000+8.100000i)
fmt.Printf("문자열: %s\n", s) // 문자열: Hello, world!
fmt.Printf("불: %t\n", b) // 불: true
fmt.Printf("슬라이스: %v\n", a) // 슬라이스: [1 2 3]
fmt.Printf("맵: %v\n", m) // 맵: map[Hello:1]
fmt.Printf("포인터: %p\n", p) // 포인터: 0xc0820062d0 (메모리 주소)
fmt.Printf("구조체: %v\n", data) // 구조체: {1 2}
fmt.Printf("인터페이스: %v\n", i) // 인터페이스: 1
fmt.Printf("%d %f %s\n", num1, num2, s) // 10 3.200000 Hello, world!
}
▶ func Scan(a ...interfaced) (n int, err error): 콘솔에서 공백, 새 줄로 구분하여 입력을 받음
▶ func Scanln(a ...interfaced) (n int, err error): 콘솔에서 공백으로 구분하여 입력을 받음
▶ func Scanf(format string, a ...interface{}) (n int, err error): 콘솔에서 형식을 지정하여 입력을 받음
▶ 입력받기
package main
import "fmt"
func main() {
var num1, num2 int
n, _ := fmt.Scanf("%d,%d", &num1, &num2) // 정수형으로 형식을 지정하여 입력을 받음
fmt.Println("입력 개수:", n)
fmt.Println(num1, num2)
}
◆ 유니코드 함수 - unicode 패키지
▶ func ls(rangeTab *RangeTable, r rune) bool: 문자가 지정한 범위 테이블에 포함되는지 확인
▶ func ln(r rune, ranges ...*RangeTable) bool:문자가 여러 범위 테이블 중에 포함되는지 확인
▶ func lsGraphic(r rune) bool: 값이 화면에 표시될 수 있는지 확인
▶ func lsLetter(r rune) bool: 값이 문자인지 확인
▶ func lsDigit(r rune) bool: 값이 숫자인지 확인
▶ func lsControl(r rune) bool: 값이 제어 문자인지 확인
▶ func lsMark(r rune) bool: 값이 마크인지 확인
▶ func lsPrint(r rune) bool: 값이 Go 언어에서 출력할 수 있는지 확인
▶ func lsPunct(r rune) bool: 값이 문장 부호인지 확인
▶ func lsSpace(r rune) bool: 값이 공백인지 확인
▶ func lsSymbol(r rune) bool: 값이 심볼인지 확인
▶ func lsllpper(r rune) bool: 값이 대문자인지 확인
▶ func lsLower(r rune) bool: 값이 소문자인지 확인
▶ unicode.Latin: 라틴 문자, 로마자, 영문자
▶ unicode.Hangul: 한글
▶ unicode.Han: 한자
▶ unicode.Hiragana, unicode.Katakana: 일본어 히라가나, 카타카나
package main
import (
"fmt"
"unicode"
)
func main() {
var r1 rune = '한'
fmt.Println(unicode.Is(unicode.Hangul, r1)) // true: r1은 한글이므로 true
fmt.Println(unicode.Is(unicode.Latin, r1)) // false: r1은 라틴 문자가 아님
var r2 rune = '漢'
fmt.Println(unicode.Is(unicode.Han, r2)) // true: r2는 한자이므로 true
fmt.Println(unicode.Is(unicode.Hangul, r2)) // false: r2는 한글이 아님
var r3 rune = 'a'
fmt.Println(unicode.Is(unicode.Latin, r3)) // true: r3은 라틴 문자이므로 true
fmt.Println(unicode.Is(unicode.Hangul, r3)) // false: r3은 한글이 아님
fmt.Println(unicode.In(r1, unicode.Latin, unicode.Han, unicode.Hangul)) // true
}
◆ unicode / utf8 패키지
▶ func RuneLen(r rune) int: 문자의 바이트 수를 구함
▶ func RuneCountlnString(s string) (n int): 문자열의 실제 길이를 구함
▶ func DecodeRune(p []byte) (r rune, size int): byte 슬라이스에서 첫 글자를 디코딩함
▶ func DecodeLastRune(p []byte) (r rune, size int): byte 슬라이스에서 마지막 글자를 디코딩함
▶ func DecodeRunelnString(s string) (r rune, size int): 문자열에서 첫 글자를 디코딩함
▶ func DecodeLastRunelnString(s string) (r rune, size int): 문자열에서 마지막 글자를 디코딩함
▶ func Valid(p [ ]byte) bool: byte 슬라이스가 UTF-80| 맞는지 확인
▶ func ValidRune(r rune) bool: rune 변수에 저장된 값이 UTF-80| 맞는지 확인
▶ func ValidString(s string) bool:문자열이 UTF-80| 맞는지 확인
◆ 디코딩
package main
import (
"fmt"
"unicode/utf8"
)
func main() {
b := []byte("조이(joylucky)")
r, size := utf8.DecodeRune(b)
fmt.Printf("%c %d\n", r, size)
r, size = utf8.DecodeRune(b[3:])
fmt.Printf("%c %d\n", r, size)
r, size = utf8.DecodeLastRune(b)
fmt.Printf("%c %d\n", r, size)
r, size = utf8.DecodeLastRune(b[:len(b)-3])
fmt.Printf("%c %d\n", r, size)
}
'IT 초보코딩의 세계 > Go 언어' 카테고리의 다른 글
Go언어의 출력함수 IO, 파일 입출력, ioutil패키지 3장 (2) | 2023.04.12 |
---|---|
Go언어의 출력함수 IO, 문자열 처리 및 조작, 정규식 2장 (7) | 2023.04.11 |
Go언어의 Package (6) | 2023.04.08 |
Go언어의 WaitGroup 와 원자적 연산법 4장 (12) | 2023.04.05 |
Go언어의 조건변수, Once 사용법, Pool 구조체 3장 (0) | 2023.04.05 |
댓글