Pointer

& operator generates pointer to operand. * operator derefences pointer’s value. Unlike C there is no pointer arithematic in go

package main
import "fmt"
func main() {
        a := 1
        ptr := &a                       //Points to a
        fmt.Println(*ptr)               //1
        //ptr = ptr + 1;                //not allowed
}
# /usr/local/go/bin/go build pointer.go
# ./pointer
1
            

Single Linked list


type ListNode struct {
    Val int
    Next *ListNode
}
func test(node *ListNode) bool {
    if node == nil {		// nil, Not NULL
        return false
    }
    var val int = node.Val
    var next ListNode* = node.Next		//Value accessed from pointer using .
}