일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- apiTest
- PostgreSQL
- TypeScript
- :=
- 인라인핸들러
- GIT
- go
- react
- 번역
- nestjs
- reactjs
- JavaScript
- docker-network
- docker
- cron
- smui
- mock
- Svelte LifeCycle
- 도커
- githook
- testing
- GraphQL
- golang
- Terraform
- bitwiseNot
- 도커컨테이너
- IAC
- onDestory
- ...$$restProps
- svelte
- Today
- Total
목록golang (15)
Den`s blog
Singleton Pattern 은 가장 흔하게 볼 수 있는 디자인 패턴 중에 하나이다. 정의를 간단하게 보자면 아래와 같다. 클래스를 하나의 객체로만 제한하는 것 간단하게 Go 코드로 보면 아래와 같다. type User struct { name string } var user *User func init() { user = &User{name :"den"} } func GetUser() *User { return user } user 라는 변수는 init 이라는 함수안에서만 생성이 되고, GetUser 를 통해서만 접근이 가능한 코드이다. Go 에서는 다른 패키지의 함수를 호출할 수 있는 조건이 대문자로 시작하는 경우이기 때문에 다른 패키지에서는 GetUser 만 호출이 가능하다. 그렇다면 init ..
Go 에서 변수를 생성/할당하는데는 익히 알고 있듯 2가지 방법이 있다. := 와 = 를 활용하는 것인데, 검색하면 쉽게 나오는 두 방식의 차이에 대해서 먼저 간단하게 설명해보면 아래와 같다. 1. = var a int = 5 var 키워드로 변수임을 알려주고, 변수명을 작성하고, 타입을 작성한 뒤, 선택에 따라서 값을 할당해주면 된다. 2. := a := 5 1번의 예제와 동일한 효과를 짧게 내는 구문이다. := 의 공식 명칭은 short assignment stament 이다. 그런데, 2번에는 원래 재할당이 되지 않는다. 재할당을 하는 경우에는 아래와 같은 에러를 보게 될 것이다. := 의 왼쪽이 새 변수가 아니라는 뜻이다. 이 말인즉슨, 이미 선언된 변수에는 사용이 불가하다는 것인데, 2개, 3개..
Golang 에서 프로그램을 종료하는 것에 대해서 제일 처음 알게 되는 것이 아마도 os.Exit() 일 것이다. 그러나, 오늘은 다른 종료 메소드인 runtime.Goexit() 과 비교하면서 둘의 차이점에 대해서, 그리고 runtime.Goexit() 를 써야하는 경우에 대해서 알아보자. 1. os.Exit Conventionally, code zero indicates success, non-zero an error. The program terminates immediately; deferred functions are not run. 공식 문서를 살펴보면, Exit 의 아규먼트로 0을 주면 성공, 아닌 경우에는 에러라고 한다. 그리고 그 뒤에 말이 중요한데, 프로그램을 즉시 종료한다고 한다. d..
GoLang 에서 테스트를 돌리기 위해서는 go test 를 쓰면 된다. 그런데, 해당 명령어는 디렉토리 안에 있는 것만 확인한다. 하위 디렉토리는 확인을 하지 않는다. 프로젝트 안에 테스트파일이 있어도 위와 같이 뜨고 있다. 그렇다면 전체로 테스트를 돌리기 위해서는 어떻게 해야 할까 ? go test ./... 위 명령어만 실행해주면 간단하게 전체 테스트가 가능해진다.
Golang 에서 서비스/어플리케이션 실행시에 Argument 들을 받는 방법에 대해서 알아보도록 하자 서비스를 실행시키는 대표적인 두 방법 Build 와 Run 각각 알아보도록 하려고 한다. 1. Run // stdOut.go package main import ( "fmt" "os" ) func main() { myString := "" arguments := os.Args if len(arguments) == 1 { myString = "Please give me one argument !" } else { myString = arguments[1] } //fmt.Println(arguments) fmt.Println(myString) } 위 파일을 go run stdOut.go 로 실행하면 Ple..
Go 의 장점으로 static linking 에 대해서 간략하게 얘기해 본적이 있고, build 에 대해서도 간략하게 본 적이 있어서, 이번에 그에 관한 포스팅을 진행하고자 한다. Go 코드를 어떻게 컴파일 하는지에 대해서 알아보자. Go 는 컴파일 하는데 Graphic Application 은 따로 필요하지 않고 파일의 이름에 대해서도 영향을 받지 않는다. 단지, 단 하나의 main() function 만 존재하면 되고, 시작점이기 때문에 오직 하나만 main 이 가능하다. aSourceFile.go 파일을 아래와 같이 만들었다고 가정하자. package main import "fmt" func main() { fmt.Println("This is a sample Go program!") } 굉장히 간..
Golang 을 하면서 크롤러를 만들게 되었고, 하다보니 캘린더 관련해서 여러가지 function들이 필요해서 패키지를 직접 만들어 배포해보기로 하였다. 가장 간단하고 빠르게 하는 법으로 해보기로 하였고, 그 후에 추가적으로 테스트를 붙이고 해보았다. 패키지 사이트 깃허브 shinYeongHyeon/go-times It will save your time such as coding a calendar! Contribute to shinYeongHyeon/go-times development by creating an account on GitHub. github.com 먼저 모듈로 작동해야 하기 때문에 main function 은 만들지 않았다. 해당 파일에 필요한 함수들을 만들고 정식으로 배포하기 위해..
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..
Array Go 에서 Array 는 그 크기를 제한해주어야 한다. 또한, 그 타입도 지정해야 하며, 그 안에 값들을 세팅하는 것도 나로서는 좀 색달랐다. names := [5]string{"shin", "yeong", "hyeon"} // Define names[3] = "den" names[4] = "den-shin" 첫 번째 라인과 같이 대괄호 안에 Array 의 크기를 넣어주고 대괄호 뒤에 타입을 지정해준다. 그리고 값들을 중괄호 안에 넣어서 정의 해준다. 그 후에 추가하는 것들은 그 아래 라인들과 같이 진행해주고, 만약 names[5] = "anything" 을 해준다면 컴파일 에러가 난다. 그런데, 크기 지정은 사실 실무에서 그렇게 사용하지 않는다, 크기가 없는 Array 는 어떻게 지정할까 ?..