tg-me.com/Golang_google/2846
Create:
Last Update:
Last Update:
❓Вопрос:
Что будет выведено на экран?
Напишите полный вывод программы и объясни, почему именно так.
package main
import (
"fmt"
"time"
)
type Speaker interface {
Speak() string
}
type Person struct {
name string
}
func (p Person) Speak() string {
return "Hi, I'm " + p.name
}
func main() {
var s Speaker
p := Person{name: "Alice"}
s = p
p.name = "Bob"
fmt.Println(s.Speak()) // (1)
func() {
s := p // shadowing: s — это теперь Person, а не Speaker
fmt.Println(s.Speak()) // (2)
}()
go func(p Person) {
time.Sleep(10 * time.Millisecond)
fmt.Println(p.Speak()) // (3)
}(p)
p.name = "Charlie"
time.Sleep(20 * time.Millisecond)
}
💡Подсказки:
Что такое shadowing и как это влияет на s внутри анонимной функции?
Как работает передача аргументов в goroutine?
Как изменения структуры после передачи влияют на уже переданные значения?
✅ Ответ:
Hi, I'm Bob
Hi, I'm Bob
@golangtests
BY Golang
Warning: Undefined variable $i in /var/www/tg-me/post.php on line 283
Share with your friend now:
tg-me.com/Golang_google/2846