Hello Gombok! π
μλ
νμΈμ! ν΄λΉ λꡬλ Golangμμ Java Library μ€ νλμΈ Lombokκ³Ό μ μ¬ν κΈ°λ₯μ μ 곡νλ λꡬμ
λλ€.
ν΄λΉ λꡬλ₯Ό μ¬μ©νλ©΄, Golangμμ μ£Όμμ νμ©ν μ΄λ
Έν
μ΄μ
μ μ΄μ©ν΄ Getter, Setter, Constructor, Builder λ± μμ£Ό μ¬μ©νλ μ νΈν¨μλ₯Ό μ½κ² μμ±νμ¬ μ¬μ©ν μ μμ΅λλ€.
πΊπΈ English
Install With Go
ν°λ―Έλμ λ€μ λͺ
λ Ήμ΄λ₯Ό μ
λ ₯ν©λλ€.
$ go install github.com/YangTaeyoung/[email protected]
Usage
- μ΄λ
Έν
μ΄μ
μ μ€μΊν ν΄λμ λ€μ΄κ°λλ€.
cd <path>
- μλμ λͺ
λ Ήμ΄λ₯Ό μ€νν©λλ€.
$ gombok
- gombokλ
test
ν΄λμ μλ λͺ¨λ Go νμΌλ€μ μ€μΊνμ¬, μ΄λ
Έν
μ΄μ
μ μ°Ύμ λ€μκ³Ό κ°μ νμΌμ μμ±ν©λλ€.
// in ./test/test_gombok.go
// DO NOT EDIT THIS FILE. THIS FILE WAS AUTO GENERATED BY GOMBOK.
package test
// TestBuilder is a builder for Test
type TestBuilder struct {
target *Test
}
// SetName sets the Name field of the target Test
func (tb TestBuilder) WithName(name string) TestBuilder {
tb.target.Name = name
return tb
}
// SetAge sets the Age field of the target Test
func (tb TestBuilder) WithAge(age int) TestBuilder {
tb.target.Age = age
return tb
}
// Build constructs a Test from the builder
func (tb TestBuilder) Build() Test {
return *tb.target
}
// NewTestBuilder creates a new builder instance for Test
func NewTestBuilder() TestBuilder {
return TestBuilder{target: &Test{}}
}
- μ΄μ λ€μκ³Ό κ°μ΄ μ½κ² λ§λ€μ΄ μ§ ν¨μλ₯Ό μ¬μ©ν μ μμ΅λλ€.
func SomeMethod() {
test := NewTestBuilder().WithName("Yang").WithAge(25).Build()
}
Annotations
Annotation |
Description |
@AllArgsConstructor |
λͺ¨λ 맀κ°λ³μλ₯Ό λ°λ Constructorλ₯Ό μμ±ν©λλ€. |
@NoArgsConstructor |
맀κ°λ³μκ° μλ Constructorλ₯Ό μμ±ν©λλ€. |
@RequiredArgsConstructor |
validate:"required" νκ·Έκ° λΆμ νλλ§μ 맀κ°λ³μλ‘ λ°λ Constructorλ₯Ό μμ±ν©λλ€. |
@Builder |
Builderλ₯Ό μμ±ν©λλ€. |
@Getter |
Getterλ₯Ό μμ±ν©λλ€. |
@Setter |
Setterλ₯Ό μμ±ν©λλ€. |
@ToString |
ToString ν¨μλ₯Ό μμ±ν©λλ€. |
@Equals |
Equals ν¨μλ₯Ό μμ±ν©λλ€. |
Default Constructor
// @{μμ±μ μ΄λ
Έν
μ΄μ
}.Default
λ₯Ό ν΅ν΄ ν΄λΉ μμ±μλ₯Ό ν¨ν€μ§μ κΈ°λ³Έ μμ±μ New()
λ‘ λ§λ€ μ μμ΅λλ€.
// some_file.go
// Test
// @AllArgsConstructor.Default
type Test struct {
Name string
Age int
}
// some_file_gombok.go
// New
func New(name string, age int) Test {
return Test{
Name: name,
Age: age,
}
}
λ€μ νκ·Έλ₯Ό μ΄μ©νμ¬ gombokμ ν΅ν΄ μμ±λλ ν¨μμ λμμ λ³κ²½ν μ μμ΅λλ€.
Tag |
Value |
Description |
validate |
required |
@RequiredArgsConstructor μ΄λ
Έν
μ΄μ
μ ν΅ν΄ μμ±λλ νλλ₯Ό μ§μ ν μ μμ΅λλ€. |
constructor |
ignore |
ν΄λΉ νκ·Έκ° μ§μ λ νλμ κ²½μ° @AllArgsConstructor , @RequiredArgsConstructor μ΄λ
Έν
μ΄μ
μ ν΅ν΄ μμ±λλ Constructorμμ μ μΈλ©λλ€. |
builder |
ignore |
ν΄λΉ νκ·Έκ° μ§μ λ νλμ κ²½μ° @Builder μ΄λ
Έν
μ΄μ
μ ν΅ν΄ μμ±λλ Builder μμ WithXXX() λ©μλκ° μμ±λμ§ μμ΅λλ€. |
builder |
must |
ν΄λΉ νκ·Έκ° μ§μ λ νλμ κ²½μ° @Builder μ΄λ
Έν
μ΄μ
μ ν΅ν΄ μμ±λλ WithXXX() λ©μλμμ ν΄λΉ λ³μκ° zero valueμ΄κ±°λ ν¬μΈν° νμ
μΈλ° nilμΈ κ²½μ° panicμ λ°μμν΅λλ€. |
getter |
ignore |
ν΄λΉ νκ·Έκ° μ§μ λ νλμ κ²½μ° @Getter μ΄λ
Έν
μ΄μ
μ ν΅ν΄ μμ±λλ ν΄λΉ νλμ Getter λ©μλκ° μμ±λμ§ μμ΅λλ€. |
setter |
ignore |
ν΄λΉ νκ·Έκ° μ§μ λ νλμ κ²½μ° @Setter μ΄λ
Έν
μ΄μ
μ ν΅ν΄ μμ±λλ ν΄λΉ νλμ Setter λ©μλκ° μμ±λμ§ μμ΅λλ€. |
to_string |
ignore |
ν΄λΉ νκ·Έκ° μ§μ λ νλμ κ²½μ° @ToString μ΄λ
Έν
μ΄μ
μ ν΅ν΄ μμ±λλ String() λ©μλμμ μ μΈλ©λλ€. |
Example
// @Builder
type Test struct {
Name string `builder:"ignore"`
Age int
}
Trouble Shooting π
$ gombok
> zsh: command not found: gombok
goλ‘ μ€μΉν νλ‘κ·Έλ¨μ μ€νν λ λ°μνλ μλ¬μ
λλ€. ~/.zshrc νμΌ(νΉμ ~/.bashrc)μ νλ¨μ λ€μκ³Ό κ°μ΄ νκ²½λ³μλ₯Ό μΆκ°ν©λλ€.
# ...
export PATH="$HOME/go/bin:$PATH"