
린트(lint) 또는 린터(linter)는 소스 코드를 분석하여 프로그램 오류, 버그, 스타일 오류, 의심스러운 구조체에 표시(flag)를 달아놓기 위한 도구들을 가리킨다. 이 용어는 C 언어 소스 코드를 검사하는 유닉스 유틸리티에서 기원한다.
golang-ci-lint 도구를 이용해 코드의 일관성을 유지한다.
go는 기본적으로 MixedCap 또는 mixedCap 표기법을 사용한다.
앞자리가 대문자일 경우에는 다른 package에서도 접근이 가능하지만, 소문자일 경우에는 다른 package에서 접근이 불가능하다.
var internalValue int -> 외부 패키지에서 사용 불가능
var ExternalValue int -> 외부 패키지에서 사용가능
var (
ErrInternal = errors.New("regexp: internal error")
ErrUnmatchedLpar = errors.New("regexp: unmatched '('")
ErrUnmatchedRpar = errors.New("regexp: unmatched ')'")
...
)
```
id, ok := users[userID]
```참고 자료: https://docs.google.com/document/d/1cBxRMfJm43U25akrLLRj6P4O3TsCk2lqYBeK4D9oCWM/mobilebasicowner := obj.Owner()
if owner != user {
obj.SetOwner(user)
}
- panic,fatal은 발생하게 되면 프로세스를 종료시키기 때문에 사용하지 않는 것이 일반적이다.
- 사용한다면 프로세스가 처음으로 실행되는 main.go 함수에서 사용하는 것을 권장한다.
- Must prefix를 붙이는 것이 관례이다.
- fmt.errorf("%w",err)
- stack trace가 되지 않음.
- log.Printf("%+v",err)
- errors.Wrap(err,msg)
- stack trace가 가능함.
var t []string
-> 빈 배열, 포인터 == nil
t := []string{}
-> 빈 배열, 포인터 != nil
if t == nil{
} (X)
if len(t) == 0 {
} (O)
len을 이용해 빈 값인지 확인하자.
var sl []string
sl := make([]string,len(변수))
for i,v := range(t) {
}
for i:=0;i<len(t);i++{
}
포인터를 사용하고 싶다면 아래의 for문을 이용해 slice 또는 struct에 접근해야 한다.
참고자료:
https://blog.banksalad.com/tech/go-best-practice-in-banksalad/#nil-slice-vs-empty-slice