Ace-T's Blog 내 검색 [네이버 커넥트 이웃 합니다~^-^/ 요청 大 환영~~]

Review

Language/go lang 2017.10.24 19:33
[Good Comment!!, Good Discussion!!, Good Contens!!]
[ If you think that is useful, please click the finger on the bottom~^-^good~ ]
by ace-T



java 말고 golang

input / output은 동일하게 / export되지 않는 함수면 소문자로 SetValue (X) setValue(O)

acet.EntityInfo = setValue(acet.EntityInfo)

interface conversion

switch문을 사용할 수 있다. 해당 case의 타입이 들어오면 맞는 case 구문을 타게 된다.

ex) Body가 인터페이스 형태  

switch acet.Body.(type) {

case *xxx.xxxx:

case *aaa.xxxx:

default :

}







저작자 표시 비영리 변경 금지
신고

'Language > go lang' 카테고리의 다른 글

Review  (0) 2017.10.24
test code..반성!  (0) 2017.10.13
golang Context란?  (0) 2017.09.07
go lang - Map  (0) 2017.07.05
golang 정리  (0) 2017.05.18
GOROOT와 GOPATH  (0) 2017.04.27

acet 박태하가 추천하는 readtrend 추천글!

설정

트랙백

댓글

:::: facebook을 이용하시는 분들은 로그인 후 아래에 코멘트를 남겨주세요 ::::

test code..반성!

Language/go lang 2017.10.13 14:05
[Good Comment!!, Good Discussion!!, Good Contens!!]
[ If you think that is useful, please click the finger on the bottom~^-^good~ ]
by ace-T

java나 go lang이나 테스트 코드가 있다.

테스트 주도 개발이 좋다고 책에서 많이 보았다. 하지만 정작 그러한 책들을 보았음에도 불구하고..

간만에 코드를 짜게 되었는데..(그동안 서버 발주부터 셋팅, ACL 신청 등등 이러한 일들을 했다.)

테스트 코드를 짜야겠다는 생각을 하지 않은채 코드를 짰고, 테스트도 리퀘스트 부분만 잘들어가는지 대충 확인하고 다되었다고 PR을 날렸다.

리뷰의 결과는 창피했다.

왜 나는 꼼꼼하게 테스트 코드를 짜면서 테스트를 하지 않았을까?

당연..테스트 코드를 짜기가 부담스러웠나보다..또는 단순하게만 테스트 코드를 짜왔을지도 모른다.

막상 하려고보니..멍~하다. 

자..그럼 이제 무엇을 해야할까?

1) 앞으로 계속 두려워하며 쫄아서 피할것인가?

                   OR

2) 두려움을 극복하려고 노력할 것인가?


당연히 2번인가? 그렇다면 어떻게 노력할 것인가? 이게 가장 중요한 포인트 이다.

지금 이렇게 포스팅을 하는 이유도 노력의 시작의 일부임에는 틀림없다.

이제 시작되었으니 제대로 파악해서 제대로 사용해보자.

화이팅!



저작자 표시 비영리 변경 금지
신고

'Language > go lang' 카테고리의 다른 글

Review  (0) 2017.10.24
test code..반성!  (0) 2017.10.13
golang Context란?  (0) 2017.09.07
go lang - Map  (0) 2017.07.05
golang 정리  (0) 2017.05.18
GOROOT와 GOPATH  (0) 2017.04.27

설정

트랙백

댓글

:::: facebook을 이용하시는 분들은 로그인 후 아래에 코멘트를 남겨주세요 ::::

golang Context란?

Language/go lang 2017.09.07 16:33
[Good Comment!!, Good Discussion!!, Good Contens!!]
[ If you think that is useful, please click the finger on the bottom~^-^good~ ]
by ace-T


https://golang.org/pkg/context/   or https://godoc.org/golang.org/x/net/context

Package context는 마감 시간, 취소 신호 및 기타 요청 범위 값을 API 경계와 프로세스간에 전달하는 컨텍스트 유형을 정의합니다.

서버에 들어오는 요청은 컨텍스트를 만들어야하며 서버로 나가는 호출은 컨텍스트를 받아 들여야합니다. 이들 사이의 함수 호출 체인은 컨텍스트를 전파해야하며 선택적으로 WithCancel, WithDeadline, WithTimeout 또는 WithValue를 사용하여 생성 된 파생 된 컨텍스트로 대체해야합니다. 컨텍스트가 취소되면 그 컨텍스트도 파생됩니다.


