인터페이스 객체의 동작을 표현하는 것 내부 구현이 아닌 동작 방식만을 표현 추상 메커니즘을 제공 매개변수로 사용되면 '값이 무엇을 할 수 있는지'에 집중할 수 있음 덕 타이핑 방식: 변수와 메서드의 집합이 객체의 타입을 결정 인터페이스 정의 type 인터페이스명 interface { 메서드1(매개변수) 반환타입 메서드2(매개변수) 반환타입 } 함수 시그니처가 같은 메서드를 가진 타입은 인터페이스로 사용 가능하다. shaper 인터페이스는 area 메서드를 가지고 있다. decribe는 shaper 인터페이스를 받아 shaper의 area 메서드의 리턴값을 출력한다. main에서는 rect 구조체를 만들고 descirbe 함수를 실행한다. rect 구조체와 sharper 인터페이스는 연결 고리가 없다. r..
구조체 속성을 가진 실제 엔티티를 표현한 것이다 이름과 필드를 사용하여 속성들을 표현할 수 있다. 구조체 정의 type 타입명1 struct { 필드명1 필드타입1 필드명2 필드타입2 ... } type 타입명2 struct { 필드명1-1, 필드명1-2 필드타입1 필드명2 필드타입2 ... } type 타입명3 struct { 필드명1, 필드명2 필드타입 } 내장 데이터 타입과 더불어 인터페이스, 함수 signature, 다른 구조체도 필드로 지정 가능하다. 필드 타입이 동일하면 묶어서 타입명2처럼 타입을 지정할 수 있다. 모든 필드의 타입이 동일하면 타입명3처럼 한 줄로 필드들을 표기할 수 있다. 생성 & 초기화 타입 {초기값} // 1. 구조체 리터럴 &타입 {초깃값} // 2. 구조체 리터럴의 포..
의존 관계 주입은 4가지 방법이 있다 생성자 주입 setter 주입 필드 주입 일반 메서드 주입 생성자 주입 생성자 주입은 생성자를 통해 의존관계를 주입 받아 필드에 할당하는 방법이다 생성자 호출시점에 1번만 호출되며 불변, 필수 의존관계에 사용된다 만약 스프링 빈에 해당하는 클래스일 경우 생성자가 1개만 있다면 @Autowired을 생략해도 자동적으로 의존 관계가 주입된다 setter 주입 setter 메서드를 사용하여 필드의 값을 변경하는 방식으로 의존 관계를 주입하는 방법이다 선택, 변경 가능성이 있는 의존 관계에 사용한다 setter 메서드는 자바빈 규칙에 따라 다음과 같이 작성한다. 메서드 이름은 set으로 시작한다 set뒤에 첫 글자는 대문자로 시작한다 -> age를 설정하는 setter는 s..
SOLID 객체 지향 프로그래밍 및 설계의 다섯 가지 기본 원칙 SRP (단일 책임 원칙, Single Responsibility Principle) 모든 클래스는 하나의 책임만 가지며, 클래스는 그 책임을 완전히 캡슐화해야 한다 책임은 변경하려는 이유이다. 어떤 클래스나 모듈은 변경하려는 단 하나의 이유만을 가져야 한다. 문서를 작성하고 출력하는 모듈의 경우, 문서를 변경하는 경우와 문서를 흑백이나 출력하는 경우 이렇게 변경될 수 있다. 단일 책임 원칙에 의하면 이 경우는 두 책임이 있기 때문에 문서를 작성하는 모듈과 출력하는 모듈로 나눠야 한다. 클래스를 한 관심사에 집중하게 하면, 편집 과정에 변경이 일어나도 같은 클래스에 있는 출력 코드에 영향을 미칠 영향이 감소한다. OCP (개방-폐쇄 원칙, ..
Go는 상태를 표현하는 '타입'과 동작을 표현하는 '메서드'를 분리하여 정의한다. 타입과 메서드의 명확한 연결고리는 없다. 사용자 정의 타입과 메서드 사용자 정의 타입 기본 타입 외의 사용자가 직접 정의한 타입 일반적으로 구조체와 인터페이스를 사용자 정의 타입으로 사용한다 기본 타입이나함수 signature을 사용자 정의 타입으로 사용하기도 한다 메서드 사용자 정의 타입과 함수를 바인딩시키는 방식으로 정의한 것 func (리시버명 리시버타입) 메서드명 (매개변수) (반환값 혹은 반환타입) { ... } 함수를 정의하는 것에 리시버가 추가되었다. 메서드를 호출시 리시버 값이 메서드에 전달되어 메서드에서 리시버 값을 사용할 수 있다. 리시버 (receiver) 타입과 동작을 연결하기 위해서 사용 Item은..
Go에서는 포인터와 참조 타입(슬라이스, 맵, 채널, 함수, 메서드)을 모두 제공한다. 참조 타입은 데이터를 직접 가지지 않고 데이터의 메모리 공간을 가리킨다. 포인터는 값에 접근 하는 수단이고 주소값을 직접 변경할 수 없다. 포인터 생성 & 초기화 포인터 변수는 *타입 방식으로 선언한다. 64비트 머신에서 포인터는 16바이트, 32비트 머신에서는 8바이트 크기를 가진다. 포인터를 생성하는 방식 1. 주소 연산자 &로 메모리 주소를 포인터 변수에 할당 2. new() 함수로 초기화한 메모리를 포인터 변수에 할당 &을 사용하여 포인터 생성 var p *int // 포인터 생성 value := 1024 p = &value // 메모리 주소 할당 p에는 주소 값이 저장되어 있다. 주소 값에 있는 값을 가져오기..
map 키와 값의 쌍으로 이루어진 형태의 자료구조 💡 key 값은 비교 연산자 (== , !=)를 사용하여 값을 비교할 수 있어야 한다. 💡 value 값은 모두 가능하다. key 값으로 가능한 값 내장 타입: int, float, string ... 내장 타입 기반의 데이터: 배열, struct, 사용자 정의 타입, 포인터 💡 슬라이스와 맵 같은 참조타입은 비교 연산자를 사용할 수 없기 때문에 키로 사용 불가능하다 💡 배열은 문자열로 변환하여 키로 사용할 수 있다 생성 & 초기화 map을 생성하는 방법 map[키타입]값타입{} map[키타입]값타입{초기값} make(map[키타입]값타입, 초기용량) make(map[키타입]값타입) 값 접근 키로 값에 접근을 하기 위해서는 배열 및 슬라이스와 마찬가지로 ..
Go는 데이터의 시퀀스를 다루기 위해서 배열과 슬라이스 타입을 사용할 수 있다. 배열: 길이가 고정된 시퀀스 슬라이스: 길이가 가변적인 시퀀스 배열과 슬라이스 비교 배열 슬라이스 길이가 고정 길이가 가변적 value type reference type call by value call by reference 비교 연산자 사용 가능 비교 연산자 사용 불가능 슬라이스가 더 유연하고 기능이 많아, 슬라이스를 많이 사용한다. 배열/슬라이스 함수 배열/슬라이스 내장 함수 cap(s) 배열/슬라이스의 용량 (배열은 길이 == 용량) len(s) 배열/슬라이스 요소 개수 슬라이스 내장 함수 append(s, i) 새로운 요소 추가 copy(a, s) 슬라이스 s의 요소를 슬라이스 a에 복사 (배열에는 불가능) 슬라이..
HTTP 메시지 HTTP에서 교환하는 정보 리퀘스트 메시지와 리스폰스 메시지가 있음 여러 줄의 텍스트 데이터로 구성 메시지 헤더와 메시지 바디로 구성 개행문자로 헤더와 바디를 구분 (개행문자는 CRLF를 사용) 바디가 없을 수도 있음 💡 CRLF CR과 LF의 조합 CR(\r): Carriage Return LF(\n): Line Feed 메시지 헤더 리퀘스트 메시지 헤더 리퀘스트 라인 리퀘스트 헤더 필드 일반 헤더 필드 엔티티 헤더 필드 etc. 리스폰스 메시지 헤더 상태 라인 리스폰스 헤더 필드 일반 헤더 필드 엔티티 헤더 필드 etc. 리퀘스트 라인 리퀘스트에 사용하는 메서드 리퀘스트 URI 사용하는 HTTP 버전 상태 라인 리스폰스 결과의 상태 코드 & 설명 사용하는 HTTP 버전 헤더 필드 리퀘..
- Total
- Today
- Yesterday
- Python
- pm.expect
- pm.test
- Kotlin
- github
- 2차 인터뷰
- downTo
- postman
- java
- 주생성자
- 확장 함수
- Basic Type
- 코딩테스트
- python3
- go 특징
- git
- Kotlin In Action
- squash merge
- 1차 인터뷰
- 네이버 2022 공채
- Squash and merge
- graphql
- postman collection
- solidity
- hashcode
- 코틀린
- mysql
- string
- DGS Framework
- postman tests
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |