무지개 곰
무지개곰의 성장이야기
무지개 곰
250x250
  • 분류 전체보기
    • 블록체인 공부
      • BlockChain
      • Ethereum
    • IT공부
      • Java
      • JavaScript
      • HTML + CSS
      • React
      • 프로그래머스 (TypeScript)
    • 독서
    • 영어 공부
      • 1일 1 작문
      • 영어 짧은 글
    • 홍보
hELLO · Designed By 정상우.
무지개 곰

무지개곰의 성장이야기

[Solidity] 구조체 (struct)
블록체인 공부/Ethereum

[Solidity] 구조체 (struct)

2022. 6. 15. 10:00
728x90

구조체

사용자 정의 자료형이라고도 부르는 구조체는 변수의 묶음으로 이해할 수 있습니다. 결국은 자료형이기에 배열을 만들 수도 있고 맵핑을 만들 수도 있습니다. 우선 구조체를 만드는 방법부터 보도록 하겠습니다.

struct character{
    string _name;
    string _job;
    uint _level;
}

위의 예시를 보시면 캐릭터라는 자료형을 가진 구조체 안에 이름, 직업, 그리고 레벨이 들어가 있습니다. 이와 같이 꼭 필요로 하는 자료들을 묶어서 구조체를 만들 수 있습니다. 캐릭터를 만들 때마다 이름, 직업, 그리고 레벨을 입력하기 위한 변수를 따로 만들지 않아도 되므로 코드가 간소화될 수 있습니다.

mapping (uint => character) public characterList;

function makeCharactor(uint _num, string memory _name, string memory _job, uint _level) public {
    charactorList[_num] = charactor(_name, _job, _level);
}

character라는 구조체는 자료형이 되었기 때문에 mapping을 사용 시 데이터 값의 자료형으로 사용할 수 있습니다. 따라서 만든 캐릭터들의 목록을 볼 수 있는 characterList라는 맵핑을 만들고 makeCharacter함수를 작성하였습니다. 여기서 주의하실 점은 함수에서 사용된 string은 지역변수로 저장소에 저장을 하지 않고 메모리에 저장을 하여야 하므로 타입과 변수 명 사이에 memory를 입력하여 메모리에 저장해줍니다. 캐릭터를 만드는 것과 비슷하게 다양한 객체가 동일한 자료를 가지는 경우 구조체를 만들어 사용하면 좋습니다.

character firstCharacter;

firstCharacter._name = king;
firstCharacter._job = warrior;
firstCharacter._level = 99;

위와 같은 경우는 구조체 안의 이름, 직업, 그리고 레벨을 각각 선언해주는 방법입니다. firstCharacter이라는 이름을 가진 변수를 선언해주고 그 안의 정보를 사용할 때는 firstCharacter._name등과 같이 불러올 수 있습니다.

728x90
저작자표시 비영리 변경금지 (새창열림)
    '블록체인 공부/Ethereum' 카테고리의 다른 글
    • [Ethereum] ERC20토큰 이해하기
    • [Solidity] 상속과 오버라이드 (Inheritance,Override)
    • [Solidity] 맵핑 (Mapping)
    • [Solidity] 배열의 선언과 호출, 종류, 함수
    무지개 곰
    무지개 곰
    java solidity react javascript등 프로그래밍 공부 기록

    티스토리툴바