Solidity 솔리디티 강좌 20강 : struct (구조체)
이번엔 solidity의 struct에 대해 알아보도록 하자.
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에 활용하였다.
출처 및 참고 자료