일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 데이터 파이프라인
- Django
- 데브코스
- 운영체제
- linux
- PYTHON
- 데이터 웨어하우스
- 파이썬
- 자료구조
- S3
- Go
- 데이터베이스
- 정리
- dockerfile
- redshift
- AWS
- TCP
- airflow
- 데이터 엔지니어링
- 컴퓨터 네트워크
- 데이터엔지니어링
- 가상환경
- http
- 컴퓨터네트워크
- airflow.cfg
- TIL
- 종류
- HADOOP
- Docker
- sql
- Today
- Total
목록Programming Language/Go (3)
홍카나의 공부방
Go get 혹은 Go mod tidy로 외부에서 가져온 패키지들은 다음 경로에 저장된다. - 윈도우 : GOPATH/pkg/mod- 맥, 리눅스 : ~/go 일반적으로 윈도우에서 GOPATH는 C:\Users\{본인계정}\go다.한 번 다운받은 패키지들은 다른 모듈에서 사용하더라도 같은 버전이라면 다시 다운로드하지 않고 사용하는 캐싱 효과를 기대할 수 있다.
package mainimport ( "fmt" "unsafe")type User struct { Age int32 Score float64}func main() { user := User {32, 64.8} fmt.Println(unsafe.Sizeof(user))} 위 코드를 살펴보자. 구조체 User를 만들고 해당 타입의 객체인 user를 생성한다. 그리고 user 객체의 size를 출력하는 코드다. 언뜻봐서는 Int32는 Go언어에서 4바이트 크기를 가지고 있고, float64는 8바이트 크기를 가지고 있는 자료형인데 출력은 16바이트로 출력이 된다. 왜 12바이트가 아니라 16바이트의 크기를 가지게 되는것일까? 참고로 위 구조체에 Age2라는 int32(4바이트) 크기의 필드를 하나 더 만들어..
정수 간의 타입 변환시 유의할 점이 있다. 큰 범위를 갖는 타입에서 작은 범위를 갖는 타입으로 변환하면 값이 달라질 수 있다는 것이다. 아래 Go언어 코드 예제로 살펴보자. package mainimport "fmt"func main() { var a int32 = 360 var b int8 = int8(a) fmt.Println(a) fmt.Println(b)} 출력함수인 fmt.Println(a)와 fmt.Println(b)의 결과는 어떻게 될까? 360104 이렇게 다른 숫자가 출력된다. 아니 왜? int8은 8비트를 표현할 수 있는 정수 타입으로, 표현가능한 값의 범위는 -128~127이 된다. 그리고 int32는 32비트를 표현할 수 있는 정수 타입으로, 대략 -2^31~2^31의 값을 표현할..