작성 중~

저작자 표시 비영리 변경 금지
신고

'Language > go lang' 카테고리의 다른 글

Review  (0) 2017.10.24
test code..반성!  (0) 2017.10.13
golang Context란?  (0) 2017.09.07
go lang - Map  (0) 2017.07.05
golang 정리  (0) 2017.05.18
GOROOT와 GOPATH  (0) 2017.04.27

acet 박태하가 추천하는 readtrend 추천글!

설정

트랙백

댓글

:::: facebook을 이용하시는 분들은 로그인 후 아래에 코멘트를 남겨주세요 ::::

go lang - Map

Language/go lang 2017.07.05 17:09
[Good Comment!!, Good Discussion!!, Good Contens!!]
[ If you think that is useful, please click the finger on the bottom~^-^good~ ]
by ace-T

go는 변수명 다음에 자료형이 온다.
ex) var acet string 

java는 반대이다.
ex) String acet;

Map
go
var 맵명 map[키 자료형]값 자료형
ex) var acet map[string]int 
할당은 make 사용! 예제는 아래에 있음.

java는 
HashMap<String, int> acet = new HashMap<String, int>


코드를 보자!
아래의 사이트에서 바로 테스트 해보면 된다.
https://tour.golang.org/moretypes/19

package main

import "fmt"

func main() {

    // 자바에서는 new가 있다면 go에서는 make로 map을 할당한다.
    var acet map[string]string = make(map[string]string)
    acet = map[string]string{"a":"aaaa"}    
    fmt.Println(acet["a"])
    
     var mae = make(map[string]string)
     mae = map[string]string{"mae":"bbbb"}
     fmt.Println(mae["mae"])
    
     lov := make(map[string]string)
     lov = map[string]string{  // 뉴라인으로 하려면 마지막에 콤마(,)가 필요함.
         "haha":"cccc",
         "hoho":"dddd",
     }
     fmt.Println(lov["haha"])    
    
     // key가 없는지 알수 있는 방법은 리턴값 두번째를 이용. 없으면 false 리턴!
     solaSystem := make(map[string]string)
     solaSystem["earth"] ="my galaxy"
     // 자바는 put 사용. solaSystem.put("earth", "my galaxy");
     solaSystem["earth2"] ="goood~"
     fmt.Println(solaSystem["earth"])
     // 자바는 get 사용. solaSystem.get("earth");
    
     value, ok := solaSystem["mars"]
     fmt.Println(value, ok)
    
     // java와 달리 if구문에 괄호가 없다! 아래와 같이 요상하게 보일만한 문법을 자주 사용!
     // 리턴도 2개 이상..깜놀;
     // 자바에서는 키가 있는지 확인은 solaSystem.containsKey("earth2");를 사용.
     if value, ok := solaSystem["earth2"]; ok {
         fmt.Println(value)
    
     }
    
     // 맵 순회 -> for 키, 값 := range 맵{}
     for key, value := range solaSystem {
         fmt.Println(key, value)    
     }
    
     // value를 사용하고 싶지 않다면 언더바(_) 사용..허허~
     for key, _ := range solaSystem {
         fmt.Println(key, value)    
     }
    
     //맵에서 데이터 삭제!
     // 자바에서는 solaSystem.remove("earth"); 를 사용.
     delete(solaSystem, "earth")
     _, isOk := solaSystem["earth"]
     fmt.Println(isOk)
    
    
}

결과




저작자 표시 비영리 변경 금지
신고

'Language > go lang' 카테고리의 다른 글

test code..반성!  (0) 2017.10.13
golang Context란?  (0) 2017.09.07
go lang - Map  (0) 2017.07.05
golang 정리  (0) 2017.05.18
GOROOT와 GOPATH  (0) 2017.04.27
go land에서 formatting 설정하기  (0) 2017.04.26

acet 박태하가 추천하는 readtrend 추천글!

설정

트랙백

댓글

:::: facebook을 이용하시는 분들은 로그인 후 아래에 코멘트를 남겨주세요 ::::

golang 정리

