package main import ( "bufio" "fmt" "strings" ) func main() { input := "Hello world" reader := bufio.NewReader(strings.NewReader(input)) // read the first character ch, _, _ := reader.ReadRune() fmt.Printf("Read character: %c\n", ch) // read the next character, then unread it ch2, _, _ := reader.ReadRune() fmt.Printf("Read character: %c\n", ch2) reader.UnreadRune() // read the next character again ch3, _, _ := reader.ReadRune() fmt.Printf("Read character: %c\n", ch3) }In this example, we create a bufio.Reader that reads from a string containing "Hello world". We then read the first rune from the reader using `ReadRune()`, which returns the character 'H'. We then read the next rune, which returns the character 'e'. But before we print it out, we use `UnreadRune()` to "unread" the 'e' so that we can read it again later. Finally, we read the next rune with `ReadRune()` again, which successfully returns the character 'e' again. This example demonstrates how `UnreadRune()` can be used to peek ahead at the next character in the stream without consuming it. The library used in this example is the bufio package from the standard library in Go.