Я пишу программу на языке Go, и у меня есть простая задача:Как распечатать содержимое канала, не изменяя его
У меня есть некоторые goroutines в моей программе и каналы, с которыми goroutines использовать для связи. Время от времени я хотел бы проверить, что внутри каналов. Как я мог достичь этого, не прерывая работу goroutines? У каналов есть какая-либо функция для печати их содержимого? Или мне как-то их скопировать?
var shelf chan int = make(chan int, 5)
go Depot(shelf)
go Shop(shelf)
var input string
fmt.Scanln(&input)
if (input == "print") {
//here print what on shelf
}
Ответ «своего рода». См. Http://stackoverflow.com/a/26045887/3108853 для обсуждения. – lsowen
Так что, может быть, я coudl создаю глубокую копию переменной, как в ada 'Obj1.all: = Ob2.all'? – whd
нет, потому что создание копии не является атомарным. – thwd