/**
* Node
*
* A Node data structure is the simplest data structure in CS. The idea is it's
* an object that stores a value and a reference to the next Node. We can do
* the following operations with a Node:
*
* - Create Node
* - Get Value
* - Get Next
* - Set Value
* - Set Next
*
* All operations can be performed in O(1) time. This means all methods do not
* rely on any other variables.
**/
package node

import ()

type Node struct {
	Value interface{}
	Next  *Node
}

func NewNode(v interface{}) *Node {
	return &Node{Value: v}
}

func (n *Node) GetValue() interface{} {
	return n.Value
}

func (n *Node) SetValue(v interface{}) {
	n.Value = v
}

func (n *Node) GetNext() *Node {
	return n.Next
}

func (n *Node) SetNext(m *Node) {
	n.Next = m
}

/**
* Node
*
* A Node data structure is the simplest data structure in CS. The idea is it's
* an object that stores a value and a reference to the next Node. We can do
* the following operations with a Node:
*
* - Create Node
* - Get Value
* - Get Next
* - Set Value
* - Set Next
*
* All operations can be performed in O(1) time. This means all methods do not
* rely on any other variables.
**/
package node

import ()

type Node struct {
	Value int
	Next  *Node
}

func NewNode(v int) *Node {
	return &Node{Value: v}
}

func (n *Node) GetValue() int {
	return n.Value
}

func (n *Node) SetValue(v int) {
	n.Value = v
}

func (n *Node) GetNext() *Node {
	return n.Next
}

func (n *Node) SetNext(m *Node) {
	n.Next = m
}

--- 
+++ 
@@ -19,19 +19,19 @@
 import ()
 
 type Node struct {
-	Value int
+	Value interface{}
 	Next  *Node
 }
 
-func NewNode(v int) *Node {
+func NewNode(v interface{}) *Node {
 	return &Node{Value: v}
 }
 
-func (n *Node) GetValue() int {
+func (n *Node) GetValue() interface{} {
 	return n.Value
 }
 
-func (n *Node) SetValue(v int) {
+func (n *Node) SetValue(v interface{}) {
 	n.Value = v
 }
 
Make Node work with various data types rather than limit to just int
