일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Linux
- range
- http
- C
- c++
- Golang
- 영화
- JavaScript
- write
- GO 언어
- API
- Close
- package
- windows
- channel
- mutex
- FOR
- 책
- Callback
- window
- Sync
- json
- bitcoin
- Python
- tcp
- File
- go언어
- install
- go
- 리뷰
- Today
- Total
목록struct (2)
Code Habit
go 로 작성된 서버/클라이언트 끼리 구조체 데이터를 주고 받고 싶으면 "gob"패키지 같은 go에서 제공하는 패키지를 사용하면 편리하다. 그런데 만약 go로 서버를 만들되 클라이언트를 다른언어 ( c ) 로 만들게 되면 위와 같은 패키지는 사용할 수 없게 된다. 이렇게 되면 문제가 하나 발생하는데 go에서는 포인터 개념도 없고, 문자열을 표현하는 string 자료형이 가변이라 약속된 크기의 데이터를 주고 받기가 꽤 까다롭다는 것이다. 그래서 필자는 아래와 같은 두가지 방법을 생각해 보았다. 1. 사이즈 전송 후 구조체 데이터를 json데이터로 전송 2. 사이즈 전송 후 구조체 데이터의 각 필드를 고정된 크기의 []byte형으로 전송 네트워크 통신에서 (특히 http 통신)에서 많이 사용하는 json 데..
Go 언어에서 구조체는 다음과 같이 선언할 수 있다. - type 구조체명 struct {} type Rectangle struct { width int height int } 구조체 타입으로 인스턴스는 다음과 같이 생성한다. - var 변수명 구조체타입 var rect Rectangle 여기서 구조체의 각 필드는 해당 자료형의 기본 값으로 초기화 된다. string은 "", unit는 0, float32는 0.0으로 초기화된다. 지역 변수 형태가 아닌 포인터에 메모리 공간을 할당할 수도 있다. - 구조체포인터 = new(구조체타입) var rect1 *Rectangle // 구조체 포인터 선언 rect1 = new(Rectangle) // 구조체 포인터에 메모리 할당 rect2 := new(Rectan..