Go 언어 웹 프로그래밍 철저 입문
Go 언어, 이렇게 활용한다!
Go 언어다운 프로그래밍을 배운다Go는 간결하고 유연한 문법을 지원하며, 고루틴으로 병행 처리 코드를 쉽게 작성할 수 있다. 또한, 상속이 아닌 조합으로 코드를 재사용하여 확장성이 좋고, 패키지화된 소스 코드에서 실제로 사용되는 부분만 컴파일하므로 컴파일 속도가 매우 빠르다. 이런 특징들을 고려하여 Go 언어다운 프로그래밍 방법을 설명한다.
확장성이 좋고 유연한 마이크로 프레임워크를 만든다각 상황에 맞게 Go 기본 라이브러리와 다양한 외부 패키지를 조합하여 마이크로 서비스 형태로 자신만의 프레임워크 제작 방법을 배운다. 이렇게 만든 마이크로 프레임워크로는 여러 사용자가 실시간으로 대화할 수 있는 채팅 애플리케이션을 만든다.
Revel 프레임워크로 빠르게 웹 애플리케이션을 만든다풀스택 프레임워크 Revel은 웹 개발에 필요한 기능 대부분을 제공하므로 웹 애플리케이션을 아주 빠르게 제작할 수 있고, 이미 만들어진 웹 애플리케이션에 기능을 추가하기도 쉽다. 이 책에서는 Revel을 활용하여 웹 애플리케이션을 만든다.
전자책 구입
목차
- 1장. Go 시작하기
- 1.1 Go는 어떤 언어인가?
- 1.2 Go 설치하기
- 1.2.1 윈도에 설치하기
- 1.2.2 OS X에 설치하기
- 1.2.3 리눅스와 FreeBSD에 설치하기
- 1.2.4 설치 확인
- 1.2.5 OS X에 설치된 이전 버전 업그레이드
- 1.3 Go 개발 환경
- 1.3.1 작업 공간 구성
- 1.3.2 에디터
- 1.4 첫 번째 Go 프로그램
- 1.4.1 코드 실행
- 1.4.2 코드 분석
- 1.5 Go 참고 문서
- 2장. 기본 문법
- 2.1 Go 문법의 특징
- 2.1.1 간결함과 유연함
- 2.1.2 정적 타입 언어, 동적 프로그래밍
- 2.1.3 모호한 요소 제거
- 2.1.4 세미콜론 생략 가능
- 2.1.5 주석
- 2.1.6 gofmt로 코드 서식 지정
- 2.2 변수와 상수
- 2.2.1 변수 선언
- 2.2.2 변수 이름
- 2.2.3 상수
- 2.2.4 열거형
- 2.3 프로그램의 기본 흐름 제어
- 2.3.1 if
- 2.3.2 switch
- 2.3.3 for
- 2.4 함수
- 2.4.1 함수 정의
- 2.4.2 매개변수 전달 방식
- 2.4.3 defer
- 2.4.4 내장 함수
- 2.4.5 클로저
- 2.4.6 함수를 매개변수로 전달하기
- 2.5 패키지
- 2.5.1 패키지 종류
- 2.5.2 접근 제어
- 2.5.3 별칭
- 2.5.4 init() 함수
- 3장. 데이터 타입
- 3.1 불
- 3.2 숫자
- 3.2.1 정수
- 3.2.2 실수(부동소수점)
- 3.2.3 복소수
- 3.2.4 숫자 연산
- 3.3 문자열
- 3.3.1 문자열과 문자
- 3.3.2 문자열 연산
- 3.4 배열과 슬라이스
- 3.4.1 생성과 초기화
- 3.4.2 내부 요소에 순차적으로 접근
- 3.4.3 부분 슬라이스 추출
- 3.4.4 슬라이스 변경
- 3.5 맵
- 3.5.1 생성과 초기화
- 3.5.2 값 찾기
- 3.5.3 요소 추가, 수정, 삭제
- 3.6 포인터와 참조 타입
- 3.6.1 포인터 생성과 초기화
- 3.6.2 값 전달
- 4장. 객체 지향 프로그래밍
- 4.1 객체 표현 방식
- 4.2 사용자 정의 타입
- 4.2.1 사용자 정의 타입의 종류
- 4.2.2 메서드
- 4.3 구조체
- 4.3.1 생성과 초기화
- 4.3.2 내부 필드 접근
- 4.3.3 구조체 임베딩
- 4.3.4 정보 은닉
- 4.4 인터페이스
- 4.4.1 인터페이스 정의
- 4.4.2 다형성
- 4.4.3 인터페이스 임베딩
- 4.4.4 타입 변환
- 5장. 병행 처리
- 5.1 고루틴
- 5.2 채널
- 5.2.1 채널 방향
- 5.2.2 버퍼드 채널
- 5.2.3 close & range
- 5.2.4 select
- 5.3 저수준 제어
- 5.3.1 sync.Mutex
- 5.3.2 sync.RWMutex
- 5.3.3 sync.Once
- 5.3.4 sync.WaitGroup
- 5.3.5 원자성을 보장하는 연산
- 5.4 활용
- 5.4.1 타임아웃
- 5.4.2 공유 메모리
- 5.4.3 파이프라인
- 5.4.4 맵리듀스
- 6장. 에러 처리
- 6.1 에러 타입
- 6.2 에러 생성
- 6.2.1 errors.New() 사용
- 6.2.2 fmt 패키지 사용
- 6.2.3 사용자 정의 에러 타입
- 6.3 panic & recover
- 6.3.1 런타임 에러와 패닉
- 6.3.2 recover
- 6.4 에러 처리
- 6.4.1 에러 확인 함수 사용
- 6.4.2 클로저로 에러 처리
- 7장. 패키지
- 7.1 커스텀 패키지
- 7.1.1 패키지 만들기
- 7.1.2 별칭
- 7.1.3 운영체제에 종속적인 코드 처리
- 7.1.4 문서화
- 7.2 서드 파티 패키지
- 7.3 Go의 기본 라이브러리
- 7.3.1 문자열 다루기
- 7.3.2 컬렉션
- 7.3.3 파일, 디렉터리, 운영체제 환경 다루기
- 7.3.4 숫자 연산
- 7.3.5 네트워크
- 7.3.6 리플렉션
- 7.3.7 테스트
- 7.3.8 기타
- 8장. 나만의 웹 프레임워크 만들기
- 8.1 나만의 웹 프레임워크 만들기
- 8.2 첫 번째 웹 애플리케이션
- 8.3 라우터
- 8.4 컨텍스트
- 8.5 미들웨어
- 8.6 추상화
- 8.7 렌더러
- 8.8 커스텀 미들웨어
- 9장. 다양한 패키지를 조합하여 마이크로 프레임워크 구성하기
- 9.1 채팅 애플리케이션 만들기
- 9.2 웹 서버 구동하기
- 9.3 인증 처리하기
- 9.3.1 세션
- 9.3.2 로그인
- 9.3.3 인증
- 9.4 채팅방과 메시지 처리하기
- 9.4.1 몽고DB 환경 구성
- 9.4.2 채팅방 관리 기능 구현
- 9.4.3 메시지 조회 기능 구현
- 9.5 HTML과 자바스크립트로 클라이언트 화면 만들기
- 9.6 웹소켓 기능 구현하기
- 10장. Revel 프레임워크로 블로그 만들기
- 10.1 Revel 프로젝트 만들기
- 10.1.1 Revel 설치하기
- 10.1.2 블로그 애플리케이션 만들기
- 10.1.3 데이터베이스 설정
- 10.2 Hello World!
- 10.2.1 웹 서버 시작하기
- 10.2.2 Hello Revel!
- 10.3 포스트 기능 만들기
- 10.3.1 포스트 모델 만들기
- 10.3.2 데이터베이스 초기화
- 10.3.3 포스트 컨트롤러 만들기
- 10.3.4 포스트 목록 보기
- 10.3.5 새 포스트 만들기
- 10.3.6 각 포스트 보여주기
- 10.3.7 포스트 수정하기
- 10.3.8 포스트 삭제하기
- 10.4 댓글 기능 만들기
- 10.4.1 코멘트 모델 만들기
- 10.4.2 코멘트 컨트롤러 작성하기
- 10.4.3 댓글 작성을 위한 라우팅 규칙 추가하기
- 10.4.4 포스트의 Show 페이지에서 댓글 보여주기
- 10.5 리팩토링
- 10.5.1 댓글 목록을 별도의 템플릿으로 만들기
- 10.5.2 댓글 작성 폼을 별도의 템플릿으로 만들기
- 10.5.3 포스트 작성 폼을 별도의 템플릿으로 만들기
- 10.5.4 새로 분리한 템플릿에 댓글 삭제 기능 추가하기
- 10.6 데이터 처리에 ORM 프레임워크 적용
- 10.6.1 gorm 초기 설정
- 10.6.2 gorm으로 데이터 처리
- 10.7 로그인과 보안
- 10.7.1 사용자 모델 추가
- 10.7.2 로그인 기능 구현
- 10.7.3 기본 계정 생성
- 10.7.4 인증 인터셉터 추가
- 10.7.5 권한이 있는 사용자만 해당 기능에 접근