Nil Interfaces

What will be printed when the code below is executed?And explain why println(InitType() == nil) cannot be compiled?

  1. package main
  2. type S struct{}
  3. func (s S) F() {}
  4. type IF interface {
  5. F()
  6. }
  7. func InitType() S {
  8. var s S
  9. return s
  10. }
  11. func InitPointer() *S {
  12. var s *S
  13. return s
  14. }
  15. func InitEfaceType() interface{} {
  16. var s S
  17. return s
  18. }
  19. func InitEfacePointer() interface{} {
  20. var s *S
  21. return s
  22. }
  23. func InitIfaceType() IF {
  24. var s S
  25. return s
  26. }
  27. func InitIfacePointer() IF {
  28. var s *S
  29. return s
  30. }
  31. func main() {
  32. //println(InitType() == nil)
  33. println(InitPointer() == nil)
  34. println(InitEfaceType() == nil)
  35. println(InitEfacePointer() == nil)
  36. println(InitIfaceType() == nil)
  37. println(InitIfacePointer() == nil)
  38. }

Answer

  1. true
  2. false
  3. false
  4. false
  5. false