재학습/오류

[Go] nil is a predeclared identifier representing the zero value for a pointer, channel, func, interface, map, or slice type.Type must be a pointer, channel, func, interface, map, or slice type

재삉 2023. 8. 16. 08:10
반응형
type Entry struct {
    name    string
    surname string
    tel     string
}

var data []Entry

func search(surname string) *Entry {
    for key, value := range data {
       if value.surname == surname {
          return &data[key]
       }
    }
    return nil
}

이건되고

 

type Entry struct {
    name    string
    surname string
    tel     string
}

var data []Entry

func search(surname string) Entry {
    for key, value := range data {
       if value.surname == surname {
          return data[key]
       }
    }
    return nil
}

왜 이건 return nild에서 에러가날까

 


Cannot use 'nil' as the type Entry

nil is a predeclared identifier representing the zero value for a pointer, channel, func, interface, map, or slice type.
Type must be a pointer, channel, func, interface, map, or slice type

 

Entry가 리턴타입인 경우,

Entry타입만이 올 수 있지만

 

*Entry 와 같은 포인터타입인 경우,

포인터,채널,함수,인터페이스,맵,슬라이스의 0를 의미하는 미리선언된 식별자인 nil을 사용할 수 있기 때문이다.

반응형