상세 컨텐츠

본문 제목

[Nomad Coin] Tour of Go - #3.6 Structs

Go/Blockchain

by Gopythor 2022. 7. 11. 00:00

본문

728x90
반응형

#3.6 Structs

  • Struct를 배우면 포인터를 이해하기 쉬워진다.
  • Go에서 struct는 class와 가장 비슷하다.
package main

type person struct {
    name string
    age int
}

func main() {
    nico := person{name : "nico", age: 12}    // 순서대로 person{"nico",12}도 가능
}
  • person struct는 string인 name과 int인 age를 갖게 된다.
  • label 없이 순서대로 적어도 되고, label을 붙여도 된다. struct의 순서만 기억하고 있으면 된다.
  • struct의 장점은 receiver 함수이다. Go 에서의 method 같은 것이다.
  • receiver 함수는 기본적으로 method와 닮았다.
package main
import "fmt"

type person struct {
    name string
    age int
}

func (p person) sayHello(){
    fmt.Printf("Hello! My name is %s and I'm %d", p.name, p.age)
}

func main() {
    nico := person{name : "nico", age: 12}
    nico.sayHello()
}
  • nico에 메소드 생성은 매우 쉽다.
  • 객체 지향 프로그래밍의 method와 비슷한 일을 한다.
  • 함수명 앞에 struct를 넣는 순간 go는 person struct의 method라는 걸 알게 된다.
  • 이것이 p person instance에 접근하게 해준다.
  • 첫 번째 %s는 p.name 그리고 두 번째 %d는 p.age로 해주면 된다.
  • p는 person type이다. sayHello method를 부르는 person 인 것이다.

복습

  • Go에는 class나 object라는게 없지만 struct가 있다.
  • struct를 만들기 위해서는 이름을 설정하고 그 안에 type이 있는 field를 입력한다.
  • 그 다음은 person을 생성한다.
  • nico에게  sayHello를 정의하고자 하면 method를 주면 된다.
  • 함수 명 앞에 struct를 입력하면 type person 변수에만 유효한 함수가 된다.
  • instance의 type이 person 이라는 것은 명시해야한다.
  • p가 아니여도 된다. instance가 될 수도 있다.(p person) - > (instance person)
  • 관습적으로는 struct의 첫 글자를 instance를 대표하는 변수로 사용한다.
  • Go의 complier가 sayHello가 이 person을 통해서만 호출될 수 있는 함수라는 것을 알게 된다.

강의 출처 : 노마드코더(https://nomadcoders.co)

728x90
반응형

관련글 더보기

댓글 영역