There's no real point in using <<goto>> here. The <<button>> macro accepts a passageName argument, so just use that.
Single passage example:
<<widget "dlink">>
\<div id="dlink" name="dlink" style="border: thin solid gray; border-radius: 15px; padding: 0 2px; background: #231306;">
\<<button $args[0] $args[0]>><</button>>
\</div>
\<</widget>>
Multiple passage example:
<<widget "mdlink">>
\<<for _l to 0; _l lt $args.length; _l++>>
\<div id="mdlink" name="mdlink" style="border: thin solid gray; border-radius: 15px; padding: 0 2px; background: #231306;">
\<<button $args[_l] $args[_l]>><</button>>
\</div>
\<</for>>
\<</widget>>
WARNING: You're reusing IDs there. IDs should be unique, so you'll probably want to address that. As an example of that:
<<widget "mdlink">>
\<<for _l to 0; _l lt $args.length; _l++>>
\<<= '<div id="mdlink-' + _l + '" name="mdlink" style="border: thin solid gray; border-radius: 15px; padding: 0 2px; background: #231306;"><<button "' + $args[_l] + '" "' + $args[_l] + '">><</button>></div>'>>
\<</for>>
\<</widget>>
Because of the need to create a unique ID each loop iteration, you end up having to print the entire construct, which is a bit messy as you can see. Still, it's what you should be doing.
Beyond that, I'd also suggest using a class, rather than the style attribute (especially for the multiple link version). Otherwise, you're just being redundant.