상세 컨텐츠

본문 제목

[Nomad Coin] Tour of Go - #3.5 Pointers

Go/Blockchain

by Gopythor 2022. 7. 10. 23:13

본문

728x90
반응형

#3.5 Pointers

  • Go는 컴퓨터의 메모리에 접근할 수 있도록 해준다.
  • Javascript나 Python 개발자라면 프로그램의 메모리나 포인터에 대해 익숙하지 않을 것이다.
  • Go는 간단하며, 프로그램을 빠르게 만들 수 있고, data를 mutate하는 걸 간단하게 해준다.
package main
import "fmt"

func main() {
    a := 2
    b := a
    a = 12
    fmt.Println(b)
}
  • 콘솔의 결과는 어떨 것인가?
  • 2라고 했으면 정답이다.
  • a의 value를 b에 "복사"를 했기 때문이다. 그리고나서 a를 업데이트 한 것이다.
  • 하지만 아주 큰 구조를 사용하게 될 경우도 있다. 메모리에 두 공간을 차지하니까 복사를 원하지 않을 수 있다.
  • 상황에 따라 b가 항상 실제 a의 value를 가지가 하고 싶을 때도 있다.
package main
import "fmt"

func main() {
    a := 2
    b := a
    fmt.Println(&b, &a)
}
  • 변수에 &를 더해주면 memory address를 얻을 수 있다.
  • Data가 어디에 있는지를 나태나는 memory address가 출력된다.
  • a의 data를 복사하는 게 아니라 a의 memory address를 저장하고 싶으면 &를 사용할 수 있다.
package main
import "fmt"

func main() {
    a := 2
    b := &a
    fmt.Println(b, &a)
}

  • b의 value와 a의 memory address이다. 두 개가 같다. 여기에는 복사되는 것이 없다.
package main
import "fmt"

func main() {
    a := 2
    b := &a
    a = 50
    fmt.Println(*b)
}

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

728x90
반응형

관련글 더보기

댓글 영역