mirror of
https://github.com/golang/go
synced 2024-11-22 01:04:40 -07:00
fix some typos, mostly
R=gri OCL=16161 CL=16161
This commit is contained in:
parent
1f3e842c73
commit
81672ef15b
@ -348,7 +348,7 @@ we have a second implementation of the "Reader" interface.
|
|||||||
|
|
||||||
--PROG progs/cat_rot13.go /type.Rot13/ /end.of.Rot13/
|
--PROG progs/cat_rot13.go /type.Rot13/ /end.of.Rot13/
|
||||||
|
|
||||||
(The "rot13" function called on line 39 is trivial and not worth reproducing.)
|
(The "rot13" function called on line 38 is trivial and not worth reproducing.)
|
||||||
|
|
||||||
To use the new feature, we define a flag:
|
To use the new feature, we define a flag:
|
||||||
|
|
||||||
@ -358,6 +358,8 @@ and use it from within a mostly unchanged "cat()" function:
|
|||||||
|
|
||||||
--PROG progs/cat_rot13.go /func.cat/ /^}/
|
--PROG progs/cat_rot13.go /func.cat/ /^}/
|
||||||
|
|
||||||
|
(We could also do the wrapping in "main" and leave "cat()" mostly alone, except
|
||||||
|
for changing the type of the argument.)
|
||||||
Lines 53 and 54 set it all up: If the "rot13" flag is true, wrap the "Reader"
|
Lines 53 and 54 set it all up: If the "rot13" flag is true, wrap the "Reader"
|
||||||
we received into a "Rot13" and proceed. Note that the interface variables
|
we received into a "Rot13" and proceed. Note that the interface variables
|
||||||
are values, not pointers: the argument is of type "Reader", not "*Reader",
|
are values, not pointers: the argument is of type "Reader", not "*Reader",
|
||||||
@ -374,7 +376,7 @@ Here it is in action:
|
|||||||
</pre>
|
</pre>
|
||||||
|
|
||||||
Fans of dependency injection may take cheer from how easily interfaces
|
Fans of dependency injection may take cheer from how easily interfaces
|
||||||
made substituting the implementation of a file descriptor.
|
allow us to substitute the implementation of a file descriptor.
|
||||||
|
|
||||||
Interfaces are a distinct feature of Go. An interface is implemented by a
|
Interfaces are a distinct feature of Go. An interface is implemented by a
|
||||||
type if the type implements all the methods declared in the interface.
|
type if the type implements all the methods declared in the interface.
|
||||||
@ -526,7 +528,7 @@ With channels, it's possible to serve multiple independent client goroutines wit
|
|||||||
writing an actual multiplexer. The trick is to send the server a channel in the message,
|
writing an actual multiplexer. The trick is to send the server a channel in the message,
|
||||||
which it will then use to reply to the original sender.
|
which it will then use to reply to the original sender.
|
||||||
A realistic client-server program is a lot of code, so here is a very simple substitute
|
A realistic client-server program is a lot of code, so here is a very simple substitute
|
||||||
to illustrate the idea. It starts by defining "Request" type, which embeds a channel
|
to illustrate the idea. It starts by defining a "Request" type, which embeds a channel
|
||||||
that will be used for the reply.
|
that will be used for the reply.
|
||||||
|
|
||||||
--PROG progs/server.go /type.Request/ /^}/
|
--PROG progs/server.go /type.Request/ /^}/
|
||||||
|
@ -13,7 +13,7 @@ func Generate(ch *chan int) {
|
|||||||
|
|
||||||
// Copy the values from channel 'in' to channel 'out',
|
// Copy the values from channel 'in' to channel 'out',
|
||||||
// removing those divisible by 'prime'.
|
// removing those divisible by 'prime'.
|
||||||
func Filter(in *chan int, out *chan int, prime int) {
|
func Filter(in, out *chan int, prime int) {
|
||||||
for {
|
for {
|
||||||
i := <-in // Receive value of new variable 'i' from 'in'.
|
i := <-in // Receive value of new variable 'i' from 'in'.
|
||||||
if i % prime != 0 {
|
if i % prime != 0 {
|
||||||
|
Loading…
Reference in New Issue
Block a user