func sendAll(msg []byte, myconn *websocket.Conn) {
for conn := range connections {
if myconn != conn {
if err := conn.WriteMessage(websocket.TextMessage, msg); err != nil {
delete(connections, conn)
conn.Close()
}
}
}
}
package main
import "fmt"
type AnimalIntf interface {
Walk() AnimalIntf
Say() AnimalIntf
}
type Animal struct {
animal AnimalIntf
Name string
}
type Rabbit struct {
Animal
}
// Animal
func NewAnimal(name string) *Animal {
animal := new(Animal)
animal.animal = animal
animal.Name = name
return animal
}
//Метод Walk у каждого свой
func (this *Animal) Walk() AnimalIntf {
fmt.Println("I walk", this.Name)
return this.animal
}
//Метод Say общий
func (this *Animal) Say() AnimalIntf {
fmt.Println("Im Animal and my Name is", this.Name)
return this.animal
}
// Rabbit
func NewRabbit(name string) *Rabbit {
rabbit := new(Rabbit)
rabbit.animal = rabbit
rabbit.Name = name
return rabbit
}
//Метод Walk изменяется для Rabbit и работает корректно
func (this *Rabbit) Walk() AnimalIntf {
this.Animal.Walk()
fmt.Println("...and Jump")
return this.animal
}
func main() {
animal := NewAnimal("Зверь")
animal.Walk().Say().Walk()
fmt.Println("\n---------------------\n")
rabbit := NewRabbit("Кроль")
rabbit.Walk().Say().Walk()
}
I walk Зверь
Im Animal and my Name is Зверь
I walk Зверь
---------------------
I walk Кроль
...and Jump
Im Animal and my Name is Кроль
I walk Кроль
...and Jump
Первое, что нужно знать — это отличия «структуры» от «интерфейса» в Go. Это просто, и этого достаточно, чтобы понять, почему вы просто так не можете «скастить» слайс структур в слайс интерфейсов.
...
Второе — и созвучное с выше обсужденными слайсами — это то, операция конвертирования слайсов — дорогая операция. По времени это O(n) и компилятор Go подобные дорогие вещи не будет делать, чтобы не давать нерадивым программистам писать медленный код. Хотите делать потенциально дорогую операцию — будьте добры, сделайте это явно, вся ответственность на вас, а не на компиляторе.
node.js без их чокнутой виртуальной машины
Так что без де компиляции Go узнать свою строку не выйдет.
дешифровка