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

golang + github Permanently added the RSA host key

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


Permanently added the RSA host key

공개키 에러인데 ..github서버에 파일을 push하려고 보니 현재 인증된게 하나도 없는 상태이다.
공개키를 github에 등록을 해주어야한다.


아래처럼 우선 공개키가 있는지 확인해보자.

공개키가 없다면..

2016/08/29 - [OS/Linux&Unix] - SSH 유용정보!



github에 id_rsa.pub 의 내용을 넣으면 된다.


잘 push  되었음을 알수가 있다.

  - 끝 -


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

용어 - multiplexer  (0) 2018.03.16
golang + github Permanently added the RSA host key  (0) 2018.03.05
golang + github ignore setting  (0) 2018.03.05
기초) golang project 만들어보기!  (0) 2018.03.05
golang setting  (0) 2018.03.02
chi package  (0) 2018.03.02

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

설정

트랙백

댓글

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

golang + github ignore setting

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


github에 push하는데 있어서 무시해야하는 파일들은 무시하도록 설정한다. 아래 링크 참고!

2016/03/23 - [OpenSource/Spring Boot] - ace-t의 Spring Boot 따라잡기(기본 - SourceTree에 연결 및 Repository에 올리기)


https://www.gitignore.io/

에서 go와 intelij+imi를 선택한다.

복사 후 아래의 파일에 저장 시키면 된다.


다시 github을 열었을 때 imi파일들은 사라지고 아래의 커밋대상만 보이면 성공!


  - 끝 -

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

용어 - multiplexer  (0) 2018.03.16
golang + github Permanently added the RSA host key  (0) 2018.03.05
golang + github ignore setting  (0) 2018.03.05
기초) golang project 만들어보기!  (0) 2018.03.05
golang setting  (0) 2018.03.02
chi package  (0) 2018.03.02

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

설정

트랙백

댓글

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

golang setting

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




참조 : golang 셋팅

  1. Go 설치
    1. https://golang.org/dl/


B. goland 사용



workspace에는 src와 더불어 bin, pkg 서브 폴더를 만들어준다.



go env를 통해 GOROOT와 GOPATH를 확인한다.


GoLand를 사용

이제 재미난 코딩과 함께~아키텍처구조를 잡아보자^0^


2017/04/26 - [Language/go lang] - go land에서 formatting 설정하기

위의 프로젝트가 조금 잘못 만든거 같다.

프로젝트는 아래의 링크를 보도록 하자.

2018/03/05 - [Language/go lang] - 기초) golang project 만들어보기!





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

golang + github ignore setting  (0) 2018.03.05
기초) golang project 만들어보기!  (0) 2018.03.05
golang setting  (0) 2018.03.02
chi package  (0) 2018.03.02
go lang song? zz  (0) 2018.02.20
golang factory  (0) 2018.02.13

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

설정

트랙백

댓글

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

chi package

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

HTTP Service를 구현할 때 사용한다.

Go 1.7이나 그 이상에서 사용이 가능하다.

package main

import (
	"net/http"

	"github.com/go-chi/chi"
	"github.com/go-chi/chi/middleware"
)

func main() {
	r := chi.NewRouter()
	r.Use(middleware.Logger)
	r.Use(middleware.Recoverer)

	r.Get("/", func(w http.ResponseWriter, r *http.Request) {
		w.Write([]byte("root."))
	})

	http.ListenAndServe(":3333", r)
}

여러가지 함수들이 다양하기 때문에 가지고 놀아봐야 제대로 알듯 하다.

chi package는 크게 Context, Middleware, Mux, Route 등으로 구성되어져있다고 보면 된다.

참고 : https://godoc.org/github.com/go-chi/ch


그 중 Type Route은 아래와 같다.

Use : Mux middleware stack에 middleware handler를 추가 한다.   
        Mux를 위한 
middleware stack은 매칭을 검색하기 전에 실행 된다.
        특정 핸들러로 route하여 조기에 응답할 수 있는 기회를 제공 한다.
        그리고 요청 실행과정을 변경하거나 요청 범위 값을 다음 http.Handler를 위해 설정 합니다. 


// Use appends a middleware handler to the Mux middleware stack.
//
// The middleware stack for any Mux will execute before searching for a matching
// route to a specific handler, which provides opportunity to respond early,
// change the course of the request execution, or set request-scoped values for
// the next http.Handler.
func (mx *Mux) Use(middlewares ...func(http.Handler) http.Handler) {
if mx.handler != nil {
panic("chi: all middlewares must be defined before routes on a mux")
}
mx.middlewares = append(mx.middlewares, middlewares...)
}


