Solidity 솔리디티 강좌 20강 : struct (구조체)

flowing1ife·2023년 7월 7일
0

[ Solidity 깨부수기 ]

목록 보기
20/29
post-thumbnail

Solidity 솔리디티 강좌 20강 : struct (구조체)
이번엔 solidity의 struct에 대해 알아보도록 하자.


Struct

📌 Solidity

struct란 말그대로 구조를 만들 때 사용하는 것이다.

// SPDX-License-Identifier: GPL-3.0
pragma solidity >= 0.7.0 < 0.9.0;

contract lec20 {
    struct Character{
        uint256 age;
        string name;
        string job;
    }

    function createCharacter(uint256 _age, string memory _name, string memory _job) pure public returns(Character memory){
        return Character(_age,_name,_job);
    }
}

Character라는 struct를 생성하였다. 이는 age, name, job으로 구성되어 있다. 이처럼 struct를 선언할 때에는 struct struct명 {data type 변수명; ...} 순으로 작성한다.

createCharacter 함수는 _age, _name, _job을 인자로 받아 Character struct를 생성해 return한다.


👉 결과

이처럼 인자로 32, Kim, doctor 을 주어 createCharacter 함수를 호출하였다. 그 결과 decoded output에 '32, Kim, doctor' 값이 tuple로 return 된 것을 볼 수 있다. 이는 Character struct로 묶여서 return 되었기 때문이다.

// SPDX-License-Identifier: GPL-3.0
pragma solidity >= 0.7.0 < 0.9.0;

contract lec20 {
    struct Character{
        uint256 age;
        string name;
        string job;
    }

    mapping(uint256 => Character) public CharacterMapping;
    Character[] public CharacterArray;

    function createCharacter(uint256 _age, string memory _name, string memory _job) pure public returns(Character memory){
        return Character(_age,_name,_job);
    }

    function createCharacterMapping(uint256 _key, uint256 _age, string memory _name, string memory _job) public {
        CharacterMapping[_key] = Character(_age,_name,_job);
    }

    function getCharacterMapping(uint256 _key) public view returns(Character memory) {
        return CharacterMapping[_key];
    }

    function createCharacterArray(uint256 _age, string memory _name, string memory _job) public {
        CharacterArray.push(Character(_age,_name,_job));
    }

    function getCharacterArray(uint256 _index) public view returns(Character memory){
        return CharacterArray[_index];
    }
}

함수를 더 추가하였다. 위의 코드를 통해 변수처럼 struct도 mapping, array에 모두 쓰일 수 있다는 것을 알 수 있다.


👉 결과

struct를 mapping에 활용하였다.

struct를 array에 활용하였다.


출처 및 참고 자료

profile
👩🏻‍💻 Backend Engineer, Contract Developer

0개의 댓글