go언어
글 수 53
2015.05.22 17:43:18 (*.134.169.166)
8620
go 로 작성된 소스는 눈으로 읽기에 쉽다.
직접 작성하려고 하면 초보자가 난관에 부딪히는 부분이 interface 부분이다.
필자도 초보 ^^
아래의 소스를 보자
const jsonStream = `
{"Name": "Ed", "Text": "Knock knock."}
{"Name": "Sam", "Text": "Go fmt who?"}
{"Name": "Ed", "Text": "Go fmt yourself!"}
`
dec := json.NewDecoder( strings.NewReader(jsonStream) )
위에서 json.NewDecoder 함수는 인자로 io.Reader 를 받는다.
이것은 아래와 같이 정의 되어 있다.
type Reader
type Reader interface { Read(p []byte) (n int, err error) }
인터페이스 (interface) 란 것이다.
결론을 말하자면
위함수(json.NewDecoder) 인자로는 클래스(?)중에 io.Reader 와 같은 함수의 형태를 맴버(?)로 가지고 있는 클래스면 된다는 것이다.
그런 클래스는 여럿있다.
위에 사용된 strings 클래스와 os 클래스등... 아주 많다.
Package strings
-- 중략 ---
Package os
-- 중략 ---
go 언어 사용 할 수록 감탄스럽다.