Middlewares

// Middlewares type is a slice of standard middleware handlers with methods
// to compose middleware chains and http.Handler's.
type Middlewares []func(http.Handler) http.Handler


Route : 새로운 middleware stack이 있는 새로운 Mux를 만들고 Sub Router로 패턴을 따라 마운트 한다.


// Route creates a new Mux with a fresh middleware stack and mounts it
// along the `pattern` as a subrouter. Effectively, this is a short-hand
// call to Mount. See _examples/.
func (mx *Mux) Route(pattern string, fn func(r Router)) Router {
subRouter := NewRouter()
if fn != nil {
fn(subRouter)
}
mx.Mount(pattern, subRouter)
return subRouter
}


Mount 


// Mount attaches another http.Handler or chi Router as a subrouter along a routing
// path. It's very useful to split up a large API as many independent routers and
// compose them as a single service using Mount. See _examples/.
//
// Note that Mount() simply sets a wildcard along the `pattern` that will continue
// routing at the `handler`, which in most cases is another chi.Router. As a result,
// if you define two Mount() routes on the exact same pattern the mount will panic.
func (mx *Mux) Mount(pattern string, handler http.Handler) {


Handle : http method와 일치하는 'handler' http.Handler를 실행한다.

// Handle and HandleFunc adds routes for `pattern` that matches
// all HTTP methods.
Handle(pattern string, h http.Handler)
HandleFunc(pattern string, h http.HandlerFunc)


Handler > ServeHTTP


// A Handler responds to an HTTP request.
//
// ServeHTTP should write reply headers and data to the ResponseWriter
// and then return. Returning signals that the request is finished; it
// is not valid to use the ResponseWriter or read from the
// Request.Body after or concurrently with the completion of the
// ServeHTTP call.
//
// Depending on the HTTP client software, HTTP protocol version, and
// any intermediaries between the client and the Go server, it may not
// be possible to read from the Request.Body after writing to the
// ResponseWriter. Cautious handlers should read the Request.Body
// first, and then reply.
//
// Except for reading the body, handlers should not modify the
// provided Request.
//
// If ServeHTTP panics, the server (the caller of ServeHTTP) assumes
// that the effect of the panic was isolated to the active request.
// It recovers the panic, logs a stack trace to the server error log,
// and either closes the network connection or sends an HTTP/2
// RST_STREAM, depending on the HTTP protocol. To abort a handler so
// the client sees an interrupted response but the server doesn't log
// an error, panic with the value ErrAbortHandler.
type Handler interface {
ServeHTTP(ResponseWriter, *Request)
}



참고 

type Router interface {
    http.Handler
    Routes

    // Use appends one of more middlewares onto the Router stack.
    Use(middlewares ...func(http.Handler) http.Handler)

    // With adds inline middlewares for an endpoint handler.
    With(middlewares ...func(http.Handler) http.Handler) Router

    // Group adds a new inline-Router along the current routing
    // path, with a fresh middleware stack for the inline-Router.
    Group(fn func(r Router)) Router

    // Route mounts a sub-Router along a `pattern`` string.
    Route(pattern string, fn func(r Router)) Router

    // Mount attaches another http.Handler along ./pattern/*
    Mount(pattern string, h http.Handler)

    // Handle and HandleFunc adds routes for `pattern` that matches
    // all HTTP methods.
    Handle(pattern string, h http.Handler)
    HandleFunc(pattern string, h http.HandlerFunc)

    // Method and MethodFunc adds routes for `pattern` that matches
    // the `method` HTTP method.
    Method(method, pattern string, h http.Handler)
    MethodFunc(method, pattern string, h http.HandlerFunc)

    // HTTP-method routing along `pattern`
    Connect(pattern string, h http.HandlerFunc)
    Delete(pattern string, h http.HandlerFunc)
    Get(pattern string, h http.HandlerFunc)
    Head(pattern string, h http.HandlerFunc)
    Options(pattern string, h http.HandlerFunc)
    Patch(pattern string, h http.HandlerFunc)
    Post(pattern string, h http.HandlerFunc)
    Put(pattern string, h http.HandlerFunc)
    Trace(pattern string, h http.HandlerFunc)

    // NotFound defines a handler to respond whenever a route could
    // not be found.
    NotFound(h http.HandlerFunc)

    // MethodNotAllowed defines a handler to respond whenever a method is
    // not allowed.
    MethodNotAllowed(h http.HandlerFunc)
}





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

기초) golang project 만들어보기!  (0) 2018.03.05
golang setting  (0) 2018.03.02
chi package  (0) 2018.03.02
go lang song? zz  (0) 2018.02.20
golang factory  (0) 2018.02.13
golang - Package json  (0) 2018.02.09

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

