반응형

fmt에서 출력하는 콘솔 로그와, log에서 출력하는 파일 로그를 동시에 찍고 싶은 경우가 생겨서,

Printf를 하나의 function으로 만들어서 사용하기로 결정했다.


Printf는 string format과 가변인자를 전달받을 수 있도록 구성되어 있다.

func Printf(format string, v ...interface{}) {
     ...
}


Java의 경우 가변인자를 전달할때 변수명만 넘겨주면, 제대로 동작을 했었기에

아래와 같이 만들어보았다.

func logging(format string, v ...interface{}) {
    fmt.Printf(format, v)
    log.Printf(format, v)
}


테스트를 해본결과 변수 여러개를 넘겼을 경우, 가변인자의 0번째 값만 전달이 되는 현상이 발생을 하였다.


golang에서는 가변인자 전달 시에는 아래와 같이 전달해주는 function에도 ... 를 붙여서 사용해야 한다고 한다.

func logging(format string, v ...interface{}) {
    fmt.Printf(format, v...)
    log.Printf(format, v...)
}


다시 테스트를 해보니, 원하는대로 동작한다.

반응형

'개발 > Go' 카테고리의 다른 글

[Go] set timezone  (0) 2016.06.28
[Go] XML Marshal / UnMarshal  (0) 2016.06.28
[Go] SyntaxHighlighter  (0) 2016.06.28
[Go] LumberJack for Logging  (0) 2016.06.28
[개발환경] Go + SubLimeText 3 + GoSublime  (0) 2016.06.11
,