package main
import (
"encoding/json"
"fmt"
)
func main() {
dataBytes := []byte{}
idx := uint8(0)
// Store values of type user into the list.
fmt.Println("listAnys=>")
var listAnys list[any]
listAnysP1 := listAnys.add(user{"Bill", idx + 1})
listAnysP2 := listAnys.add(user{"Ale", idx + 2})
listAnysP3 := listAnys.add(handler{"Bob", 1, idx + 3})
fmt.Println(listAnysP1.Data, listAnysP2.Data, listAnysP3.Data)
dataBytes, _ = json.Marshal(listAnysP2)
fmt.Println("\tlistAnysP2:", string(dataBytes))
dataBytes, _ = json.Marshal(listAnysP2.Data)
fmt.Println("\tlistAnysP2.Data:", string(dataBytes))
dataBytes, _ = json.Marshal(listAnysP2.Prev) // <-----how do I print the content?
fmt.Println("\tlistAnysP2.Prev:", string(dataBytes))
dataBytes, _ = json.Marshal(listAnysP2.Next) // <-----how do I print the content?
fmt.Println("\tlistAnysP2.Next:", string(dataBytes))
var listPointers list[*user]
listPointersP1 := listPointers.add(&user{"Bill", idx + 1})
listPointersP2 := listPointers.add(&user{"Ale", idx + 2})
fmt.Println(listPointersP1.Data, listPointersP2.Data)
}
type user struct {
Name string `json:"name"`
Idx uint8 `json:"idx"`
}
type handler struct {
Name string `json:"name"`
Num int `json:"num"`
Idx uint8 `json:"idx"`
}
type node[T any] struct {
Data T `json:"data"`
Next *node[T] `json:"next"`
Prev *node[T] `json:"prev"`
}
type list[T any] struct {
First *node[T] `json:"first"`
Last *node[T] `json:"last"`
}
func (l *list[T]) add(data T) *node[T] {
n := node[T]{
Data: data,
Prev: l.Last,
}
if l.First == nil {
l.First = &n
l.Last = &n
return &n
}
l.Last = &n
l.Last.Next = &n
return &n
}
how do I print generic type field content?
https://go.dev/play/p/3BS3ktPJICM