설정

트랙백

댓글

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

golang factory

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


golang factory?


[ 호출부]

json.NewDecoder(reader).Decode(&msg)


[Decode]

func (dec *Decoder) Decode(v interface{}) error {
if dec.err != nil {
return dec.err
}

if err := dec.tokenPrepareForDecode(); err != nil {
return err
}

if !dec.tokenValueAllowed() {
return &SyntaxError{msg: "not at beginning of value"}
}

// Read whole value into buffer.
n, err := dec.readValue()
if err != nil {
return err
}
dec.d.init(dec.buf[dec.scanp : dec.scanp+n])
dec.scanp += n

// Don't save err from unmarshal into dec.err:
// the connection is still usable since we read a complete JSON
// object from it before the error happened.
err = dec.d.unmarshal(v)

// fixup token streaming state
dec.tokenValueEnd()

return err
}


위의 소스에서 Decode 함수를 보자.

err = dec.d.unmarshal(v)라는게 눈에 띈다.

아래의 Encode함수도 마찬가지로 err := e.marshal(v, encOpts{escapeHTML: enc.escapeHTML}) 이라는게 있다.

[Encode]

func (enc *Encoder) Encode(v interface{}) error {
if enc.err != nil {
return enc.err
}
e := newEncodeState()
err := e.marshal(v, encOpts{escapeHTML: enc.escapeHTML})
if err != nil {
return err
}

// Terminate each value with a newline.
// This makes the output look a little nicer
// when debugging, and some kind of space
// is required if the encoded value was a number,
// so that the reader knows there aren't more
// digits coming.
e.WriteByte('\n')

b := e.Bytes()
if enc.indentPrefix != "" || enc.indentValue != "" {
if enc.indentBuf == nil {
enc.indentBuf = new(bytes.Buffer)
}
enc.indentBuf.Reset()
err = Indent(enc.indentBuf, b, enc.indentPrefix, enc.indentValue)
if err != nil {
return err
}
b = enc.indentBuf.Bytes()
}
if _, err = enc.w.Write(b); err != nil {
enc.err = err
}
encodeStatePool.Put(e)
return err
}


아래의 링크를 타고 내용을 보면 Marshal의 값은 v를 재귀적으로 호출한다.  v는 인터페이스!  또한 발생한 값이 Marshal 인터페이스를 구현하고 nil pointer가

아닐 경우 MarshalJSON 메소드를 호출하여 JSON을 생성하는 프로세스이다. 그러므로 아래처럼 MarshalJSON메소드를 구현 해주면 그녀석이 발동 된다는 것이다.

func Marshal(v interface{}) ([]byte, error)

2018/02/09 - [Language/go lang] - golang - Package json


예를 들어 아래와 같이 메소드가 있다면 아래의 MarshalJSON()을 호출하여 그안에서 factory를 생성한다.

func (m *AceTMessage) MarshalJSON(b []byte) error {


m.Test = newFactory(m.Header.Type)


}


newFactory() 가 factory관련 소스이다.

