프로그래밍/Golang
-
[번역] Go Things I Love: Channels and Goroutines프로그래밍/Golang 2020. 1. 8. 12:52
이 글은 공부에 목적이 있으며, 상업적인 용도로 사용하지 않습니다. 원문 https://www.justindfuller.com/2020/01/go-things-i-love-channels-and-goroutines/?fbclid=IwAR2QqHfO56Jayvfhvzh5TBusjMwNXgfU1IOn4OyNXOadPrBg9wJixHAcx34 내 생각대로 위 내용을 자유롭게(생략, 의역 등) 번역한다. 번역 "Go Things I Love" 시리즈는 내가 제일 좋아하는 Go의 기능들을 보여주기 위해 만들어졌다. 또, The New York Times에서 Go를 가지고 일하는 것을 사랑한다. 이전 Go Things I Love: Methods On Any Type에서 나는 객체지향 소프트웨어를 쉽게 만드는 Go..
-
10장 패키지와 Go 도구프로그래밍/Golang 2019. 11. 20. 23:45
The Go Programming language 10.1 소개 모든 패키지 시스템의 목적은 관련된 기능들을 쉽게 이해하고 변경할 수 있으며 프로그램 내의 다른 패키지와 독립된 하나의 단위로 묶어서 대형 프로그램의 설계와 관리를 쉽게 하는 것이다. 10.2 임포트 경로 각 패키지는 임포트 경로라는 고유한 문자열로 식별된다. 임포트 경로는 import 선언에 표시되는 문자열이다. 10.3 패키지 선언 모든 Go 소스 파일은 package 선언을 시작한다. 이 선언의 주 목적은 다른 패키지에 의해 임포트될 때의 기본 식별자(패키지 이름이라 함)를 결정하는 것이다. 예를 들어 math/rand 패키지의 모든 파일은 package rand로 시작하므로 이 패키지를 임포트하면 해당 멤버에 rand.Int, ran..
-
9장 공유 변수를 이용한 동시성프로그래밍/Golang 2019. 11. 20. 22:52
The Go Programming language 개요 동시성(Concurrency) 메커니즘 설명 변수를 공유할 때 문제점, 분석방법, 해결법의 패턴 설명 고루틴과 운영체제 스레드 간의 기술적 차이점 설명 9.1 경쟁 상태 한 이벤트가 다른 이벤트보다 멎저 일어난다고 확인할 수 없을 때 이벤트 x와 y가 동시(concurrent)에 일어난다고 한다. 한 함수를 두 개 이상의 고루틴에서 부가적인 동기화 과정 없이 동시에 호출해도 제대로 동작하면 동시성에 안전(concurrency-safe)하다고 한다. 대부분의 변수는 단일 고루틴으로 제한하거나 상위 수준의 상호 배제 불변성을 통해 동시 접근을 방지한다. 함수를 동시에 호출할 수 없는 원인은 경쟁 상태(race condition), 교착상태(dead lo..
-
8장 고루틴과 채널프로그래밍/Golang 2019. 11. 13. 22:26
The Go Programming Languag 개요 2가지 스타일의 동시성 프로그래밍 스타일을 지원 독립적인 작업(고루틴) 간에 값을 전달 변수는 대부분 단일 작업에 국한되는 모델인 CSP(상호 통신하는 연속된 프로세스)를 지원하는 고루틴과 채널 8.1 고루틴 동시에 수행되는 작업을 고루틴이라 함 함수 호출이 순차적이지 않고 두 함수의 호출이 동시에 일어남 스레드와 고루틴은 차이가 있음 프로그램이 시작한 뒤 고루틴은 main 함수를 호출하는 것이며 메인 고루틴이라 함 새 고루틴은 go문에 의해 생성 문법적으로 go문은 키워드 go가 앞에 붙는 일반 함수 또는 메소드 호출 go문은 함수가 새로 만든 고루틴에서 호출되게 함 go문 자체는 즉시 완료됨 f() // call f(); wait for it to..
-
Golang 관련 도서 다운로드 및 번역 문서프로그래밍/Golang 2019. 11. 13. 17:06
Golang 관련 도서의 pdf 파일을 다운로드 받을 수 있는 링크는 다음과 같다. 링크: https://github.com/KeKe-Li/book/tree/master/Go 다음은 위 링크에서 Golang 관련 도서 중 영어로 작성된 목록이다. 도서명 한글 번역서 저자 출판사 출시일 페이지수 Concurrency in Go - Katherine Cox-Buday O'RELLY 2017년 8월 224 Introducing Go - Caleb Doxsey O'RELLY 2016년 1월 124 Machine Learning With Go - Daniel Whitenack Packt 2017년 9월 349 The Go Programming Language https://book.naver.com/bookdb/..
-
7장 인터페이스프로그래밍/Golang 2019. 11. 6. 23:53
The Go Programming Language 7장 인터페이스 인터페이스 타입은 다른 타입의 동작을 일반화하거나 추상화해서 표현 7.1 인터페이스 규약 구상 타입 지금까지 살펴본 모든 타입은 구상 타입(concrete type) 구상 타입은 값의 정확한 표현을 지정하고 숫자의 산술 연산이나 슬라이스의 색인, append, range 등 해당 표현에 대한 내부의 연산을 드러냄 구상 타입은 메소드를 통해 부가적인 동작을 제공할 수 있음 구상 타입의 값을 보면 해당 값이 무엇인지 무엇을 할 수 있는지 정확히 알 수 있음 인터페이스 타입 인터페이스는 추상 타입 인터페이스는 값의 표현이나 내부 구조 또는 지원하는 기본 연산을 드러내지 않음 인터페이스는 메소드 중 일부만 보여줌 인터페이스 타입의 값을 보면 해당..
-
6장 메소드프로그래밍/Golang 2019. 11. 4. 00:28
The Go Programming Language 6장 메소드 Go도 객체지향 프로그래밍을 지원함 Go에서는 객체를 단순히 메소드를 가진 값이나 변수로 정의 메소드는 특정 타입과 관련된 함수로 정의 객체지향 프로그램은 메소드를 통해 데이터 구조의 특성과 동작을 포현하므로 사용자는 객체의 구현에 직접 접근할 필요가 없음 6.1 메소드 선언 메소드는 일반 함수 선언을 변형해 함수명 앞에 부가적인 파라미터를 추가한 형태로 선언 부가적인 파리미터는 함수의 파라미터 타입에 추가 gopl.io/ch6/geometry package geometry import "math" type Point struct{ X, Y float64 } // traditional function func Distance(p, q Poin..
-
5장 함수프로그래밍/Golang 2019. 11. 3. 22:22
The Go Programming Language 5장 함수 함수는 여러 문장을 하나의 단위로 묶어 프로그램 내의 다른 부분에서 수차례 호출할 수 있게 함 함수를 통해 큰 작업을 여러 작은 작업으로 불할하고 시간 및 공간적으로 분리된 여러 사람이 동시에 작성할 수 있게 함 함수는 사용자에게 구현의 세부사항을 숨김 5.1 함수 선언 함수 선언에는 이름, 파라미터 목록, 부가적인 결과 목록, 본문이 있음 func name(parameter-list) (result-list) { body } 파라미터 목록은 함수 파라미터의 이름과 타입을 지정하며 이 인자는 호출자가 값이나 인자를 제공하는 지역 변수임 결과 목록은 함수가 반환하는 값의 타입을 지정하며 한개의 이름 없는 결과를 반환하거나 결과를 반환하지 않을 경..