项目文件夹

文件
Asim Aslam 06659032a9 docs: install the CLI with @v6 instead of @latest (#2991)
Plain 'go install go-micro.dev/v6/cmd/micro@latest' fails on the public
module proxy with a version-constraints conflict: the proxy has cached the
sub-paths go-micro.dev/v6/cmd and .../cmd/micro as standalone v0/v1 modules
(from old github.com/micro/go-micro tags, surfaced during an earlier vanity
meta bug), so @latest resolves to v1.18.0 with a mismatched module path.

A version-prefix query (@v6) sidesteps it: those cached sub-path modules
have no v6.x.x versions, so Go falls back to the go-micro.dev/v6 root
module and builds correctly. Verified against proxy.golang.org.


Claude-Session: https://claude.ai/code/session_01CmdEY7pYmV5zzwCjNJ4ykL

Co-authored-by: Claude <noreply@anthropic.com>
2026-06-22 16:39:04 +01:00

2.4 KiB

Quick Start

Get up and running with go-micro in under 5 minutes.

Install

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 newest v6.x.x release. Plain @latest can currently resolve to a stale pre-rename tag through the public module proxy and fail with a "version constraints conflict"; @v6 avoids that. To pin an exact version use e.g. @v6.2.0 (see releases).

Create Your First Service

# 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"}'

Next Steps

Common Patterns

RPC Service

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()
}

Pub/Sub Event Handler

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()
}

Publishing Events

publisher := micro.NewEvent("user.created", client)
publisher.Publish(ctx, &UserCreatedEvent{
    Email: "user@example.com",
})

Get Help