
인터페이스 객체의 동작을 표현하는 것 내부 구현이 아닌 동작 방식만을 표현 추상 메커니즘을 제공 매개변수로 사용되면 '값이 무엇을 할 수 있는지'에 집중할 수 있음 덕 타이핑 방식: 변수와 메서드의 집합이 객체의 타입을 결정 인터페이스 정의 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. 구조체 리터럴의 포..

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에 복사 (배열에는 불가능) 슬라이..

Boolean true / false 값을 가짐 논리 연산자, 비교 연산자의 결과 short circuit 방식으로 동작 implicit conversion을 하지 않음 short circuit 첫 번째 연산의 결과만으로도 결과를 특정지을 수 없을 때, 두 번째 연산까지 실행하는 것 식1 && 식2 연산에서 식1이 false라면 식2를 실행하지 않는다. 마찬가지로 식1 || 식2 연산에서 식 1이 true라면 식2를 실행하지 않는다. implicit conversion 다른 타입의 값을 boolean에 맞춰서 변환하는 것 Go에서는 숫자 0이나 nil을 false로 변환하지 않는다. Number 정수, 실수, 복소수가 있음 숫자의 범위에 따라 메모리의 크기 선택이 가능 unsigned 사용 가능 정수 타..

패키지 코드를 구조화하고 재사용하기 위한 단위 Go 프로그램은 패키지로 구성됨 Go의 코드는 패키지 선언으로 코드를 시작 다른 패키지 import 가능 패키지 이름과 디렉토리는 동일 같은 패키지를 가지는 소스 파일은 모두 동일한 디렉토리에 위치 라이브러리, 모듈과 비슷한 의미를 가짐 💡 패키지 이름 convention 소문자로 구성 소스 파일 하나로 구성된 패키지는 패키지 이름과 소스 파일 이름을 통일 https://pkg.go.dev/std Standard library - pkg.go.dev Directories ¶ Expand all tar Package tar implements access to tar archives. Package tar implements access to tar archi..

func 함수명(매개변수) (반환타입 또는 반환값) { ... } Go에서 함수는 func 키워드 + 매개변수 + 반환타입을 순으로 선언한다. 매개변수를 생략할 수 있고, 반환값이 없을 때도 반환 값을 표기하는 부분이 없어도 된다. func function(s string, a, b, c int) { ... } 변수 선언과 마찬지로 매개변수도 [변수 이름 + 타입]과 같이 표기한다. 여러 개의 매개변수를 선언할 때 같은 타입이 있다면 [매개변수1, 매개변수2, ..., 매개변수n, 변수타입]과 같은 형식으로 표기할 수 있다. func function(integers ...int) { ... } C++과 마찬가지로 go에도 가변 인자를 사용할 수 있다. 매개변수 타입 앞에 ...을 사용하여 여러 개의 값을..

if if 조건식 { ... } 위의 형태로 if문을 작성한다. 다른 언어들과 달리 go에서 조건식은 소괄호 안에 작성하지 않아도 되고 소괄호를 사용하여 작성해도 된다. C와 달리 go의 조건식은 boolean 타입이어야 한다. if 조건식1 { ... } else if 조건식2 { ... } else { ... } 여러 개의 조건을 사용하기 위해서는 else if를 사용하면 된다. Java에서는 if문에 {중괄호}를 사용하지 않아도 되었다. go에서는 {중괄호}는 필수적이다. 여는 괄호 { 는 if와 같은 줄에 있어야 하고, 닫는 괄호 } 는 else와 같은 줄에 있어야 한다. import "fmt" func main() { i := 1 if i > 0 { fmt.Println("양수") } else ..
- Total
- Today
- Yesterday
- go 특징
- Kotlin In Action
- git
- github
- 코틀린
- 주생성자
- Python
- graphql
- java
- 확장 함수
- 2차 인터뷰
- downTo
- DGS Framework
- mysql
- string
- 1차 인터뷰
- solidity
- Squash and merge
- Kotlin
- python3
- 네이버 2022 공채
- hashcode
- Basic Type
- pm.test
- postman tests
- postman collection
- pm.expect
- 코딩테스트
- postman
- squash merge
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |