internal/website/docs/quickstart.md
Get up and running with go-micro in under 5 minutes.
The recommended way is the precompiled binary — no Go toolchain required:
curl -fsSL https://go-micro.dev/install.sh | sh
Or, if you have Go and prefer to build from source:
go install go-micro.dev/v6/cmd/micro@v6
Note: Use
@v6(not@latest) — it resolves to the newestv6.x.xrelease. Plain@latestcan currently resolve to a stale pre-rename tag through the public module proxy and fail with a "version constraints conflict";@v6avoids that. To pin an exact version use e.g.@v6.2.0(see releases).
# Create a new service
micro new helloworld
cd helloworld
# Review the generated code
ls -la
# Run locally with hot reload
micro run
# Test it
curl -X POST http://localhost:8080/api/helloworld/Helloworld.Call \
-H "Content-Type: application/json" \
-d '{"name": "World"}'
package main
import "go-micro.dev/v6"
type Greeter struct{}
func (g *Greeter) Hello(ctx context.Context, req *Request, rsp *Response) error {
rsp.Message = "Hello " + req.Name
return nil
}
func main() {
service := micro.NewService("greeter")
service.Handle(new(Greeter))
service.Run()
}
import "go-micro.dev/v6"
func main() {
service := micro.NewService("subscriber")
// Subscribe to events
micro.RegisterSubscriber("user.created", service.Server(),
func(ctx context.Context, event *UserCreatedEvent) error {
log.Infof("User created: %s", event.Email)
return nil
},
)
service.Run()
}
publisher := micro.NewEvent("user.created", client)
publisher.Publish(ctx, &UserCreatedEvent{
Email: "[email protected]",
})