checked in at
<p>
<pre>
- /doc/progs
+ //depot2/go/doc/progs
</pre>
Program snippets are annotated with the line number in the original file; for
</pre>
The <code>:=</code> operator is used a lot in Go to represent an initializing declaration.
-(For those who know Limbo, its <code>:=</code> construct is the same, but notice
+(For those who know Sawzall, its <code>:=</code> construct is the same, but notice
that Go has no colon after the name in a full <code>var</code> declaration.
Also, for simplicity of parsing, <code>:=</code> only works inside functions, not at
the top level.)
<p>
Although integers come in lots of sizes in Go, integer constants do not.
There are no constants like <code>0ll</code> or <code>0x0UL</code>. Instead, integer
-constants are evaluated as ideal, large-precision values that
+constants are evaluated as large-precision values that
can overflow only when they are assigned to an integer variable with
too little precision to represent the value.
<p>
As an example, consider this simple sort algorithm taken from <code>progs/sort.go</code>:
<p>
<pre> <!-- progs/sort.go /func.Sort/ /^}/ -->
-09 func Sort(data SortInterface) {
+09 func Sort(data Interface) {
10 for i := 1; i < data.Len(); i++ {
11 for j := i; j > 0 && data.Less(j, j-1); j-- {
12 data.Swap(j, j-1);
15 }
</pre>
<p>
-The code needs only three methods, which we wrap into <code>SortInterface</code>:
+The code needs only three methods, which we wrap into sort's <code>Interface</code>:
<p>
<pre> <!-- progs/sort.go /interface/ /^}/ -->
-03 type SortInterface interface {
+03 type Interface interface {
04 Len() int;
05 Less(i, j int) bool;
06 Swap(i, j int);
There's a lot more to Go programming and concurrent programming in general but this
quick tour should give you some of the basics.
</table>
+</body>
+</html>
key features of the language. All the programs work (at time of writing) and are
checked in at
- /doc/progs
+ //depot2/go/doc/progs
Program snippets are annotated with the line number in the original file; for
cleanliness, blank lines remain blank.
s := "";
The ":=" operator is used a lot in Go to represent an initializing declaration.
-(For those who know Limbo, its ":=" construct is the same, but notice
+(For those who know Sawzall, its ":=" construct is the same, but notice
that Go has no colon after the name in a full "var" declaration.
Also, for simplicity of parsing, ":=" only works inside functions, not at
the top level.)
--PROG progs/sort.go /func.Sort/ /^}/
-The code needs only three methods, which we wrap into "SortInterface":
+The code needs only three methods, which we wrap into sort's "Interface":
--PROG progs/sort.go /interface/ /^}/
package sort
-type SortInterface interface {
+type Interface interface {
Len() int;
Less(i, j int) bool;
Swap(i, j int);
}
-func Sort(data SortInterface) {
+func Sort(data Interface) {
for i := 1; i < data.Len(); i++ {
for j := i; j > 0 && data.Less(j, j-1); j-- {
data.Swap(j, j-1);
}
}
-func IsSorted(data SortInterface) bool {
+func IsSorted(data Interface) bool {
n := data.Len();
for i := n - 1; i > 0; i-- {
if data.Less(i, i - 1) {