개발 기술 블로그

Java Optional 개념 및 사용법

개발을 하다 보면 NullPointException(NPE)을 만나게 된다. 가장 많이 발생하는 에러 중 하나라고 하는데, 이를 피하기 위해선 null을 체크하는 로직이 추가되어야 한다.

Java 람다식 이중콜론 연산자 (메소드 참조 표현식)

콜론 두개 (:: – 이중 콜론 연산자)의 정식 명칭은 **메소드 참조 표현식(method reference expression)**이며, 람다식에서 파라미터를 중복해서 쓰기 싫을 때 사용합니다.

사용 방법은 [인스턴스]::[메소드명(또는 new)]으로 사용합니다. 스태틱 메소드인 경우 인스턴스 대신 클래스 이름으로 사용할 수 있습니다.

Go defer 지연함수

  • defer를 호출한 함수가 종료되기 직전에 호출됨
  • 타 언어의 finally 문과 비슷
  • 주로 리소스 반환 등에 사용
  • Last In First Out (LIFO)

Go 맵(Map)

  • 해시테이블, 딕셔너리(파이썬) — Key-Value로 자료 저장
  • 레퍼런스 타입 (참조 값 전달)
  • 비교 연산자 사용 불가 (참조 타입이므로)
  • 키(Key)로 참조 타입 사용 불가, 값(Value)으로 모든 타입 사용 가능
  • 순서 없음

Go 배열

  • 용량(cap)과 길이(len)가 항상 같다
  • 길이 고정 (vs 슬라이스: 길이 가변)
  • 값 타입 — 복사 전달 (vs 슬라이스: 참조 타입)
  • 전체 비교연산자 사용 가능 (vs 슬라이스: 불가)
  • 대부분의 경우 슬라이스를 사용

Go 변수의 선언

  • 패키지 내부 사용: 소문자로 시작
    • ex) number, name
  • 패키지 외부 사용: 대문자로 시작
    • ex) Number, Name

Go 사용자 정의 타입 - struct

Go는 클래스와 상속 개념이 없다. 대신 구조체(struct) 로 객체 지향 타입을 정의하고, 구조체와 메서드를 연결하여 클래스처럼 사용한다.

  • 상태와 메소드를 분리해서 정의 (결합성 없음)
  • 사용자 정의 타입: 구조체, 인터페이스, 기본타입, 함수

Go 사용자 정의 타입 - 값 전달 vs 참조 전달

함수는 기본적으로 값 호출 → 변수의 값이 복사 후 내부 전달 (원본 수정 ❌)

맵, 슬라이스 등은 참조 전달. 구조체도 포인터를 활용하면 메서드 내에서 원본 수정 가능.