0Pricing
Zig Academy · 강의

메서드와 self 매개변수

구조체에 동작을 연결합니다.

메서드와 self 매개변수은(는) CoddyKit의 무료 Zig Academy 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Zig Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Zig Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

이 강의의 일부는 아직 번역되지 않았으며 영어로 표시됩니다.

Data Plus Behavior

A struct can hold more than fields. You can declare methods inside it: functions that act on the data they belong to.

Functions Live Inside

Write a normal fn inside the struct body. It becomes namespaced under the type, callable as Type.name.

const Point = struct {
    x: i32,
    y: i32,
    fn origin() Point {
        return Point{ .x = 0, .y = 0 };
    }
};

The self Parameter

A method that works on an instance takes the value as its first parameter, named self by convention.

fn magnitude(self: Point) i32 {
    return self.x + self.y;
}

Call With a Dot

Call a method through an instance with a dot. Zig passes the instance as self automatically for you.

const p = Point{ .x = 3, .y = 4 };
const m = p.magnitude();

self Is Just an Argument

There is no hidden magic. The dot call p.magnitude() is exactly the same as Point.magnitude(p).

const m = Point.magnitude(p);

Reading self by Value

Taking self by value gives you a copy. That is fine for reading fields, but changes to it will not stick.

fn sum(self: Point) i32 {
    return self.x + self.y;
}

Mutating Needs a Pointer

To change fields, take self as a pointer with *Point. Now writes go to the original instance, not a copy.

fn moveRight(self: *Point) void {
    self.x += 1;
}

Auto-Reference on Call

When a method wants *Point, Zig takes the address of your var for you. You still just write p.moveRight().

var p = Point{ .x = 0, .y = 0 };
p.moveRight();

Use @This for the Type

Inside the body you can refer to the enclosing type with @This(), handy when the type has no outer name yet.

const Counter = struct {
    n: i32,
    fn get(self: @This()) i32 {
        return self.n;
    }
};

Methods Without self

A method need not take self at all. Constructors and helpers often skip it and act as plain namespaced functions.

fn init(x: i32, y: i32) Point {
    return Point{ .x = x, .y = y };
}

Organizing With Methods

Grouping behavior next to data keeps your code tidy. Methods make a struct read like a small, self-contained component.

Quick Check

What does a method need to change an instance's fields?

Recap

You added methods: functions inside a struct, with self as the instance. Use self: Point to read and self: *Point to mutate. 🔧

자주 묻는 질문

“메서드와 self 매개변수” 강의는 무료인가요?

네 — “메서드와 self 매개변수” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Zig Academy 강의 전체를 잠금 해제할 수 있습니다. Zig Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“메서드와 self 매개변수”에서 뭘 배우나요?

구조체에 동작을 연결합니다. 브라우저에서 직접 실행하는 실습 코드로 Zig Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Zig Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Zig Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.

“메서드와 self 매개변수” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Zig Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Zig Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 구조체와 필드 선언하기
  2. 메서드와 self 매개변수
  3. 필드 기본값
  4. 이름 없는 구조체와 튜플
← Zig Academy(으)로 돌아가기