일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
31 |
- API
- bitcoin
- c++
- File
- Close
- windows
- Python
- go언어
- JavaScript
- Sync
- Linux
- go
- 책
- window
- channel
- C
- write
- package
- json
- 영화
- range
- tcp
- install
- Callback
- Golang
- GO 언어
- http
- mutex
- FOR
- 리뷰
- 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..