Java中,注解(Annotation)无处不在:依赖注入、路由配置、权限验证……一个@Autowired@GetMapping就能搞定复杂功能。这让很多从Java转向Go的开发者忍不住发问:Go为什么没有这么方便的特性?

先明确一个概念:Go有标签(Tag),但这不是真正意义上的注解。

// Go的标签只是结构体字段的元数据
type User struct {
    Name string `json:"name" validate:"required"`
}

// Java注解则功能强大得多
@RestController
@RequestMapping("/api")
public class UserController {
    @GetMapping("/users")
    public List<User> getUsers() {
        // ...
    }
}