LINUX.ORG.RU

История изменений

Исправление 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())
	}
}

Шикарно я когда-то задеплоил.