블록체인 학습
0 XP

struct 인스턴스 생성

선언한 struct 로 실제 데이터를 만드는 것을 인스턴스 생성(instantiation) 이라고 합니다. struct 가 설계도라면, 인스턴스 는 그 설계도로 찍어 낸 실제 객체입니다. 인스턴스를 만드는 방식은 크게 두 가지입니다.

위치 기반 생성

선언한 필드 순서대로 값을 넣습니다. 짧지만 필드 순서를 외워야 하고, 순서가 어긋나면 잘못된 값이 조용히 들어갑니다.

Person memory p = Person("Alice", 30, msg.sender);

이름 기반 생성

필드 이름을 명시해 값을 넣습니다. 순서가 바뀌어도 안전하고 가독성이 좋아 실무에서 권장됩니다.

Person memory p = Person({ name: "Alice", age: 30, wallet: msg.sender });

필드가 많거나 같은 타입(uint256이 여러 개 등)이 섞여 있을 때는 이름 기반 방식이 실수를 크게 줄여 줍니다.

데이터 위치와 필드 접근

함수 안에서 만드는 임시 인스턴스는 보통 memory 에 둡니다. 생성한 인스턴스의 필드는 점(.) 으로 읽고 쓸 수 있습니다.

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
 
contract Example {
    struct Person {
        string name;
        uint256 age;
    }
 
    function makePerson() public pure returns (uint256) {
        Person memory p = Person({ name: "Alice", age: 30 });
        p.age = p.age + 1; // 필드 쓰기
        return p.age;      // 필드 읽기: 31
    }
}

이름 기반으로 만들 때는 모든 필드를 빠짐없이 지정해야 합니다. 일부 필드를 생략하면 컴파일 오류가 납니다.

Code Editor
에디터를 불러오는 중...
실행 결과

Run 버튼을 눌러 코드를 실행하세요.