구조체를 정의하는 방법은 다음 같습니다.
---------------------------------------------------------------------------------------------------
const 구조체 이름 = extern packed struct
{
구조체 요소 이름 : 자료형
};
정의 방법은 열거형과 유사하지만, 여러가지 자료형을 한꺼번에 담을 수 있습니다.
extern 은 C 언어로 만들어진 라이브러리를 사용할 때 C 언어 함수와 호환성을 위해 선택적으로 붙이는 키워드입니다.
packed 는 byte padding 없이 메모리 레이아웃을 정의한 순서 그대로 만들고 싶을때 선택적으로 붙이는 키워드입니다.
---------------------------------------------------------------------------------------------------
예시
// 게임 캐릭터의 직업을 열거형으로 정의했습니다.
const Class = enum // 직업
{
wizard,
thief,
bard,
warrior,
};
// 캐릭터가 가질 속성들을 묶어 구조체로 정의했습니다.
const Character = struct
{
class : Class, // 직업
gold : u32,
health : u8,
experience : u32,
};
// 정의해둔 구조체를 활용해 마법사 캐릭터 개체를 만들었습니다.
var my_character : Character = Character
{
.class = Class.wizard,
.gold = 20,
.health = 100,
.experience = 10,
};
// 구조체로 만든 개체의 요소에 접근하여 값을 수정할 수 있습니다.
my_character.health = 50;
'Zig' 카테고리의 다른 글
[Zig] 옵셔널(optionals) (0) | 2024.03.21 |
---|---|
[Zig] 포인터(pointers) (0) | 2024.03.21 |
[Zig] 열거형(enums) (0) | 2024.03.21 |
[Zig] 도달 불가능(unreachable) (0) | 2024.03.21 |
[Zig] switch 조건문(statement) (0) | 2024.03.21 |