Skip to content

Instantly share code, notes, and snippets.

@sagarduwal
Created July 11, 2021 20:23
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sagarduwal/65795273b0b2cc514169d2f2b39605cd to your computer and use it in GitHub Desktop.
Save sagarduwal/65795273b0b2cc514169d2f2b39605cd to your computer and use it in GitHub Desktop.
Full example of Struct in Solidity
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.7.0 <0.9.0;
contract StructDemo {
struct User {
uint256 level;
uint256 status;
}
mapping(address => User) public userList;
address[] public userAddresses;
constructor() {
User memory userDetail = User(1, 1);
userList[msg.sender] = userDetail;
userAddresses.push(msg.sender);
}
function updateUserLevel(address _userAddress, uint256 _userLevel) public {
User storage userDetail = userList[_userAddress];
userDetail.level = _userLevel;
}
function getUserDetail(address _userAddress)
public
view
returns (uint256, uint256)
{
return (userList[_userAddress].level, userList[_userAddress].status);
}
function createUserRecord(
address _userAddress,
uint256 _level,
uint256 _status
) public returns (uint256 newUserIndex) {
User storage newRecord = userList[_userAddress];
newRecord.level = _level;
newRecord.status = _status;
userAddresses.push(_userAddress);
newUserIndex = userAddresses.length - 1;
}
function createUserRecordTwo(
address _userAddress,
uint256 _level,
uint256 _status
) public returns (uint256 newUserIndex) {
userList[_userAddress] = User({level: _level, status: _status});
userAddresses.push(_userAddress);
newUserIndex = userAddresses.length - 1;
}
function getUsers() public view returns (address[] memory) {
return userAddresses;
}
function numberOfUsers() public view returns (uint256) {
return userAddresses.length;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment