반응형
이 글은 우선 Golang 을 설치 했다는 가정하에 진행하겠습니다.
기본적으로 Go Lang 을 배우는 입장에서 작성하는 글이어서 부족한 부분이 많기에 많은 비판과 수정할 사항들을
적어주시면 감사하겠습니다. : ) 다양한 Go lang 서적을 참고 하고 있습니다.
Hands-On Full stak development with Go ( Mina Andrawos )
1. 워크 스페이스 설정
우선 작업을 진행할 폴더를 생성해줍니다.
폴더를 생성한후 생성 해야하는 폴더가 3가지가 있는데
src , pkg , bin 이렇게 3가지입니다.
- src : 모든 소스 코드 저장
- pkg : 컴파일된 패키지 파일을 저장
- bin : 프로그램 바이너리 파일 저장
주요 환경변수
- goroot : go의 설치 경로 ( 설치시 기본으로 설정이 되지만 , 다른 위치에 설치 할 경우 설정해주어야 한다. )
- gopath : 현재 작업중인 workspace 폴더 경로를 가리킨다. 설정하지 않았을 경우 기본 경로로 설정되어있다.
맥 의 경우
~/.bash_profile 에 가서
export GOPATH="workspace의 경로 입력"
해준 다음 source 명령어를 통해 다시 새로 고쳐주고 go env ( go 의 환경 설정을 볼수 있는 명령어 ) 를 통해서 보면
위 그림 처럼 gopath 가 설정된것을 확인 할 수 있다.
2. 패키지 , 변수 , 자료형 , 포인터
- 패키지
- Go 프로그램은 기본적으로 하나 이상의 패키지로 구성된다.
- 패키지 폴더는 src 폴더 하위에 위치한다.
- 일반적으로 소문자로 선언 , 패키지 폴더명은 패키지 이름과 동일하게 하는것이 나중에 혼돈을 방지 한다.
- import 를 통해서 다른 패키지를 불러올수 있다.
ex)
import "fmt"
// 가장 기본적인 fmt 패키지를 불러온다. - go install vs go build
- 둘 다 실행하게 되면 실행 파일을 만들게 된다.
- go install -> 컴파일 완료되면 바이너리 ( binary )는 워크스페이스 bin 안에 저장된다.
- go build -> 현재 폴더 안에 생성된다.
※차후 둘에 대한 차이를 확실하게 알게 되면 추가적으로 기재 하겠습니다.
- 변수와 자료형
- var 를 이용한다.
- var s string
- 자료형 선언 안하고 초기화 하는 경우
- s := "hello"
- s는 자동으로 string 형의 hello 값을 가지게 된다.
- bool , string , int , int8 ...
- uint ,uint8... ( 부호가 없는 양수의 정수형 )
- byte ( uint8과 같고 크기는 바이트를 나타내는 8 비트 )
- rune ( int32 과 같다 , 보통 유니코드 문자를 나타내기 위해 사용)
- float32 , float64 ( 소수 )
- complex64 , complex128 ( 복소수 , 아직까지는 한번도 사용해본적이 없다....)
- s := "hello"
- 포인터
- C 언어에 익숙한 사람들이라면 반드시 접해본 경험이 있는 항목이지만 누구나에게나 처음은 어려운 항목이다.
- " 주소를 나타내는 변수" 라는 말이 포인터에게는 가장 맞는 말인거 같다.
- 주소를 나타내는 변수
- 주소에 있는 값을 가지고 올수 있는 변수
- 주소에 있는 값을 변경 할수 있는 변수
- 주소 참조 vs 값 복사
- 위 네가지 정도가 포인터를 사용함에 있어서 개념을 정리하는데 도움이 되는것 같다.
- 선언
- var iptr *int
- var 를 이용한다.
이 처럼 기본적인 워크스페이스 ( 작업장 ) 패키지 개념 , 변수 자료형 종류 , 포인터 이렇게 정리를 해보았다
설명이 매우 부족하지만 개념을 정리하여 간단하게 보고 난 다음에 세세하게 공부해보는것도 나쁘지 않다고 생각된다.
반응형
'Computer language and framework > GO' 카테고리의 다른 글
[GO] graceful shutdown 이란? (0) | 2023.02.20 |
---|---|
[GO] Golang http (2) | 2023.01.26 |
[GO] Golang json 사용하기 (0) | 2023.01.15 |
[Go] 간단한 gorm 사용기 (0) | 2022.06.24 |
[Go] Go 자료 구조 (0) | 2020.04.15 |