일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 영화
- Linux
- 책
- bitcoin
- package
- Python
- range
- Sync
- write
- API
- File
- 리뷰
- http
- channel
- c++
- windows
- json
- install
- JavaScript
- GO 언어
- go언어
- window
- Callback
- go
- FOR
- Close
- C
- Golang
- mutex
- tcp
- Today
- Total
목록구조체 (3)
Code Habit
Go언어는 클래스를 제공하지 않으므로 상속 또한 제공하지 않는다. 하지만 구조체에서 임베딩(Embedding)을 사용하면 상속과 같은 효과를 낼 수 있다. 먼저 간단하게 Has-a 관계를 정의해 보겠다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 type Person struct { // 사람 구조체 정의 name string age int } func(p *Person) greeting() { // greeting 함수 Person구조체에 연결 fmt.Println("Hello") } type Student struct { p Person // 학생 구조체 안에 사람 구조체를 필드로 가지고 있음( Has - a ) school string grade int }..
Go 언어에는 클래스가 없는 대신 구조체에 메서드를 연결할 수 있다. func (변수명 *구조체타입) 함수명() 리턴값자료형 {} 1 2 3 4 5 6 7 8 9 10 11 12 13 14 type Rectangle struct { width int height int } func (rect *Rectangle) area() int { // rect : 구조체 변수 정의 (연결할 구조체 지정) return rect.width * rect.height // rect. : 구조체 변수를 사용하여 구조체에 접근할 수 있음 } func main() { rect := Rectangle{10, 20} fmt.Println(rect.area()) // 200 : Rectangle 구조체에 연결된 area() 함수를 ..
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..