Language/go lang 2017.05.18 14:42
[Good Comment!!, Good Discussion!!, Good Contens!!]
[ If you think that is useful, please click the finger on the bottom~^-^good~ ]
by ace-T




func NewRequest(method, urlStr string, body io.Reader) (*Request, error) {


NewRequest는 메소드, URL 및 선택적 본문에 대해 새 Request를 반환합니다.
제공된 본문이 io.Closer 인 경우 반환되는 Request.Body가 body로 설정되고 클라이언트에 의해 닫힙니다. 
메소드 Do, Post, PostForm, Transport.RoundTrip.NewRequest는 Client.Do와 함께 사용하기에 적합한 Request를 반환하거나 Transport.RoundTrip.
테스트에 사용할 요청을 만들려면 Server Handler는 다음과 같이 NewRequest 함수를 사용합니다. 
net / http / httptest 패키지를 사용하거나 ReadRequest를 사용하거나 필드를 요청하십시오. 요청 유형에 대한 설명서를 참조하십시오. 
인바운드 및 아웃 바운드 요청 필드의 차이. 
body가 * bytes.Buffer, * bytes.Reader 또는 * 형식 인 경우
* strings.Reader, 반환 된 요청의 ContentLength는 
정확한 값 (-1 대신), GetBody가 채워집니다 (따라서 307과 308 리디렉션은 본문을 재생할 수 있음). 본문은 NoBody로 설정됩니다. 

ContentLength는 0입니다. 


}




func (r *Request) WithContext(ctx context.Context) *Request {


WithContext는 컨텍스트가 변경된 r의 얕은 복사본을 반환합니다. 

to ctx. 제공된 ctx는 nil이 아니어야합니다. 

}



- 계속 -

저작자 표시 비영리 변경 금지
신고

'Language > go lang' 카테고리의 다른 글

golang Context란?  (0) 2017.09.07
go lang - Map  (0) 2017.07.05
golang 정리  (0) 2017.05.18
GOROOT와 GOPATH  (0) 2017.04.27
go land에서 formatting 설정하기  (0) 2017.04.26
go lang Tip.  (0) 2017.02.15

acet 박태하가 추천하는 readtrend 추천글!

설정

트랙백

댓글

:::: facebook을 이용하시는 분들은 로그인 후 아래에 코멘트를 남겨주세요 ::::

GOROOT와 GOPATH

Language/go lang 2017.04.27 13:42
[Good Comment!!, Good Discussion!!, Good Contens!!]
[ If you think that is useful, please click the finger on the bottom~^-^good~ ]
by ace-T



https://github.com/golang/go/wiki/GOPATH


GOPATH 환경 변수는 Go 프로젝트 및 해당 바이너리 소스를 포함하는 $ GOROOT 외부의 디렉토리를 지정하는 데 사용됩니다.

GO Lang은 아래와 같은 구조로 강제성을 가진다.

terrypark@MacBook-Pro:~/go$ ll -rw-r--r--@ 1 terrypark staff 6148 4 26 13:41 .DS_Store drwxr-xr-x 19 terrypark staff 646 4 4 17:21 bin drwxr-xr-x 3 terrypark staff 102 2 2 11:13 pkg drwxr-xr-x 9 terrypark staff 306 3 2 14:20 src


/Users/terrypark/go/src/github.com/ace-t/test-code

위와 같이 go directory 아래는 src 즉, 소스부분이 된다.

go install 수행 시 bin에 바이너리가 만들어진다.


GOPATH부분은 아래를 보면 어디까지가 GOPATH인지 가늠할 수가 있다.


$GOPATH/src/code.google.com/p/gomatrix


ex) jenkins에서 go build 시

export GOPATH=$WORKSPACE/$BUILD_NUMBER

echo "build=>"+$GOPATH

cd $GOPATH/src/github..com/ace-t/xxxProject

glide install

go build

echo "go build end" 


IDE에서도 알수가 있는데 GOPATH와 GPROOT는 아래와 같다.



저작자 표시 비영리 변경 금지
신고

'Language > go lang' 카테고리의 다른 글

go lang - Map  (0) 2017.07.05
golang 정리  (0) 2017.05.18
GOROOT와 GOPATH  (0) 2017.04.27
go land에서 formatting 설정하기  (0) 2017.04.26
go lang Tip.  (0) 2017.02.15
go lang - fresh를 사용해 보자.  (0) 2017.02.15

