История изменений
Исправление
vertexua,
(текущая версия)
:
Вроде бы никогда не возникало проблем что компилятор падает, с самого начала.
Но Go падает на ура в очень внезапных случаях
package main
import (
"fmt"
)
type If interface {
Name() string
}
type Struct struct {
name string
}
func (s *Struct) Name() string {
return s.name
}
func main() {
var i If
s := &Struct {
name: "x",
}
i = s
s = nil
i = s
if i != nil {
fmt.Printf("%s", i.Name())
}
}
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x47f600]
goroutine 1 [running]:
main.(*Struct).Name(0xc000034750)
/tmp/sandbox1124585161/prog.go:16
main.main()
/tmp/sandbox1124585161/prog.go:28 +0x47
И главное err
например супер популярный интерфейс, который супер популярно сравнивать с nil
. Который в некоторых структурах можно захотеть обнулить
Шикарно я когда-то задеплоил.
Исправление
vertexua,
:
Вроде бы никогда не возникало проблем что компилятор падает, с самого начала.
Но Go падает на ура в очень внезапных случаях
package main
import (
"fmt"
)
type If interface {
Name() string
}
type Struct struct {
name string
}
func (s *Struct) Name() string {
return s.name
}
func main() {
var i If
s := &Struct {
name: "x",
}
i = s
s = nil
i = s
if i != nil {
fmt.Printf("%s", i.Name())
}
}
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x47f600]
goroutine 1 [running]:
main.(*Struct).Name(0xc000034750)
/tmp/sandbox1124585161/prog.go:16
main.main()
/tmp/sandbox1124585161/prog.go:28 +0x47
Шикарно я когда-то задеплоил.
Исходная версия
vertexua,
:
Вроде бы никогда не возникало проблем что компилятор падает, с самого начала.
Но Go падает на ура в очень внезапных случаях
package main
import (
"fmt"
)
type If interface {
Name() string
}
type Struct struct {
name string
}
func (s *Struct) Name() string {
return s.name
}
func main() {
var i If
s := &Struct {
name: "x",
}
i = s
s = nil
i = s
if i != nil {
fmt.Printf("%f", i.Name())
}
}
Шикарно я когда-то задеплоил.