var exFactory = map[string]func() Test{ // type에 따라 처리가 되어지는 구조.



- 끝 - 









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

chi package  (0) 2018.03.02
go lang song? zz  (0) 2018.02.20
golang factory  (0) 2018.02.13
golang - Package json  (0) 2018.02.09
valid 시 non zero value required 오류  (0) 2018.02.02
Review  (0) 2017.10.24

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

설정

트랙백

댓글

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

golang - Package json

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

import "encoding/json"

json 패키지는 RFC 4627에 정의 된 JSON의 인코딩 및 디코딩을 구현합니다. 

JSON 및 Go 값 간의 매핑은 marshal 및 unmarshal 함수에 대한 설명서에 설명되어 있습니다.

func Marshal(v interface{}) ([]byte, error)

Marshal은 v의 JSON 인코딩을 반환합니다. Marshal은 값 v를 재귀적으로 호출한다.
발생한 값이 
Marshal 인터페이스를 구현하고 nil 포인터가 아닌 경우 MarshalJSON 메서드를 호출하여 JSON을 생성합니다. 
MarshalJSON 메서드가 없지만 값이 encoding.TextMarshaler를 대신 구현하면 Marshal은 해당 MarshalText 메서드를
호출하고 결과를 JSON 문자열로 인코딩합니다. 
nil 포인터 예외가 반드시 필요한 것은 아니지만 UnmarshalJSON의 동작에서 비슷하고 필요한 예외를 모방합니다.
그렇지 않은 경우, Marshal은 다음과 같은 유형 종속 기본 인코딩을 사용합니다.

부울 값은 JSON 부울 값으로 인코딩됩니다. 부동 소수점, 정수 및 숫자 값은 JSON 숫자로 인코딩됩니다.

문자열 값은 유효한 UTF-8로 강제 변환 된 JSON 문자열로 인코딩되어 유효하지 않은 바이트를 유니 코드 대체 문자로 대체합니다. 꺽쇠 괄호 "<"및 ">"는 "\ u003c"및 "\ u003e"로 이스케이프 처리되어 일부 브라우저가 JSON 출력을 HTML로 오해하지 않게합니다. 앰퍼샌드 "&"도 같은 이유로 "\ u0026"로 이스케이프됩니다. 이 이스케이프는 SetEscapeHTML (false)가 호출 된 인코더를 사용하여 비활성화 할 수 있습니다. 배열 및 슬라이스 값은 JSON 배열로 인코딩됩니다. 단, [] 바이트는 base64 인코딩 된 문자열로 인코딩되고 nil 슬라이스는 null JSON 값으로 인코딩됩니다. 구조체 값은 JSON 객체로 인코딩됩니다. 각 내보내기 된 구조체 필드는 개체 이름으로 필드 이름을 사용하여 개체의 멤버가됩니다. 필드가 아래에 나와있는 이유 중 하나로 생략되지 않는 한 각 구조체 필드의 인코딩은 구조체 필드의 태그에서 "json"키 아래에 저장된 형식 문자열을 사용하여 사용자 정의 할 수 있습니다. 형식 문자열은 필드의 이름을 제공하며 그 뒤에 쉼표로 구분 된 옵션 목록이옵니다. 기본 필드 이름을 무시하지 않고 옵션을 지정하려면 이름이 비어있을 수 있습니다.

"omitempty"옵션은 필드에 빈 값이 있거나 false, 0, nil 포인터, nil 인터페이스 값 및 빈 배열, 슬라이스, 맵 또는 문자열로 정의 된 필드가 인코딩에서 생략되어야한다고 지정합니다. ex) Field int `json:"myName,omitempty"` / Field int `json:",omitempty"`

특수한 경우 필드 태그가 "-"인 경우 필드는 항상 생략됩니다. ex) Field int `json:"-"`

이름이 "-"인 필드는 여전히 "-"태그를 사용하여 생성 할 수 있습니다. ex) Field int `json:"-,"`

유니 코드 문자, 숫자 및 ASCII 구두점 (인용 부호, 백 슬래시 및 쉼표 제외)으로 구성된 비어 있지 않은 문자열 인 경우 키 이름이 사용됩니다.

익명 구조체 필드는 일반적으로 내부 내보내기 필드가 외부 구조체의 필드 인 것처럼 마샬링되며 다음 단락에서 설명하는대로 일반적인 Go 가시성 규칙이 수정됩니다. JSON 태그에 주어진 이름을 가진 익명 구조체 필드는 익명이 아닌 해당 이름을 가진 것으로 취급됩니다. 인터페이스 유형의 익명 구조체 필드는 익명이 아닌 이름으로 해당 유형을 갖는 것과 동일하게 취급됩니다.

마샬링 또는 언 마샬링 할 필드를 결정할 때 구조체 필드에 대한 가시성 규칙이 JSON에 맞게 수정되었습니다. 같은 레벨에 여러 개의 필드가 있고 해당 레벨이 가장 작은 중첩 된 경우 (따라서 일반 Go 규칙에 의해 선택된 중첩 레벨이 됨) 다음과 같은 추가 규칙이 적용됩니다.
1) 이러한 필드 중 JSON 태그가 있는 경우 태그가없는 필드가 여러 개있는 경우에도 태그가있는 필드만 고려됩니다.
2) 정확히 하나의 필드 (첫 번째 규칙에 따라 태그가 지정 되었는지 여부)가 선택되면 해당 필드가 선택됩니다.

3) 그렇지 않으면 여러 필드가 있으며 모두 무시됩니다. 오류가 발생하지 않습니다.

