🔥 Stringers
210자
3분
Go 언어에서는 다양한 인터페이스를 제공하는데요. 그중에서도 가장 널리 사용되는 인터페이스 중 하나가 바로 fmt
패키지에서 정의된 Stringer
인터페이스랍니다.
type Stringer interface { String() string }
go
Stringer
는 자신을 문자열로 표현할 수 있는 타입이에요. fmt
패키지를 비롯한 많은 패키지에서는 값을 출력할 때 이 인터페이스를 찾아 사용한답니다.
예를 들어볼까요?
package main import "fmt" type Person struct { Name string Age int } func (p Person) String() string { return fmt.Sprintf("%v (%v years)", p.Name, p.Age) } func main() { a := Person{"Arthur Dent", 42} z := Person{"Zaphod Beeblebrox", 9001} fmt.Println(a, z) }
go
위 코드에서는 Person
구조체를 정의하고 있어요.
Person
구조체는Name
과Age
필드를 가지고 있죠.
그리고 Person
구조체에 대해 String()
메서드를 구현하고 있습니다.
String()
메서드는Stringer
인터페이스에서 정의된 메서드예요.- 이 메서드는
Person
의Name
과Age
를 특정 포맷으로 조합해 문자열을 반환하도록 구현되어 있네요.
main()
함수에서는 두 개의 Person
인스턴스 a
와 z
를 생성합니다.
a
는 이름이 "Arthur Dent"이고 나이가 42살이에요.z
는 이름이 "Zaphod Beeblebrox"이고 나이가 9001살이죠.
마지막으로 fmt.Println(a, z)
를 호출하면, a
와 z
가 Stringer
인터페이스를 구현하고 있기 때문에 String()
메서드가 호출되어 다음과 같이 출력될 거예요.
Arthur Dent (42 years) Zaphod Beeblebrox (9001 years)
text
이렇게 Stringer
인터페이스를 구현함으로써 사용자 정의 타입을 보다 읽기 좋은 형태로 출력할 수 있게 됩니다. 디버깅이나 로깅 시에 매우 유용하게 활용할 수 있겠죠?