전체 글 (23) 썸네일형 리스트형 [GO 마스터하기] 07-리플렉션과 인터페이스 타입 메소드 타입 메소드란 특수한 수신자 인수를 받는 함수다. 매개변수는 함수와 여기에 추가한 매개변수의 타입을 연결한다. 이러한 매개변수를 메소드의 수신자라 부른다. func (f *File) Close() error { if err := f.checkValid("close"); err != nil { return err } return f.file.close() } Close()는 타입 메소드다. f 매개변수가 메소드의 수신자다. 수신자의 작동 과정을 oop용어로 표현하면 오브젝트에 메세지를 보냈다고 말한다. package main import "fmt" type twoInts struct { X int64 Y int64 } func regularFunction(a, b twoInts) twoInts.. [GO 마스터하기] 06-Go Package Go Package Go에서 모든 것은 패키지 형태로 제공된다. 패키지는 Go로 작성된 소스 파일로, package 키워드 뒤에 패키지 이름을 적은 문장으로 시작된다. 패키지는 주로 서로 관련된 함수나 변수나 상수끼리 그룹으로 묶는데 활용된다. 주의할 점은 main 패키지를 제외한 다른 모든 패키지는 독립적인 프로그램이 아니여서 실행 파일 형태로 컴파일할 수 없다. 익명 함수 익명 함수는 따로 이름을 붙이지 않고 코드 안에서 정의한다. Go에서 함수는 익명 함수를 리턴할 수도, 매개변수로 받을 수도 있다. 또한 익명 함수를 변수에 연결할 수 있다. 함수형 프로그래밍에서는 이러한 익명 하수를 클로저라고 부른다. 리턴값에 이름 붙이기 이름있는 리턴값으로 선언된 함수에서 return문에 아무런 인수도 지정하지.. [GO 마스터하기] 05-Go 자료구조 이진트리 이진트리는 각 노드마다 최대 두개의 자식 노드를 가진다. 루트부터 리프까지의 최대 거리와 최소 거리의 차이가 1 이하이면 균형이 잡혔다고 표현한다. 균형을 잡는 작업은 다소 까다롭고 속도도 느리기 때문에, 노드의 수가 많을수록 균형을 잡은 상태로 만들기 시작하는 것이 좋다. package main import ( "fmt" "math/rand" "time" ) type Tree struct { Left *Tree Value int Right *Tree } func traverse(t *Tree) { if t == nil { return } traverse(t.Left) fmt.Print(t.Value, " ") traverse(t.Right) } func create(n int) *Tree { .. 이전 1 2 3 4 5 ··· 8 다음