본문 바로가기

Programming3

[golang] interface와 reflect, 그리고 OOP golang에는 type 문이 있다. 속성들의 집합을 표현하는 struct와 행위의 집합을 표현하는 interface를 정의할 때 주로 쓰인다. struct는 Custom Data Type을 정의하며 interface는 해당 type이 정의해야하는 함수 원형을 정의한다. #interface golang에는 전통적인 class, object, 상속 개념이 정의되어 있지 않은 대신 struct와 interface라는 기능으로 OOP를 지원한다. 기존 class는 사용자 정의 타입을 정의하는 struct로 표현되는데, 속성(==field)과 행위(==method)를 함께 표현하지 않는다. struct는 필드만을 가지게, method는 함수 이름 '앞'에 선언되는 매개 변수인 receiver 인수를 받는 fun.. 2021. 3. 28.
go map 초기화 Map in golang 키(Key)에 대응하는 값(Value)을 신속히 찾는 해시테이블(Hash table)을 구현한 자료구조 format : map[Key]Value # 선언 var results map[string]string map은 reference 타입이므로 nil 존재 이 상태의 map을 "Nil Map" 이라함 panic: assignment to entry in nil map goroutine 1 [running]: main.main() /Users/larva/go/src/go-study/main.go:8 +0x4f exit status 2 초기화 하지 않은 nil map을 사용하려고 하면 panic 발생 panic : 컴파일러가 찾아내지 못하는 error nil map에는 어떠한 값도 .. 2020. 10. 18.
[golang/err] import cycle not allowed #현상 Cross-refering packages -> 각 패키지들이 상호 참조 (순환 종속) package 간 종속성이 생겨버리면 단위 테스트 하기도 어려워지고 한 package가 변경 될 때마다 종속성을 가지는 package까지 같이 컴파일 돼야하므로 비용 증가함 각 개체가 다른 개체를 유지하기 때문에 memory leak의 위험성도 높아짐 (+) package는 compile의 단위가 되는데 go는 빠른 compile 좋아하는 성향 탓인지 import cycle을 아예 막아버림 뭐 애초에 좋은 모델도 아니니까 ... #예제코드 욕심이 과하면 화를 부르는 법 대애충 A에서도 B 출력하고 싶고 B에서도 A를 출력하고 싶어하는 상황이라고 가정해보자 [ pkg_a.go ] package A import (.. 2019. 4. 6.