gombok

command module
v1.2.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 6, 2023 License: MIT Imports: 4 Imported by: 0

README ΒΆ

Hello Gombok! πŸ‘‹

μ•ˆλ…•ν•˜μ„Έμš”! ν•΄λ‹Ή λ„κ΅¬λŠ” Golangμ—μ„œ Java Library 쀑 ν•˜λ‚˜μΈ Lombokκ³Ό μœ μ‚¬ν•œ κΈ°λŠ₯을 μ œκ³΅ν•˜λŠ” λ„κ΅¬μž…λ‹ˆλ‹€. ν•΄λ‹Ή 도ꡬλ₯Ό μ‚¬μš©ν•˜λ©΄, Golangμ—μ„œ 주석을 ν™œμš©ν•œ μ–΄λ…Έν…Œμ΄μ…˜μ„ μ΄μš©ν•΄ Getter, Setter, Constructor, Builder λ“± 자주 μ‚¬μš©ν•˜λŠ” μœ ν‹Έν•¨μˆ˜λ₯Ό μ‰½κ²Œ μƒμ„±ν•˜μ—¬ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

πŸ‡ΊπŸ‡Έ English

Install With Go

터미널에 λ‹€μŒ λͺ…λ Ήμ–΄λ₯Ό μž…λ ₯ν•©λ‹ˆλ‹€.

$ go install github.com/YangTaeyoung/[email protected]

Usage

  1. μ–΄λ…Έν…Œμ΄μ…˜μ„ μŠ€μΊ”ν•  폴더에 λ“€μ–΄κ°‘λ‹ˆλ‹€.
    cd <path>
    
    • λ‹€μŒκ³Ό 같은 파일이 μžˆλ‹€κ³  κ°€μ •ν•©λ‹ˆλ‹€.
      // in ./test/test.go
      
      // @Builder
      type Test struct {
          Name string
          Age  int
      }
      
  2. μ•„λž˜μ˜ λͺ…λ Ήμ–΄λ₯Ό μ‹€ν–‰ν•©λ‹ˆλ‹€.
    $ gombok
    
  3. 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{}}
    }
    
  4. 이제 λ‹€μŒκ³Ό 같이 μ‰½κ²Œ λ§Œλ“€μ–΄ 진 ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
    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,
   }
}

Tags

λ‹€μŒ νƒœκ·Έλ₯Ό μ΄μš©ν•˜μ—¬ 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"

Documentation ΒΆ

The Go Gopher

There is no documentation for this package.

Directories ΒΆ

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL