1
0
mirror of https://github.com/golang/go synced 2024-11-21 22:04:39 -07:00

tutorial: remove all line numbers and references to them.

R=golang-dev, mikioh.mikioh, dsymonds
CC=golang-dev
https://golang.org/cl/4675070
This commit is contained in:
Rob Pike 2011-07-09 23:17:38 +10:00
parent ab3365d34e
commit c17347eea9
2 changed files with 50 additions and 52 deletions

View File

@ -19,9 +19,6 @@ The presentation here proceeds through a series of modest programs to illustrate
key features of the language. All the programs work (at time of writing) and are key features of the language. All the programs work (at time of writing) and are
checked into the repository in the directory <a href='/doc/progs'><code>/doc/progs/</code></a>. checked into the repository in the directory <a href='/doc/progs'><code>/doc/progs/</code></a>.
<p> <p>
Program snippets are annotated with the line number in the original file; for
cleanliness, blank lines remain blank.
<p>
<h2>Hello, World</h2> <h2>Hello, World</h2>
<p> <p>
Let's start in the usual way: Let's start in the usual way:
@ -176,12 +173,13 @@ a naming conflict.
<p> <p>
Given <code>os.Stdout</code> we can use its <code>WriteString</code> method to print the string. Given <code>os.Stdout</code> we can use its <code>WriteString</code> method to print the string.
<p> <p>
Having imported the <code>flag</code> package, line 12 creates a global variable to hold After importing the <code>flag</code> package, we use a <code>var</code> declaration
the value of echo's <code>-n</code> flag. The variable <code>omitNewline</code> has type <code>*bool</code>, pointer to create and initialize a global variable, called <code>omitNewline</code>,
to <code>bool</code>. to hold the value of echo's <code>-n</code> flag.
The variable has type <code>*bool</code>, pointer to <code>bool</code>.
<p> <p>
In <code>main.main</code>, we parse the arguments (line 20) and then create a local In <code>main.main</code>, we parse the arguments (the call to <code>flag.Parse</code>) and then create a local
string variable we will use to build the output. string variable with which to build the output.
<p> <p>
The declaration statement has the form The declaration statement has the form
<p> <p>
@ -261,7 +259,9 @@ reassigning it. This snippet from <code>strings.go</code> is legal code:
<p> <p>
<pre><!-- progs/strings.go /hello/ /ciao/ <pre><!-- progs/strings.go /hello/ /ciao/
--> s := &#34;hello&#34; --> s := &#34;hello&#34;
if s[1] != 'e' { os.Exit(1) } if s[1] != 'e' {
os.Exit(1)
}
s = &#34;good bye&#34; s = &#34;good bye&#34;
var p *string = &amp;s var p *string = &amp;s
*p = &#34;ciao&#34; *p = &#34;ciao&#34;
@ -540,7 +540,7 @@ return n
</pre> </pre>
<p> <p>
but for simple structures like <code>File</code> it's easier to return the address of a but for simple structures like <code>File</code> it's easier to return the address of a
composite literal, as is done here on line 21. composite literal, as is done here in the <code>return</code> statement from <code>newFile</code>.
<p> <p>
We can use the factory to construct some familiar, exported variables of type <code>*File</code>: We can use the factory to construct some familiar, exported variables of type <code>*File</code>:
<p> <p>
@ -573,9 +573,9 @@ multi-value return as a parenthesized list of declarations; syntactically
they look just like a second parameter list. The function they look just like a second parameter list. The function
<code>syscall.Open</code> <code>syscall.Open</code>
also has a multi-value return, which we can grab with the multi-variable also has a multi-value return, which we can grab with the multi-variable
declaration on line 31; it declares <code>r</code> and <code>e</code> to hold the two values, declaration on the first line; it declares <code>r</code> and <code>e</code> to hold the two values,
both of type <code>int</code> (although you'd have to look at the <code>syscall</code> package both of type <code>int</code> (although you'd have to look at the <code>syscall</code> package
to see that). Finally, line 35 returns two values: a pointer to the new <code>File</code> to see that). Finally, <code>OpenFile</code> returns two values: a pointer to the new <code>File</code>
and the error. If <code>syscall.Open</code> fails, the file descriptor <code>r</code> will and the error. If <code>syscall.Open</code> fails, the file descriptor <code>r</code> will
be negative and <code>newFile</code> will return <code>nil</code>. be negative and <code>newFile</code> will return <code>nil</code>.
<p> <p>

View File

@ -20,9 +20,6 @@ The presentation here proceeds through a series of modest programs to illustrate
key features of the language. All the programs work (at time of writing) and are key features of the language. All the programs work (at time of writing) and are
checked into the repository in the directory <a href='/doc/progs'>"/doc/progs/"</a>. checked into the repository in the directory <a href='/doc/progs'>"/doc/progs/"</a>.
Program snippets are annotated with the line number in the original file; for
cleanliness, blank lines remain blank.
Hello, World Hello, World
---- ----
@ -136,12 +133,13 @@ a naming conflict.
Given "os.Stdout" we can use its "WriteString" method to print the string. Given "os.Stdout" we can use its "WriteString" method to print the string.
Having imported the "flag" package, line 12 creates a global variable to hold After importing the "flag" package, we use a "var" declaration
the value of echo's "-n" flag. The variable "omitNewline" has type "*bool", pointer to create and initialize a global variable, called "omitNewline",
to "bool". to hold the value of echo's "-n" flag.
The variable has type "*bool", pointer to "bool".
In "main.main", we parse the arguments (line 20) and then create a local In "main.main", we parse the arguments (the call to "flag.Parse") and then create a local
string variable we will use to build the output. string variable with which to build the output.
The declaration statement has the form The declaration statement has the form
@ -429,7 +427,7 @@ object. We could write
return n return n
but for simple structures like "File" it's easier to return the address of a but for simple structures like "File" it's easier to return the address of a
composite literal, as is done here on line 21. composite literal, as is done here in the "return" statement from "newFile".
We can use the factory to construct some familiar, exported variables of type "*File": We can use the factory to construct some familiar, exported variables of type "*File":
@ -447,9 +445,9 @@ multi-value return as a parenthesized list of declarations; syntactically
they look just like a second parameter list. The function they look just like a second parameter list. The function
"syscall.Open" "syscall.Open"
also has a multi-value return, which we can grab with the multi-variable also has a multi-value return, which we can grab with the multi-variable
declaration on line 31; it declares "r" and "e" to hold the two values, declaration on the first line; it declares "r" and "e" to hold the two values,
both of type "int" (although you'd have to look at the "syscall" package both of type "int" (although you'd have to look at the "syscall" package
to see that). Finally, line 35 returns two values: a pointer to the new "File" to see that). Finally, "OpenFile" returns two values: a pointer to the new "File"
and the error. If "syscall.Open" fails, the file descriptor "r" will and the error. If "syscall.Open" fails, the file descriptor "r" will
be negative and "newFile" will return "nil". be negative and "newFile" will return "nil".