일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 하둡
- 우분투
- 자바
- golang
- hadoop
- 백준
- 백준 파이썬
- 12761 돌다리
- 파이썬
- 몽고디비 렘
- 고 배열
- 정렬
- 12761번 돌다리
- 트리 순회
- golang struct
- flask
- http 개념
- 자바 디자인패턴
- MongoDB Realm
- 백준 12761번
- 자바 디자인 패턴
- go
- domain driven develop
- 백준 사이트
- 도메인 주도 개발
- 백준 12761
- String 함수
- 도메인 주도 개발 시작하기
- http 완벽가이드
- ddd
- Today
- Total
목록GO 언어 (12)
개발바닥
슬라이스란? Golang 에서 사용하는 동적 배열이다. 동적 배열과 정적 배열의 차이점은 동적 배열은 런타임 실행 중 사이즈가 변경이 가능하고, 정적 배열은 컴파일시 코드를 기계어로 변경하면서 사이즈가 고정이 된다. 슬라이스는 Go에서 제공하는 배열을 가리키는 포인터 타입이다. 슬라이스는 append() 내장 함수를 사용하여 동적으로 요소들을 추가할 수 있다. 슬라이스 구조 type SliceHeader struct{ Data uintptr // 실제 배열을 가리키는 포인터 Len int // 요소 개수 (배열에서 사용하고 있는 개수) Cap int // 실제 배열의 길이 } 내장 함수 append() 사용 방법 및 동작 원리 슬라이스에 요소를 추가한 새로운 슬라이스를 반환 기존 슬라이스가 바뀔 수도 있..
구조체란? 구조체는 여러 필드를 묶어서 사용하는 타입이다. 고 언어에서는 class를 지원하지 않기 때문에 고 언어에서 만큼은 객체로 쓰인다. 프로그래밍에서 추구해야 될 방향으로 "결합도(의존성)은 낮게 응집도는 높게" 하기 위해 함수, 배열, 구조체 등을 사용한다. 여기서 구조체는 관련된 데이터들을 묶어서 응집도를 높이고 재사용성을 증가시키는 역할을 한다. 구조체 선언 type 타입명 struct{ 필드명 타입 ... 필드명 타입 } ex) type User struct{ Name string Age int } 구조체 크기 구조체는 타입이므로 변수 형태와 사이즈를 가지고 있다. 구조체 사이즈는 모든 필드에 사이즈를 더한 값이다. 여기서 주의할 사항으로 고언어 컴파일러는 메모리를 정렬해서 저장하기 때문에..
배열이란? 같은 타입의 데이터들로 이루어진 타입이다. 변수 타입은 데이터의 형태도 의미하지만 할당되는 메모리 공간 크기도 의미한다. 연속된 메모리 공간을 가지고 있다. 배열은 자료구조 중 한 종류이다. 자료구조란? 데이터들을 어떤 형태로 저장할지를 나타내는 구조를 말한다. ex) list, map, queue, stack ... 배열 변수 선언 방법 # 길이가 5인 int 타입 배열 선언 초기값은 default 값인 0으로 채워져 있다. var nums [5]int # 길이가 3인 string 타입 배열 선언 초기값은 순서에 맞게 초기화 된다. strings := [3]string{"hello","world","golang"} # 길이가 5인 float64 타입 배열 선언 초기값은 12.4, 54.1, ..
변수란? 값을 저장하는 메모리 공간을 가리키는 이름이다. 변수마다 메모리 공간을 가지고 있다. (같은 메모리 공간을 가지고 있을 수도 있고 서로 다른 메모리 공간을 가지고 있을 수 있다.) 프로그램 실행 도중에 CPU는 연산에 필요한 데이터를 "메모리"에서 가져온다. 변수는 프로그램 실행 도중에 연산에 필요한 값(데이터)를 저장하기 위해 메모리 공간을 이용한다. 변수가 왜 중요한가? 프로그램이란 결국 데이터를 연산/조작 하는 일이다. 데이터는 메모리에 있다. 음악 듣기, 유튜브 영상 보기, 게임 실행하기 등 컴퓨터 입장에서는 데이터를 조작하는 일이다. 변수는 4가지 속성 이름, 값, 주소, 타입을 가지고 있다. ex) var a int = 10 이름 : a 값 : 10 주소 : 메모리 상에 위치하는 주소..
golang에는 여러 웹 프레임워크가 존재한다. 대표적인 웹 프레임워크들로는 gin, beego, Iris, Echo, Fiber ... 등이 있다. 현재 실무에서는 Echo 프레임워크를 사용하고 있습니다. 사용한 이유로는 다른 프레임워크에 비해 잘 정리된 문서로 처음 개발하는 사람들이 쉽게 따라할 수 있도록 문서가 잘 관리 되어 있고, 자신의 미들웨어를 정의하여 사용할 수 있다는 장점이 있습니다. 오늘은 Echo 프레임워크로 간단한 웹 서버를 구축해 보겠습니다. echo 프레임워크 가져오기 $ go mod init # 모듈 초기화 $ go get github.com/labstack/echo/v4#echo v4 가져오기 성공적으로 가져오면 go.mod 파일에 추가된 것을 확인할 수 있습니다. 서버 만들기..
Go에서 유닛 테스트 작성 방법에 대해 알아보기 전에 유닛 테스트에 대한 개념을 짚고 가겠습니다. 테스트 유형에는 여러 유형이 있지만, 크게 3가지로 단위 테스트, 통합 테스트, 인수 테스트에 대해서 간단하게 알아 보겠습니다. 단위 테스트(Unit Test) 단위 테스트는 응용 프로그램에서 테스트 가능한 가장 작은 소프트웨어를 실행하여 예상대로 동작하는지 확인하는 테스트이다. 일반적으로 클래스 또는 메소드 수준으로 정해진다. 통합 테스트(Integration Test) 통합 테스트는 단위 테스트보다 더 큰 동작을 달성하기 위해 여러 모듈들을 모아 이들이 의도대로 협력하는지 확인하는 테스트이다. 단위 테스트보다 더 큰 범위로 개발자가 변경할 수 없는 부분(ex 외부 라이브러리)까지 묶어 검증할 떄 사용한다..
Go 인터페이스란? 이기종간 기능을 약속하여 서로 다른 기기일지라도 오직 기능적인 관점에서 일관성을 유지하기 위해 사용한다. Go에서 구조체는 필드들의 집합체라면, 인터페이스는 메서드들의 집합체이다. 인터페이스는 타입이 구현해야 하는 메서드 원형들을 정의한다. 인터페이스의 이름은 보통 변수에 ~er이 붙는다. 특정 타입이 인터페이스에서 정의된 메소드를 구현했다면, 해당 타입은 인터페이스를 구현했다고 본다. 인터페이스 선언 type 인터페이스명 interface{ ... 메소드 ... } 인터페이스를 왜 쓰는가? 타입 확장에 유연하게 대응하기 위함 Go 언어에서는 매개변수와 반환이 다르더라도 이름이 같은 메서드는 있을 수 없다. 이러한 문제점을 해결하기 위해서 메소드명을 다르게 해서 해결할 수 있지만, 좋..
모듈(Module)이란? Go 프로젝트의 종속성을 관리하는 새로운 방법이다. (1.11.1 이후 등장) 모듈을 사용하면 애플리케이션을 중단하지 않고 동일한 종속성의 다른 버전을 통합할 수 있다. Go Modules 이 안나온 시절은 어땠을까? go get: 3rd party packages 가져오기 go에서는 'go get' 명령어로 외부 패키지를 가져올 수 있다. 1. go get으로 가져온 패키지는 $GOPATH/src 아래에 source file들이 저장된다. $GOPATH 내에 없으면 종속성을 가져올 수 없다. 2. go build 명령은 $GOPATH 내에 바이너리 실행 파일과 패키지 아카이브를 생성한다. $GOPATH에 많이 의존하는 것을 볼 수 있다. 여기서 잠깐! Go는 Node.js의 N..