Golang
About 424 wordsAbout 1 min
2025-10-08
Overview
The theme provides Golang code demonstration functionality, supporting online execution of Go code.
Important
This functionality works by submitting code to a server for compilation and execution.
Therefore, please do not use this feature to execute overly complex code, and avoid making execution requests too frequently.
Configuration
This feature is disabled by default. You can enable it through configuration.
export default defineUserConfig({
theme: plumeTheme({
markdown: {
repl: {
go: true,
},
},
})
})
Usage
Use the ::: go-repl
container syntax to wrap Go code blocks. The theme will detect the code blocks and add execution buttons.
Read-only Code Demo
Golang code demos are read-only by default and cannot be edited.
::: go-repl title="Custom Title"
```go
// your go code
```
:::
Editable Code Demo
For online editing and execution, wrap the code block in the ::: go-repl editable
container syntax.
::: go-repl editable title="Custom Title"
```go
// your go code
```
:::
Examples
Print Content
Input:
:::go-repl
```go
package main
import (
"fmt"
)
func main() {
fmt.Println("Hello World")
}
```
:::
Output:
go playground
package main
import (
"fmt"
)
func main() {
fmt.Println("Hello World")
}
Editable Code Demo
Input:
:::go-repl editable
```go
package main
import (
"fmt"
)
func main() {
fmt.Println("Hello World")
}
```
:::
Output:
go playground
package main
import (
"fmt"
)
func main() {
fmt.Println("Hello World")
}
Loop with Random Delay Printing
Input:
:::go-repl
```go
package main
import (
"fmt"
"math/rand"
"time"
)
func main() {
for i := 0; i < 10; i++ {
dur := time.Duration(rand.Intn(1000)) * time.Millisecond
fmt.Printf("Sleeping for %v\n", dur)
// Sleep for a random duration between 0-1000ms
time.Sleep(dur)
}
fmt.Println("Done!")
}
```
:::
Output:
go playground
package main
import (
"fmt"
"math/rand"
"time"
)
func main() {
for i := 0; i < 10; i++ {
dur := time.Duration(rand.Intn(1000)) * time.Millisecond
fmt.Printf("Sleeping for %v\n", dur)
// Sleep for a random duration between 0-1000ms
time.Sleep(dur)
}
fmt.Println("Done!")
}
Network Request
go playground
package main
import (
"fmt"
"io"
"log"
"net"
"net/http"
"os"
)
func main() {
http.HandleFunc("/hello", func(w http.ResponseWriter, r *http.Request) {
fmt.Fprint(w, "Hello, playground")
})
log.Println("Starting server...")
l, err := net.Listen("tcp", "localhost:8080")
if err != nil {
log.Fatal(err)
}
go func() {
log.Fatal(http.Serve(l, nil))
}()
log.Println("Sending request...")
res, err := http.Get("http://localhost:8080/hello")
if err != nil {
log.Fatal(err)
}
log.Println("Reading response...")
if _, err := io.Copy(os.Stdout, res.Body); err != nil {
log.Fatal(err)
}
}
Multiple Files
go playground
package main
import (
"play.ground/foo"
)
func main() {
foo.Bar()
}
-- go.mod --
module play.ground
-- foo/foo.go --
package foo
import "fmt"
func Bar() {
fmt.Println("This function lives in an another file!")
}