익명 구조체 필드의 처리는 Go 1.1에서 새로 추가되었습니다. Go 1.1 이전에는 익명 구조체 필드가 ​​무시되었습니다. 현재 버전과 이전 버전의 익명 구조체 필드를 강제로 무시하려면 해당 필드에 "-"JSON 태그를 지정하십시오.

예제)

func Unmarshal(data []byte, v interface{}) error

Unmarshal은 JSON으로 인코딩 된 데이터를 구문 분석하고 결과가 v가 가리키는 값에 저장합니다. v가 nil이거나 포인터가 아닌 경우 Unmarshal은 InvalidUnmarshalError를 반환합니다.

Unmarshal은 마샬러가 사용하는 인코딩의 역함수를 사용하여 필요에 따라 maps, slices 및 포인터를 할당하고 다음과 같은 추가 규칙을 사용합니다.

Unmarshal은 JSON을 포인터로 unmarshal하기 위해 먼저 JSON 리터럴 null 인 JSON의 대소문자를 처리합니다. 이 경우 Unmarshal은 포인터를 nil로 설정합니다. 그렇지 않으면, Unmarshal은 JSON을 포인터가 가리키는 값으로 unmarshal합니다. 포인터가 nil이면 Unmarshal은 포인터가 가리키는 새 값을 할당합니다.

JSON을 Unmarshaler 인터페이스를 구현하는 값으로 unmarshal하기 위해 Unmarshal은 입력 값이 JSON null 인 경우를 포함하여 해당 값의 UnmarshalJSON 메서드를 호출 합니다. 그렇지 않은 경우 값이 encoding.TextUnmarshaler를 구현하고 입력 값이 JSON 인용 문자열이면 Unmarshal은 해당 값의 UnmarshalText 메소드를 인용되지 않은 문자열 형식으로 호출합니다.

JSON을 구조체로 unmarshal하려면 Unmarshal이 들어오는 객체 키를 marshal(구조체 필드 이름 또는 해당 태그)에서 사용하는 키와 일치 시키며 정확히 일치하는 것을 선호하지만 대 / 소문자를 구분하지 않는 일치를 허용합니다. Unmarshal은 구조체의 내 보낸 필드 만 설정합니다.

JSON 배열을 Go 배열로 unmarshal하기 위해 Unmarshal은 JSON 배열 요소를 해당 Go 배열 요소로 디코딩합니다. Go 배열이 JSON 배열보다 작은 경우 추가 JSON 배열 요소가 삭제됩니다. JSON 배열이 Go 배열보다 작은 경우 추가 Go 배열 요소는 0 값으로 설정됩니다.

.








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

go lang song? zz  (0) 2018.02.20
golang factory  (0) 2018.02.13
golang - Package json  (0) 2018.02.09
valid 시 non zero value required 오류  (0) 2018.02.02
Review  (0) 2017.10.24
test code..반성!  (0) 2017.10.13

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

설정

트랙백

댓글

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

valid 시 non zero value required 오류

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


func checkRequired(v reflect.Value, t reflect.StructField, options tagOptionsMap) (bool, error) {
if requiredOption, isRequired := options["required"]; isRequired {
if len(requiredOption) > 0 {
return false, Error{t.Name, fmt.Errorf(requiredOption), true}
}
return false, Error{t.Name, fmt.Errorf("non zero value required"), false}
} else if _, isOptional := options["optional"]; fieldsRequiredByDefault && !isOptional {
return false, Error{t.Name, fmt.Errorf("All fields are required to at least have one validation defined"), false}
}
// not required and empty is valid
return true, nil
}


위의 validator.go 소스를 살펴보자.

requried면 value를 가지고 체킹을 하게 된다.

즉, 값이 0이 들어오는데 required를 사용하게 된다면 false인 것이다. 즉 valid가 유효하지 못하다.

제거를 해주면 0이나 "" 이 들어와도 값이 없는 것으로 간주하지는 않을 것이다.

golang ref : 

 - https://godoc.org/

 - https://play.golang.org/


열공 열공~!

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

golang factory  (0) 2018.02.13
golang - Package json  (0) 2018.02.09
valid 시 non zero value required 오류  (0) 2018.02.02
Review  (0) 2017.10.24
test code..반성!  (0) 2017.10.13
golang Context란?  (0) 2017.09.07

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을 이용하시는 분들은 로그인 후 아래에 코멘트를 남겨주세요 ::::

티스토리 툴바