Skip to content

Instantly share code, notes, and snippets.

What would you like to do?
package main
import (
type pong struct {
type ping struct {
type pingActor struct {
pongPid *actor.PID
func (p *pingActor) Receive(ctx actor.Context) {
switch ctx.Message().(type) {
case struct{}:
// Below both send a message with sender information
ctx.Request(p.pongPid, &ping{})
p.pongPid.Request(&ping{}, ctx.Self())
case *pong:
log.Print("Received pong message")
func main() {
pongProps := actor.FromFunc(func(ctx actor.Context) {
switch ctx.Message().(type) {
case *ping:
log.Print("Received ping message")
// Below both work
pongPid := actor.Spawn(pongProps)
pingProps := actor.FromProducer(func() actor.Actor {
return &pingActor{
pongPid: pongPid,
pingPid := actor.Spawn(pingProps)
time.Sleep(1 * time.Second) // Just to make sure system ends after actor execution
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.