본문 바로가기
Study/Go

[Go] C++ 과 Go 포인터의 차이

by _royJang 2021. 7. 17.

C++

#include <iostream>

using namespace std;

class Student {
public:
    int _age;
    Student() {};
    Student(int age) : _age(age) {}
};

int main() {
    Student s = Student(21);
    Student* p = &s;


    cout << "Value로 속성 접근 : " << s._age << '\n';
    cout << "Pointer 타입으로 속성 접근 : " << p->_age << '\n';
}

Pointer type의 경우 "->" 화살표를 통해 객체의 속성에 접근 가능하다.
Value로 접근하고자 한다면 "." 온점을 통해 객체의 속성에 접근 가능하다.

Go

package main

import "fmt"

type Student struct{
    age int
}

func main(){
    var s Student = Student{age:21}
    var p *Student = &s
    fmt.Println(s.age)
    fmt.Println(p.age)
}

Pointer를 통해 접근하든 Value를 통해 접근하든 개발자가 객체의 속성에 접근하기 위한 방법은 "." 온점을 사용하는 것이다.
컴파일러가 내부에서는 다르게 처리하지만 개발자는 이를 신경 쓰지 않아도 된다.