[A Tour of Go] Generic types

newbieski·2023년 4월 10일

golang

목록 보기
10/13

https://go.dev/tour/generics/2

코드를 입력하세요package main

import (
	"fmt"
)

type List[T any] struct {
	next *List[T]
	val  T
}

func (l *List[T]) Add(item T) *List[T] {
	newNode := &List[T]{val: item}
	if l == nil {
		return newNode
	}

	current := l
	for current.next != nil {
		current = current.next
	}
	current.next = newNode
	return l
}

func (l *List[T]) Print() {
	current := l
	for current != nil {
		fmt.Println(current.val)
		current = current.next
	}
}

func main() {
	var intList *List[int]
	intList = intList.Add(1)
	intList = intList.Add(2)
	intList = intList.Add(3)

	fmt.Println("Int list:")
	intList.Print()

	var stringList *List[string]
	stringList = stringList.Add("A")
	stringList = stringList.Add("B")
	stringList = stringList.Add("C")

	fmt.Println("String list:")
	stringList.Print()
}
  • Add() 함수에서 (l List[T])를 사용하고, l == nil을 사용하니 에러가 나서 chat gpt한테 물어봤더니 chat gpt가 구현해줌.
  • 왜 에러가 나냐고 설명해달라고 하니 설명도 잘해줌(구조체와 nil을 비교해서 에러임)
profile
newbieski

0개의 댓글