     (insert " ")
     (backward-char 1)))
 
-(defun go-goto-method-receiver ()
+(defun go-goto-method-receiver (&optional arg)
   "Go to the receiver of the current method.
 
-If there is none, add parenthesis to add one."
-  (interactive)
-
-  (when (go--in-anonymous-funcion-p)
+If there is none, add parenthesis to add one.
+
+Anonymous functions cannot have method receivers, so when this is called
+interactively anonymous functions will be skipped. If called programmatically,
+an error is raised."
+  (interactive "P")
+
+  (when (and (not (called-interactively-p 'interactive))
+             (go--in-anonymous-funcion-p))
     (error "Anonymous functions cannot have method receivers"))
 
-  (go-goto-function)
+  (go-goto-function '(4))  ; Always skip anonymous functions
   (forward-char 5)
   (when (not (looking-at "("))
     (save-excursion
       (insert "() ")))
   (forward-char 1))
 
-(defun go-goto-docstring ()
+(defun go-goto-docstring (&optional arg)
   "Go to the top of the docstring of the current function.
 
-If there is none, add slashes to start writing one."
-  (interactive)
-  (go-goto-function)
+If there is none, add slashes to start writing one.
+
+Anonymous functions do not have docstrings, so when this is called
+interactively anonymous functions will be skipped. If called programmatically,
+an error is raised."
+  (interactive "P")
+
+  (when (and (not (called-interactively-p 'interactive))
+             (go--in-anonymous-funcion-p))
+    (error "Anonymous functions do not have docstrings"))
+
+  (go-goto-function '(4))
   (forward-line -1)
   (beginning-of-line)
 

      (if (not (eq cur-buffer (current-buffer)))
          (display-buffer (current-buffer) `(,go-coverage-display-buffer-func))))))

(defun go-goto-function ()
  "Go to the function defintion above point.

If we are on a docstring, follow the docstring down.


If we are inside an anonymous function, go to that.
If we are inside a function that has an anonymous function inside of it and we
are below that anonymous function, go to the root function.

If one prefix argument is given, anonymous functions are skipped."
  (interactive "P")
  (let ((p (point)))
    (cond
     ((save-excursion
