Skip to content

Latest commit

 

History

History
146 lines (102 loc) · 3.99 KB

README-zh.md

File metadata and controls

146 lines (102 loc) · 3.99 KB

goaccessor

Go Reference License: MIT

goaccessor 是一个Go工具,设计用于自动化生成你的类型和变量的gettersetter样板代码。

使用方法

go install github.com/yujiachen-y/goaccessor@latest

安装goaccessor后,你可以在命令行界面(CLI)中使用,也可以与//go:generate指令一起使用。有关更多信息,请查看示例部分

示例

示例文件夹中你可以找到一个可运行的'book'示例。

考虑book.go文件:

package main

//go:generate goaccessor --target Book --getter --setter
type Book struct {
    Title  string
    Author string
}

当我们运行go generate时,它会创建一个新文件book_goaccessor.go

// Code generated by "goaccessor --target Book --getter --setter". DO NOT EDIT.

package main

func (b *Book) GetTitle() string {
    return b.Title
}

func (b *Book) SetTitle(title string) {
    b.Title = title
}

func (b *Book) GetAuthor() string {
    return b.Author
}

func (b *Book) SetAuthor(author string) {
    b.Author = author
}

顶级变量

goaccessor不仅适用于结构类型;它也可以处理顶级常量和变量。例如:

//go:generate goaccessor --target books --getter --setter
var books = map[string]*Book {
    ...
}

执行go generate后,我们得到:

func GetBooks() map[string]*Book {
    return books
}

func SetBooks(newBooks map[string]*Book) {
    books = newBooks
}

复杂情况

在某些情况下,你可能想要以前缀的形式导出顶级变量的特定字段:

//go:generate goaccessor --target bestSellingBook --field --getter --include Author --prefix BestSelling
var bestSellingBook = &Book{ ... }

这个指令会生成:

func GetBestSellingAuthor() string {
    return bestSellingBook.Author
}

选项

以下是goaccessor的可用选项:

选项 简短选项 描述
--target -t 指定要处理的目标。
--getter -g 为目标生成getter
--setter -s 为目标生成setter
--accessor -a 为目标生成gettersetter
--pure-getter -pg 为目标生成不带 'Get' 前缀的getter
--prefix -p 给生成的方法/函数添加前缀。
--field -f 将标记(gettersetteraccessor)应用到目标的每个字段(仅适用于结构类型变量)。
--include -i 只为指定的字段生成方法(字段应以逗号分隔)。
--exclude -e 从方法生成中排除指定的字段(字段应以逗号分隔)。

请注意,当使用--pure-getter选项时,生成的getter方法将不会有 'Get' 前缀。 例如,对于有Title字段的Book结构体,getter将会是 Title() 而不是 GetTitle()

依赖管理

如果你不想安装goaccessor并希望将其作为项目的依赖项使用,按照以下步骤操作:

  1. 转到你的项目目录并通过go mod添加goaccessor依赖项:
go get github.com/yujiachen-y/goaccessor@latest
  1. 创建一个名为tools.go的新文件(或者你喜欢的其他名称),并输入以下代码:
//go:build tools

package main

import (
	_ "github.com/yujiachen-y/goaccessor"
)
  1. 如果你想要使用goaccessor的CLI命令,请使用go run github.com/yujiachen-y/goaccessor@latest

  2. 如果你使用go:generate指令生成代码,更改指令,像这样:

//go:generate go run github.com/yujiachen-y/goaccessor@latest -target book
var book Book
  1. 注意:尽管goaccessor是你项目的依赖项,但它不会——也不应该——成为你项目构建结果的一部分。我们在tools.go中使用构建标记确保在构建过程中忽略goaccessor