Tek yönlü bir kanalı "yapmak" için bir amaç var mı?
func main() {
ch := make(chan<- int)
ch <- 5
fmt.Println("Hello, playground")
}
elbette bir kilitlenme verir, bunu yayınlanıyor. Eğer türü% T ile kontrol ederseniz, Go aslında ch
türünün sadece bir gönderen kanal olduğunu bildirir. Go'da, make
tek yönlü kanallara izin verilir, ancak çok az anlam ifade eder, çünkü başlangıçta tek yönlü bir kanal hazırlayarak, okuma/yazma işlemlerinden en az birinin asla gerçekleşmeyeceğini garanti edersiniz.
Olası bir açıklama, bir goroutinin asılmasına zorlamak olabilir ama bu, select {}
ile kolayca yapılabilir.
Benim sadece diğer fikri sadece bir şey n
kez yapılacak bir goroutine zorlamak için
ch := make(chan<- int, 50)
// do something 50 times, since then the buffer is full
for {
ch <- doSomething()
}
olduğunu Ama bu farklı yapılar herhangi bir sayı ile gerçekleştirilir, daha az karışıklığa bahsetmiyorum, daha kolay bulunuyor.
Bu sadece tip sistemde bir tuhaflık/gözetleme midir, yoksa bu davranış için var mıdır diye düşünmüyorum?
Ben sadelik git tasarım hedeflerinden biri inanıyoruz:
İşte bazı daha geçerli saçmalık:
Sen bazı geçerli saçma yazdım. Dil özellikleri çok kısa. Bunun saçmalık yapıların maliyetinde basitlik örneği olabileceğine inanıyorum. – ReyCharles@ReyCharles Bu nedenle şunu söyleyebilirim: "var ch chan <- int = make (chan int)" geçerli, ancak 'make' davranışı oldukça açık ve kapsamlı bir şekilde speküle edilmiş özel bir yapıdır. Basitliğin bir sonucundan ziyade bir gözetim olduğunu düşünüyorum. – LinearZoetrope
Sanırım bunu yapmak istemeyeceğiniz bir şey. (Ya da en azından, bunun için bir kullanım ile gelen bir kişi bugünkü Go Pub Trivia ™ 'yı kazanır.) Ancak, @ReyCharles'in söylediklerinin satırları boyunca, teknik özelliklerin tüm anlamsız yapıları dışlaması gerekmemektedir. Go, C'nin (örneğin kullanılmayan vars) bulunmadığı bazı saçmalık biçimlerini önlemeye çalışır; Pas, bazı saçmalıkları hariç tutmaya çalışan statik kontrollere sahiptir. Mutlu bir şekilde derleme yapın (ör., Irklar). Tamam, ve çoğunlukla ara sıra tuhaflık çekiyor ve bir şeyler yapmaya çalışıyoruz. – twotwotwo