GO 기초 구조
golang의 기본 구조! 패키지 하위의, structure와 메소드
이재룡 Jun 26, 2025
[ 1. Package ]
Go에서 package는
- (1) namespace의 역할 : 다른 패키지에서
greetings.Hello()처럼 접근 ⇒ JAVA의 package와 유사
- (2) 접근 제어: Go에서는 첫 글자가 (대문자/소문자) = (public/private) ⇒ 자바의 class 선언과 유사
함수/구조체/인터페이스/메서드 등 모두 이름 첫 글자가 대문자면 public, 소문자면 non-public
- (3) 파일 그룹화: 관련 함수나 struct들을 묶어 관리
import 이후에 해당 package의 init( ) 부분이 자동으로 실행!
[ 2. Struct ]
OOP의 역할을 하지만 오로지 Field만 가지는 Struct
- 선언은 type으로
- 값 타입 [ person ]
- 포인터 [ *person, &person, new(person) ]
| 코드 | 타입 | 특징 | 사용처 |
p := person{} | 값 | 기본 값( "", 0)으로 초기화 | 기본 선언 |
var p person | 값 | 기본 값( "", 0)으로 초기화 | 기본 선언 |
p := person{"A", 1} | 값 | 일반적 사용 방식 | 값을 수정, 원본 유지 |
p := new(person) | 포인터 | 포인터 리턴, 내부 필드 ( "", 0) | 포인터 선언 |
p := &person{"A", 1} | 포인터 | 포인터 리턴 | 여러 곳에서 수정=원본 수정 |
p1 = person{...}은 이미 person이 선언 되어야 사용 가능
p2 := person{...}은 person선언과 동시에 p2객체 생성
p2 := person{...}은 person선언과 동시에 p2객체 생성
[ 3. Method ]
Go에서는 함수와 메소드가 다르다!
함수(function)
- struct에 종속되지 않음
- 독립적으로 사용
- 호출 : hello("Tom")
메소드 (method)
- func (<var_name> struct_type) <func_name>() <return_type> { }
- 하나의 struct에 종속
- Receiver 필수 ⇒ (<var_name> struct_type) 부분
- Receiver가 값이면 읽기 (http의 get 느낌)
- Receiver가 포인터면 쓰기 (http의 post 느낌)
- 호출 : rect.area( )처럼 struct 명시