포인터 : 포인터 메모리 주소포인터변수 :메모리 주소값인스턴스 : 할당된 메모리의 실체포인터사용 이유포인터를 사용하면 메모리 영역에 직접 접근하여 인스턴스 조작 가능어디서든 인스턴스에 접근 가능메모리 중복으로 할당하는 경우를 최소화불필요한 메모리 낭비 막을수 잇음
디자인 패턴 중 하나정의 : 객체의 인스턴스가 오직 1개만 생성 되는 패턴예를 들어 DB 인스턴스나 Logger과 같은 인스턴스 가 해당하나의 인스턴스만 갖도록 하는 동시에 인스턴스에 대한 전역 접근 지점을 제공한다구현 방법1Mutex 사용 구현 방법 2sync.Onc
unix 시그널 처리 방안이 필요sigterm signal을 받았을 때 적절하게 서버를 종료해주는 등커맨드 라인에서 sigint를 받았을때 등등
todo 바이너리가 백그라운드에서 계속 실행되도록 daemon으로 개발해야함 how 예를 들어 bash에서 파일을 run 하고 bash를 종료시키면 프로그램도 종료된다 bash를 종료하더라도 백그라운드에서 계속 동작하게 하려면 프로세스를 제어하고 있는 터미널로부터 분
os.Create() 를 이용하여 파일 생성 후 fmt.Fprintf() 를 사용하여 쓰는 방식os.Create() 를 이용하여 파일 생성 후 f.WriteString(), f.Write() 를 사용하여 쓰는 방식os.Create() 를 이용하여 파일 생성 후 bufi
설정 관련 정보를 전달하는데 사용되는 방법환경변수의 키- 값 쌍으로 설정을 하는데 os.Setenv를 이용한다이미 맵핑된 값은 os.Getenv를 이용해서 가져온다os.Environ 함수를 이용하여 환경 변수로 설정된 모든 키-값 쌍의 리스트를 볼수 있다key = va
표준입출력 스탠다드 스트림 : 프로그램과 터미널 사이에 미리 연결된 i/o 커뮤니케이션 채널= stdin stdout stderr 이런 애들임stdin -> input device(keyboard)로 들어오는 text들stdout ->프로그램으로부터 나가는 텍스트들이
go에서는 io 패키지의 io.Reader, io.Writer 인터페이를 이용하여 I/O stream을 다루는 방법을 제공한다Reader InterfaceReadFullioutil.ReadAllWriter Interfaceduplicate writesMultiWrite
빈구조체들을 채널에 던지는 경우들을 볼수 있다done <- struct{}{}이런식으로놀랍게도 struct{}{} 사이즈가 0 임빈구조체는 주소값 조차 없으며 사이즈는 0이다값 할당 다체가 일어나지 않는 변수값을 할당하고 할당하지않고의 퍼포먼스 차이는 2배정도 날
대기 그룹대기그룹 -> 고루틴이 모두 끝날때까지 기다림sync.WaitGroupfunc(wg \*WaitGroup) Add(delta int) : 대기 그룹에 고루틴 개수 추가func(wg \*WaitGroup) Done() : 대기 그룹이 끝남을 알려줄때 사용func
go에서 context는 작업 명세서 같은 역할작업 가능 시간작업 취소 등의 작업 흐름 제어 하는데 사용withCancel컨텍스트가 cancel 혹은 timeout으로 종료되면 컨텍스트의 done이 호출됨ctx, cancel := context.WithCancel(co