일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- JavaScript
- TypeScript
- docker
- Terraform
- reactjs
- testing
- react
- 번역
- smui
- onDestory
- docker-network
- :=
- golang
- go
- 인라인핸들러
- GraphQL
- bitwiseNot
- apiTest
- 도커컨테이너
- mock
- GIT
- cron
- PostgreSQL
- ...$$restProps
- nestjs
- 도커
- IAC
- Svelte LifeCycle
- svelte
- githook
- Today
- Total
목록GoLang (19)
Den`s blog
Channel 은 데이터를 주고 받는 통로라고 볼 수 있다. make 를 통해 선언을 한다 type job struct { title string salary int } func main() { c := make(chan job) } type job struct { title string salary int } func main() { c := make(chan job) } 채널로 값을 전달해준고 받는다고 보면 된다. // 넘기기 (받기전용) chan
Go 에서 Struct 를 주로 이용한다고 했는데, 여기에 메소드도 추가가 가능하다. 말로 설명하면 길어지니 코드부터 보자. // Account account Structure type Account struct { owner string balance int } var errNoMoney = errors.New("can't withdraw") // NewAccount Creates Account func NewAccount(owner string) *Account { account := Account{owner: owner, balance: 0} return &account } // Deposit x amount on your account func (theAccount *Account) Deposit..
Go 에서는 타 언어에서 주로 사용하던 Class 와 Object 가 없다. 그래서 이제 알아야 할 Structure 가 중요한데, 그 전에 Map 에 대해서도 알아보자. Map 기본적으로 key - value 의 형태를 가지고 있고, key 와 value 도 타입이 필요하다. den := map[string]string{"name: "den", "age": "31"} 위의 예제처럼 대괄호 [] 안에 key에 대한 타입을 명시해주고, 그 뒤에 value에 대한 타입도 지정해준다. 그러면 사실 나이는 int 형이어야 하고, 실질적으로는 유동적으로 여러 타입이 가진게 유용할텐데, 그런 것들은 어떻게 해야할까? Structure 위의 문제를 해결해줄 수 있는 것이 Structure 이다. 코드로 살펴보자 ty..
Array Go 에서 Array 는 그 크기를 제한해주어야 한다. 또한, 그 타입도 지정해야 하며, 그 안에 값들을 세팅하는 것도 나로서는 좀 색달랐다. names := [5]string{"shin", "yeong", "hyeon"} // Define names[3] = "den" names[4] = "den-shin" 첫 번째 라인과 같이 대괄호 안에 Array 의 크기를 넣어주고 대괄호 뒤에 타입을 지정해준다. 그리고 값들을 중괄호 안에 넣어서 정의 해준다. 그 후에 추가하는 것들은 그 아래 라인들과 같이 진행해주고, 만약 names[5] = "anything" 을 해준다면 컴파일 에러가 난다. 그런데, 크기 지정은 사실 실무에서 그렇게 사용하지 않는다, 크기가 없는 Array 는 어떻게 지정할까 ?..
For Go 에서는 다른 언어에서의 forEach, for in 같은 것은 존재 하지 않고 오직 for 만이 있다. 그리고 range 와 보통 사용하는데, go 만의 특색있는 for 문을 살펴보도록 하자, 근데 이런 점들이 참 Go 를 바라보는 시선이 호불호가 많이 갈리는 이유인가보다. func add(numbers ...int) int { // with range for index, number := range numbers { // execute } // ignore index for _, number := range numbers { // execute } // normal for for i := 0; i < len(numbers); i++ { // execute } ...생략 } If / Swit..
이전포스팅에서 끝날때 까지 끝나는게 아닌 함수 안의 defer 에 대해서 알아보았다. defer 를 함수 최상단에 써 두었었는데, 쉬운 이해를 위해서 그랬고 중간에 넣어도 진행이 가능하다. defer 는 해당 라인이 됐을 때 그저 스택에 쌓아 둔다. func a() { i := 0 defer fmt.Println(i) i++ return } 위 함수의 결과물은 0 이다. 실행 자체는 return 후라서 1이 되어야 할 것 같지만, 스택에 쌓인 시점의 i의 값은 0이기 때문이다. 또한, 스택이기 때문에 후입선출이 된다. func main() { fmt.Println("counting") for i := 0; i < 10; i++ { defer fmt.Println(i) } fmt.Println("done"..
Function Go 에서는 꽤 유용한 기능들이 많고 Go 만의 특이점도 많다. 아래에서 천천히 살펴보자. 1. 모든 타입 설정 정적 언어이다 보니 당연하게도 파라미터 타입과 리턴 타입을 설정해 주어야 한다. 그런데 만약, multiply 와 같은 곱셈 함수처럼 모든 파라미터가 같을 때 어느 정도 생략이 가능하다. func multiply(a int, b int) int { return a * b } function multiply2(a, b int) int { return a * b } 2. 여러 값 반환 다른 언어에서 여러 값들을 반환 하려면 보통 Array / Object 를 이용해서 반환하며, 리턴 타입이 Array / Object 가 된다. 그러나 Go 에서는 여러 값 반환이 가능하다..!? f..
세팅 & 기본개념 Go 언어 개발시 특징이 다른 언어와 다르게 디렉토리를 맘대로 가져갈 수 없다는 것이다. (Mac 기준)~/go폴더 안에서 진행해야 한다. (GO_PATH라고 한다). Go 를 설치하면 자동으로 생성이 된다는데 나는 안돼서 직접 만들었다. 구조는 main.go 가 Entry point 이기에 필수이며 (컴파일 할 경우에 !) 메인 함수가 필수 이다. 또한, package 도 파일별로 필수이다. main 을 살펴보면 기본구조가 아래와 같다. package main func main() {} 기본 제공되는 라이브러리 중 “fmt” 를 가장 먼저 접하게 되는데 (Hello World 찍어봐야지) 사용 방법을 보자면 아래와 같다. package main import "fmt" func main..
갑자기 Go 언어를 배워보고자 하는 욕구가 뿜뿜하였다. Go 에 대해서 여러 아티클이나 영상을 접하다 보니 가장 큰 장점을 속도가 겁나 빠르다 인데, 이 매력에 이끌리게 되어서, 좀 더 찾아보고 내가 배워야 할 이유가 충분하더라. 1. 빠르다 Go Lang 의 장점을 찾아보면 가장 먼저 Python 과 비교를 하는 아티클을 많이 보게 되는데 속도가 너무 차이가 난다는 것이다. 믿을 수 없을 정도로 빠르다고, 유튜브를 조금만 봐도 나오는 수준… 그리고 컴파일 언어라고 한다. 2. 정적 언어 Type 강제하는가 너무 좋아 3. Python 과 C 를 쏙쏙 Python 과 C 의 좋은 점들을 뽑아 디자인 됐다 한다, 그래서 포인터도 있고, C 처럼 자료구조를 만들기도 쉽다더라! 4. 동시성 지원 5. Garb..