[링크]예제로 배우는 Go 프로그래밍
Go는 2009년 구글에서 개발한 간결한 문법과 생산성을 제공하는 프로그래밍 언어이다.
golang의 특징
1. 간결한 문법
Go는 키워드가 25개로 간결하고 배우는데 다른 언어에 비해 상대적으로 시간이 적게 걸림.
2. 개발 속도 및 컴파일 언어
컴파일 방식의 언어이며, 간결한 의존성 해석 알고리즘을 통해 다른 컴파일 언어에 비해 빠르게 동작하는 컴파일러 제공.
3. 가비지 컬렉션(GC)
메모리를 관리해주는 가비지 컬렉터가 실행 파일 안에 내장 되어 있어 직접 관리하지 않아도 됨.
4. 동시성
동시성을 지원하기 위해 고루틴이라는 것을 지원함. 스레드와 유사하지만 더 적은 메모리를 소비하여 더 적은 양의 코드로 구현할 수 있는 데이터 구조.
5. 타입시스템
계층구조가 없는 유연한 타입 시스템을 제공하기 때문에 리팩토링에 대한 부담을 최소화 하면서 코드를 재사용할 수 있음.
Golang의 특징을 정의해 놓은 다음 사이트의 내용을 정리함.
https://velog.io/@veloss/GoLang-%ED%83%90%EB%B0%A9%EA%B8%B0-golang%EC%9D%B4%EB%9E%80-vpjmr8weoa
구글 홈페이지의 Google Go팀이 작성한 많은 자료를 참조할 수 있음.
- (Quick Tutorial) A Taste of Go
- (Quick Tutorial) Golang Cheat Sheet
- (Design) Simplicity is Complicated
- (Design) Golang FAQ: Design
- (Design) Go Proverb
- (Design) Go at Google

# wget https://storage.googleapis.com/golang/go1.7.linux-md64.tar.gz # tar -xvzf go1.7.linux-amd64.tar.gz # mv go /usr/local # export PATH=$PATH:/usr/local/go/bin # echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin # go version go version go1.7 linux/amd64 # mkdir $HOME/workspace # export GOPATH:$HOME/workspace |

package main |
import "fmt" |
// 문자열 받아서 처리함 func say(msg *string) { println(*msg) } // 문자열을 매개 변수로 받음 func say(msg ...string) { for _, s := range msg { println(s) } } // 여러개 숫자늘 매개변수로 받아 int값 반환 func sum(nums ...int) int { s := 0 for _, n := range nums { s += n } } // 여러개 숫자늘 매개변수로 받아 변수명 count인 int // 값과 total인 int 값을 반환 func sum(nums ...int) (count int, total int) { s := 0 for _, n := range nums { s += n } } |
type Rect struct { // 구조체 width, height int } |
// Rect 구조체의 메소드 area() func (r Rect) area() int { return r.width * r.height } |
// Rect 구조체의 메소드 area2() func ( r *Rect) area2() int { r.width++ return r.width * r.height }
|
func main() { fmt.Println("Go Test") rect := Rect{10,20} area := rect.area() println(area) area2 := rect.area2() println(rect.width, area2) } |
실행하기
# go run test.go 또는 # go build |
'4차산업 > 블록체인' 카테고리의 다른 글
비잔틴 장애 허용(BFT) (0) | 2019.01.16 |
---|---|
Docker 정리 (0) | 2019.01.13 |
Hyperledger Fabric 특징과 구성요소 (0) | 2019.01.03 |
curl 사용법 (0) | 2018.12.08 |
이더리움 스마트 건트랙트 시큐어코딩 (0) | 2018.12.05 |