728x90

 

Go 언어에서 함수와 메서드는 코드 구조화와 재사용성에 중요한 역할을 함

Go 언어에서 함수와 메서드는 각각의 용도와 목적이 다름

독립 함수는 새로운 인스턴스를 생성하는 데 주로 사용되며, 인스턴스 메서드는 기존 인스턴스를 수정하거나 조작하는 데 사용됨

독립 함수 (Standalone Function)

  • 정의: 특정 구조체에 속하지 않는 독립적인 함수
  • 용도: 주로 새로운 인스턴스를 생성하고 반환하는 역할을 함
package main

import "fmt"

type Config struct {
    Port int
}

type Server struct {
    config Config
}

// 독립 함수: 새로운 Server 인스턴스를 생성하고 반환
func NewServer(config Config) *Server {
    return &Server{
        config: config,
    }
}

func main() {
    config := Config{Port: 8080}
    server := NewServer(config)
    fmt.Println("Server running on port:", server.config.Port)
}

인스턴스 메서드 (Instance Method)

  • 정의: 특정 구조체의 인스턴스로 호출되는 메서드
  • 용도: 주로 기존 인스턴스를 수정하거나, 해당 인스턴스와 관련된 동작을 수행함
package main

import "fmt"

type Config struct {
    Port int
}

type Server struct {
    config Config
}

// 인스턴스 메서드: 기존 Server 인스턴스를 수정하고 반환
func (server *Server) NewServer(config Config) *Server {
    server.config = config
    return server
}

func main() {
    server := &Server{}
    config := Config{Port: 8080}
    server = server.NewServer(config)
    fmt.Println("Server running on port:", server.config.Port)
}

주요 차이점

  • 소속:
    • 독립 함수: 구조체와 독립적으로 정의됨
    • 인스턴스 메서드: 특정 구조체의 리시버를 가짐
  • 역할:
    • 독립 함수: 새로운 인스턴스를 생성
    • 인스턴스 메서드: 기존 인스턴스를 수정하거나 동작 수행
  • 리시버 사용:
    • 독립 함수: 리시버 없음
    • 인스턴스 메서드: 리시버를 통해 호출됨
728x90

+ Recent posts