Go Operators
Estimated reading: 3 minutes 273 views

Go Miscellaneous Operators – Special Operators You Should Know in Go (2025 Guide)

Introduction – What Are Miscellaneous Operators in Go?

Go doesn’t include many operators outside the arithmetic, logical, bitwise, and relational categories. However, there are a few miscellaneous or special-use operators and syntax elements that behave like operators and are essential to idiomatic Go programming.

In this section, you’ll learn:

  • Special operators like &, *, ..., <-, and :=
  • How they’re used with pointers, functions, and channels
  • Syntax, behavior, and real-world examples
  • When and why to use each of them

1. Address Operator & and Dereference Operator *

These are used for working with pointers.

Address-of Operator &

Returns the memory address of a variable.

x := 10
ptr := &x
fmt.Println(ptr)  // Output: memory address (e.g., 0xc000012340)

Dereference Operator *

Accesses the value pointed to by a pointer.

fmt.Println(*ptr) // Output: 10
*ptr = 20
fmt.Println(x)    // Output: 20

2. Variadic Operator ...

Used in function definitions and function calls to denote variadic parameters.

Variadic Function Declaration

func sum(nums ...int) int {
    total := 0
    for _, v := range nums {
        total += v
    }
    return total
}

Passing a Slice with ...

numbers := []int{1, 2, 3}
fmt.Println(sum(numbers...))  // Output: 6

You must use ... when passing a slice to a variadic function.


3. Channel Operators <- (Send/Receive)

Used in Go channels for communication between goroutines.

Send a value to a channel

ch := make(chan int)
go func() {
    ch <- 5
}()

Receive a value from a channel

val := <-ch
fmt.Println(val) // Output: 5

The <- operator is directional based on context.


4. Short Variable Declaration :=

Declares and initializes a variable in a single step. Used only within functions.

name := "GoLang"
age := 2025

Equivalent to:

var name string = "GoLang"
var age int = 2025

Real-World Example – Combo Use

package main

import "fmt"

func greetAll(names ...string) {
    for _, name := range names {
        fmt.Println("Hello,", name)
    }
}

func main() {
    age := 30
    agePtr := &age
    fmt.Println("Age:", *agePtr)

    names := []string{"Alice", "Bob"}
    greetAll(names...)
}

Output:

Age: 30
Hello, Alice
Hello, Bob

Summary – Recap & Next Steps

While Go lacks a separate category called “miscellaneous operators,” several syntax constructs act as operators and are critical in working with pointers, channels, and variadic functions.

Key Takeaways:

  • & and * are used for pointer address and dereferencing
  • ... handles variadic function definitions and slice expansion
  • <- is used for channel communication in concurrency
  • := is Go’s shorthand for variable declaration inside functions

Next: Explore Go Control Flow with if, else, switch, and loops for structured programming logic.


FAQs – Miscellaneous Operators in Go

What is := in Go?
It’s a shorthand for variable declaration and assignment inside functions.

How does the ... operator work in Go?
It defines or unpacks variadic parameters in function calls or definitions.

What does <- mean in Go?
It’s the channel operator used to send (ch <- x) or receive (x := <-ch) data in goroutines.

Can I use & and * like in C for pointers?
Yes. & gets the address, and * dereferences it, similar to C.

Why is := not allowed outside functions?
It’s a syntactic sugar for quick variable declarations, which only works inside function bodies.


Share Now :
Share

Go Miscellaneous Operators

Or Copy Link

CONTENTS
Scroll to Top