Web240 go언어 문자열 slice를 string 으로 합치기 join 함수 strings.Join에서 첫번째 파라미터는 slice, 두번째 파라미터는 Join 할 때 각 문자열 사이 구분자를 추가할것인지를 나타냅니다. func main() { source := []string{"how", "are", "you"} // 구분자 - 사용함 output := strings.Join(source, "-") fmt.Println(result1) // 구분자 사용안함 output2:= strings.Join(source, "") fmt.Println(result2) } 결과: how-are-you howareyou 출처: https://minooz.tistory.com/187 [우주 Blog] Web/GoLang 2021. 7. 28. Go SQL error “converting NULL to string is unsupported” 사용예 MSSQL 에서 null 값이 들어오는 곳에 필요함 솔직히 이해가 안가는데, select로 null 이 들어오면 nil로 컨버팅 되서 문제 없을 거라 생각되는데, 에러가 발생 ... sql.NullString, sql.NullInt64 이렇게 변경해서 받고, 다시 info.Int64 이렇게 변환해서 사용 더 편한방법이 있으면 수정예정 go는 정말 다른언어랑 너무 다른듯 싶음 Go is a strongly typed programming language, and many SQL databases can also support unknown values. These values can lead to complications in Go when it encounters unexpected results.. Web/GoLang 2021. 7. 28. Golang 구조체 설명 Golang에는 class 개념 대신 struct개념이 있습니다. 쉽게말해 C나 C++에 있는 struct입니다. 하지만 Golang에는 다른 OOP와는 다르게, class의 역할중 생성자, 맴버변수 선언을 하지 못합니다. 또한 private, public이라는 개념이 따로 없으며, pirvate과 public이라는 선언대신 해당 struct를 외부에서 가져다 사용하거나 내부에서 사용할때의 기준을 정할 수 있습니다. 선언 방법은 다음과 같습니다. 1. 스택에 구조체 선언 package main import "fmt" type A struct { name string num int } func main() { a := A{} a.name = "hwan" a.num = 10 } 위와 같이 선언하면 사용할 수.. Web/GoLang 2021. 7. 28. [go/golang] SP 프로시저 list 와 ouput parameter 동시에 사용하기 배경 - 내가 필요한건, go에서 SP로 호출시, select 리스트와 ouput 파라미터 두개를 한 프로시저로 받고 싶다 - 기존 코드에는 다중 output 프로시저는 있는데, 위와같이 list, ouput이 함께 리턴받을 수 있는 코드가 없었음 문제점 기존 mssql 클라이언트는 https://github.com/denisenkom/go-mssqldb 라이브러리를 사용하고 있어서, 이걸로 어떻게든 해결했어야 했음 이 문서는 자세하진 않지만 그래도 방법이 나와있긴 했음 ( 그러나 안됨 ) var account = "abc" _, err := db.ExecContext(ctx, "sp_RunMe", sql.Named("ID", 123), sql.Named("Account", sql.Out{Dest: &a.. Web/GoLang 2021. 7. 28. [Go/Golang] 구조체 JSON 변환 시, omitempty가 적용되지 않는 경우 https://wookiist.dev/127 결론먼저 요약해보자면, 필드의 자료형이 구조체일 때, 해당 구조체가 omitempty 태그의 영향을 받아서 데이터가 없을 때 필드의 이름도 출력되지 않도록 하고 싶다면, 필드의 자료형을 구조체 포인터로 선언해주면 됩니다. Prologue Go에서 오브젝트를 JSON으로 변환하려면, 해당 오브젝트를 기술하는 구조체가 선언되어 있어야 합니다. 예를 들자면 다음과 같습니다. type Score struct { Korean uint `json:"korean,omitempty"` Math uint `json:"math,omitempty"` English uint `json:"english,omitempty"` } type UserV1 struct { UserName s.. Web/GoLang 2021. 7. 28. [Golang] Json 데이터를 파싱할때 자동으로 형변환까지 한번에 하는 방법 Golang의 기본 패키지 Json는 여러 기능을 제공한다. 이번 포스트에서는 의외로 사람들이 모르는 꿀팁을 공유하려고 한다. Json {"key1":1, "key2":"2", "key3":[1,2,3]} 예를들어서 이렇게 생긴 Json 구조가 있다고 할때 key1 은 integer이나 key2 는 string 형태이다. type AutoGenerated struct { Key1 int `json:"key1"` Key2 string `json:"key2"` Key3 []int `json:"key3"` } type AutoGenerated struct { Key1 int `json:"key1"` Key2 string `json:"key2"` Key3 []int `json:"key3"` } 일반적으로 위 k.. Web/GoLang 2021. 7. 28. [Golang] 튜토리얼 웹에서 go 실행 https://tour.golang.org/moretypes/15 Web/GoLang 2021. 7. 28. [MSSQL] [Golang] 프로시저 내부에 다중 select 이슈 문제점 - 사용하고 있는 프로시저(A) 안에 다른 프로시저(B)를 호출하고 있음. B프로시저에서 select 문이 존재함 - 해당 (A)프로시저 실행시 이렇게 결과가 두개가 나오게 됨 ( select 문 때문에 ) - 이 경우에 닷넷에서는 마지막 결과값인 return value를 받아오는데, golang 에서는 첫번째인 0 값을 가져옴 ( 확실하지 않지만 결과상으로는 닷넷에서는 마지막을 본다고 생각됨 ) - 원하는건 golang에서 return value를 가져오고 싶음 - golang 코드로는 해결 불가능 하다고 결론 해결법 1. golang 코드상으로는 해결이 안된다고 판단. 결론적으로는 프로시저를 수정해야 함 2. B프로시저는 공통으로 사용하고있어 변경하기가 조금 부담 3. 아래 참고를 바탕으로, .. Web/GoLang 2021. 7. 14. [Golang] gitlab subgroup repository import 하기, 에러시 대처법 문제사항 내부 프로젝트를 import 시키려는데 하위주소가 3depth 이상이면 정상적으로 improt 되지 않는다 - gitlab의 subgroup의 리파짓토리를 사용하면 아래처럼 도메인 하단의 패스가 3개가 된다 ex) gitlab.com/aaa/bbb/ccc 이렇게 되면 golang이 정상적으로 읽어오지 못한다 에러가 아마 이렇게 나올것이다 ( gitlab.com/aaa/bbb/ccc/ccc 리파짓토리를 찾을수 없다 ) 이런식으로 마지막 주소가 한번더 호출이 된다 .. ccc는 리파짓토리명이다 해결법 1. https://www.popit.kr/%EA%B3%A0-%EB%AA%A8%EB%93%88%EA%B3%BC-%ED%95%A8%EA%BB%98-%EB%B9%84%EA%B3%B5%EA%B0%9C-%EC.. Web/GoLang 2021. 6. 12. [spring cloud config] git 안쓰고 properties 사용하기 조건 일반적으로 cloud config 에서 git 을 사용하라고 대부분의 자료가 나와있음 상황상 git이 끊길 수 있는 상황이여서 다른 방법대체 해결 (이게 올바른 방법인지는 정확치 않음 ) 설정파일들 (properties)을 blob 파일로 저장해둔다 기존에는 이런식을 사용함 spring.cloud.config.server.git.uri= 이 걸로 대체함 spring.cloud.config.server.native.searchLocations= spring.profiles.active=native Web/SpringBoot 2021. 2. 18. kafka 컨슈머 실패시 Exception 으로 조건 구분하기 Exception체크 목표 Exception을 다르게 발생시켜서 받는곳에서 익셉션에따라 다른 작동하게 하기 카프카에서 했던 내용이지 익셉션이 주된 내용이다 spring의 Exception핸들러라면 이런식으로 안하고 어노테이션으로 해도 자동으로 읽어갈텐데, 컨슈머는 익셉션 발생시 재시도(RecoveryCallback)에서 익셉션을 구분했어야 했다. ( commit 할지 안할지 선택해야해서 ) 이 경우 익셉션을 구분하려고 여러문서를 찾아봄 전체코드중 ... 몇가지만 가능한 부분이었음 처음에 정리를 안해놨더니.... 정확한건 기억이안남. 컨슈머에서 throw new BusinessException("http status not 200"); 발생 -> 재시도코드에서 받는다. 카프카 컨슈머 에러시 재시도 코드 @Bean public .. Web/스프링 2020. 8. 26. Get RequestBody and ResponseBody at HandlerInterceptor 컨트롤러 추가 호출 목표 스프링 REST API 호출시.. 해당 api를 파라미터값만 바꿔서 내부적으로 한번 더 실행시키게 하고 싶었다. 다른 해결방식도 있겠지만.. 이렇게는 안해봐서 .. 찾아봄 목표를 인터셉터 또는 필터로 해당 api 메소드 한번 더 실행하는걸로 잡았음 결과 테스트하고 자료 많이 찾아봤는데.. 개인적인 생각으로 이런 방식은 안쓰는게 좋은 것 같음 .. 일단 비슷한 방식으로 재호출은 구현 가능했음 아래와 같이 인터셉터에서 api 한번 더 실행은 일단 가능한데 .. 인터셉터 전에 응답값은 가져올수 없는것 같다 응답값도 가져왔다면 원하는대로 구현이 가능했을것임 .. 찾으면 더 나은 방법을 찾을 수 있을거같긴한데... 이렇게 쓰는게 spring 구조상 정석처럼 쓰는게 아니어서 굳이 이방법을 고수하지는 않았음.... Web/스프링 2020. 7. 28. 이전 1 2 3 4 5 6 7 ··· 20 다음