acet 박태하가 추천하는 readtrend 추천글!

설정

트랙백

댓글

:::: facebook을 이용하시는 분들은 로그인 후 아래에 코멘트를 남겨주세요 ::::

go land에서 formatting 설정하기

Language/go lang 2017.04.26 18:57
[Good Comment!!, Good Discussion!!, Good Contens!!]
[ If you think that is useful, please click the finger on the bottom~^-^good~ ]
by ace-T

go land에서 formatting 설정하기


1.  Preferences.. > Plugins 에서 File Watchers를 install 합니다.



2. File Watchers > gofmt 설정. go bin에 gofmt가 없다면 goimports로 해도 된다.

Arguments: -w $FilePath$


저작자 표시 비영리 변경 금지
신고

'Language > go lang' 카테고리의 다른 글

golang 정리  (0) 2017.05.18
GOROOT와 GOPATH  (0) 2017.04.27
go land에서 formatting 설정하기  (0) 2017.04.26
go lang Tip.  (0) 2017.02.15
go lang - fresh를 사용해 보자.  (0) 2017.02.15
go lang을 해보자.  (0) 2017.02.03

acet 박태하가 추천하는 readtrend 추천글!

설정

트랙백

댓글

:::: facebook을 이용하시는 분들은 로그인 후 아래에 코멘트를 남겨주세요 ::::

go lang Tip.

Language/go lang 2017.02.15 17:45
[Good Comment!!, Good Discussion!!, Good Contens!!]
[ If you think that is useful, please click the finger on the bottom~^-^good~ ]
by ace-T


tip_1 ) Test를 하고 싶다면?

아래와 같은 사이트가 있는데 이녀석은 테스트에서 사용 되어진다고 한다. 아직 사용해본적은 없지만 사용하게 되면 포스팅 하도록 하겠다.

http://goconvey.co/


tip_2) Mac에서 짠 뒤에 리눅스에서 동작하게 하려면?

build를 할 디렉토리에서 아래와 같이 env GOOS=linux라고 지정!

ex) env GOOS=linux go build


tip_3) go에서 패키지 관리는 어떻게 할까?

Java에 Maven같은게 있다면 Go는 glide라는 것이 있습니다.

https://github.com/Masterminds/glide

활용은 https://glide.sh/ 를 참조 또는 아래를 참조!

$ glide create                            # Start a new workspace - glide.yaml이 생성 된다!
$ open glide.yaml                         # and edit away!
$ glide get github.com/Masterminds/cookoo # Get a package and add to glide.yaml
$ glide install            # Install packages and dependencies - glide.lock(버전관리)가 생성.
# work, work, work
$ go build                 # Go tools work normally
$ glide up                 # Update to newest versions of the package - 사용잘 안함.

이것을 사용하는 이유는 디펜던시가 있는것은 패키지 관리에서 하면 좋다.

ex) $ glide get github.com/foo/bar


tip_4) go의 lib같은것은 어디서 검색하나? 구글? 다음?

https://godoc.org/

https://github.com/avelino/awesome-go

https://golanglibs.com/

위의 사이트에서 우선 찾아보자! 없는게 없다~


tip_5) golang study site

https://tour.golang.org/list




저작자 표시 비영리 변경 금지
신고

'Language > go lang' 카테고리의 다른 글

golang 정리  (0) 2017.05.18
GOROOT와 GOPATH  (0) 2017.04.27
go land에서 formatting 설정하기  (0) 2017.04.26
go lang Tip.  (0) 2017.02.15
go lang - fresh를 사용해 보자.  (0) 2017.02.15
go lang을 해보자.  (0) 2017.02.03

acet 박태하가 추천하는 readtrend 추천글!

설정

트랙백

댓글

:::: facebook을 이용하시는 분들은 로그인 후 아래에 코멘트를 남겨주세요 ::::

go lang - fresh를 사용해 보자.

Language/go lang 2017.02.15 17:29
[Good Comment!!, Good Discussion!!, Good Contens!!]
[ If you think that is useful, please click the finger on the bottom~^-^good~ ]
by ace-T


이번 내용은 go get 이라는 명령어를 통해 Fresh 라는 것을 사용해 보자.

