블록체인 학습
0 XP

struct란?

구조체(struct) 는 서로 관련 있는 여러 값을 하나의 단위로 묶는 사용자 정의 타입입니다. 지금까지는 uint256, bool, address 같은 값을 변수 하나에 따로따로 담아 왔습니다. 하지만 "한 사람의 정보"처럼 여러 값이 항상 함께 다녀야 한다면 하나로 묶는 편이 훨씬 깔끔하고 안전합니다. struct 는 기본 타입(value type)만으로는 표현하기 힘든 복합적인 데이터 묶음을 만들 때 사용합니다.

구조체 는 "이름이 붙은 칸들의 묶음" 이라고 생각하면 됩니다. 각 칸을 필드(field) 라고 부릅니다.

값을 하나로 묶는 이유

이름, 나이, 지갑 주소를 따로따로 관리하면 변수가 흩어집니다. 사용자가 100명이라면 변수가 300개로 늘어나고, "3번째 사람의 나이"가 어느 변수인지 추적하기 어려워집니다. struct 로 묶으면 이름·나이·주소가 하나의 논리적 단위로 함께 움직이므로, 함수 인자로 넘기거나 배열에 담기도 쉬워집니다.

하나의 타입으로 다루기

구조체 로 묶으면 Person 이라는 하나의 타입으로 다룰 수 있고, 이 타입은 마치 uint256 처럼 변수 선언·함수 매개변수·반환값·배열 요소 등 어디서나 재사용됩니다.

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
 
contract Intro {
    // 흩어진 변수 (관리가 어렵다)
    // string name; uint256 age; address wallet;
 
    // 관련 있는 값을 하나의 타입으로 묶는다
    struct Person {
        string name;
        uint256 age;
        address wallet;
    }
}

struct 는 데이터의 "모양(설계도)"을 정의할 뿐, 그 자체로 값을 만들지는 않습니다. 실제 값은 이 설계도로 인스턴스를 생성해야 얻을 수 있습니다.

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

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