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
'Go' 카테고리의 다른 글
Go 구조체 메서드의 값 리시버와 포인터 리시버 (1) | 2024.09.13 |
---|---|
Go 구조체, 메서드, 인터페이스 (0) | 2024.06.19 |