Fresh is a command line tool that builds and (re)starts your web application everytime you save a Go or template file.

저장 하면 바로바로 적용이 된다.

https://github.com/pilu/fresh 에서 README.md를 참조!


Installation

go get github.com/pilu/fresh


실행은 어플리케이션이 있는 곳으로 이동한 뒤에 fresh 라는 명령어를 쳐주면 서버가 기동 되어진다.

fresh의 프로세스를 kill을할 때 유의 점으로는 fresh 말고도 runner_build라는것을 kill 해주어야 한다.





저작자 표시 비영리 변경 금지
신고

'Language > go lang' 카테고리의 다른 글

golang 정리  (0) 2017.05.18
GOROOT와 GOPATH  (0) 2017.04.27
go land에서 formatting 설정하기  (0) 2017.04.26
go lang Tip.  (0) 2017.02.15
go lang - fresh를 사용해 보자.  (0) 2017.02.15
go lang을 해보자.  (0) 2017.02.03

acet 박태하가 추천하는 readtrend 추천글!

설정

트랙백

댓글

:::: facebook을 이용하시는 분들은 로그인 후 아래에 코멘트를 남겨주세요 ::::

go lang을 해보자.

Language/go lang 2017.02.03 10:39
[Good Comment!!, Good Discussion!!, Good Contens!!]
[ If you think that is useful, please click the finger on the bottom~^-^good~ ]
by ace-T

  1. 링크를 통해 OS에 맞는 것을 다운 받는다. (https://golang.org/dl/)
  2. home에서 go dir를 하나 만들어준다.
  3. 다운 받은 pkg를 클릭클릭 하여 셋팅해준다.
  4. .bash_profile에 환경변수를 잡아준다. 

        # GOPATH
        export GOPATH=$HOME/go
        PATH=${PATH}:/usr/local/go/bin:${GOPATH}/bin

    5. go 라는 명령어를 통해 잘 깔렸는지 확인.

더보기


go가 이제 셋팅 되었다! 코드를 짜기전에 github에 레파지토리를 하나 만들자.

   6. github repository 생성

위에서 home밑에 go 디렉토리를 만들어줬다. 이제 그 아래에 src라는 디렉토리를 하나 더 만든다.(go lang 구조)

그런뒤에  /goStudy github의 레파지토리를 디렉토리로 만들어준다.

home>go>src>ace-t>goStudy dir이 만들어졌다면 이 안에서 git clone을 해준다.

ex) terrypark@MacBook-Pro:~/go/src/ace-t/goStudy$ git clone https://github.com/ace-t/goStudy.git

아래처럼 .git과 README.md가 보일 것이다.


이제! 대망의 소스를 코딩 해 보자! 필자는 지인분이 추천해준 해당 사이트를 따라해보려고 합니다.(https://mingrammer.com/gobyexample/)

먼저 go 파일을 하나 만들어줍니다.

terrypark@MacBook-Pro:~/go/src/ace-t/goStudy/goStudy$ vi hello-world.go

아래와 같이 소스를 코딩합니다.

package main

import "fmt"

func main() {

        fmt.Println("hello world")

}


실행해봅니다.

terrypark@MacBook-Pro:~/go/src/ace-t/goStudy/goStudy$ go run hello-world.go

hello world


이제~~위의 사이트에서 문법을 차근차근 해보면 되겠습니다.

어느정도 문법이 익숙해지면 좀 더 들어가보도록 하겠습니다.

ace-t github : https://github.com/ace-t/goStudy/tree/develop

github을 많이 사용하도록 해봐야겠습니다. ㅎㅎ

  - 끝 -




저작자 표시 비영리 변경 금지
신고

'Language > go lang' 카테고리의 다른 글

golang 정리  (0) 2017.05.18
GOROOT와 GOPATH  (0) 2017.04.27
go land에서 formatting 설정하기  (0) 2017.04.26
go lang Tip.  (0) 2017.02.15
go lang - fresh를 사용해 보자.  (0) 2017.02.15
go lang을 해보자.  (0) 2017.02.03

acet 박태하가 추천하는 readtrend 추천글!

설정

트랙백

댓글

:::: facebook을 이용하시는 분들은 로그인 후 아래에 코멘트를 남겨주세요 ::::

티스토리 툴바