Is there a better "Go" way to implement LC Add Two Numbers solution
Go does not have tail recursion: Wikipedia: Tail call. Use iteration rather than recursion.
Simplify your sprawling, hard-to-read code.

type ListNode struct {
    Val  int
    Next *ListNode
}

// Add Two Numbers
// https://leetcode.com/problems/add-two-numbers/
func addTwoNumbers(l1 *ListNode, l2 *ListNode) *ListNode {
    root := &amp;ListNode{} // at end, start = root.Next
    end := root

    c := 0
    for {
        if l1 == nil &amp;&amp; l2 == nil &amp;&amp; c == 0 {
            break
        }

        v := c
        if l1 != nil {
            v += l1.Val
            l1 = l1.Next
        }
        if l2 != nil {
            v += l2.Val
            l2 = l2.Next
        }
        c = v / 10
        v = v % 10

        end.Next = &amp;ListNode{
            Val:  v,
            Next: nil,
        }
        end = end.Next
    }

    return root.Next // start
}