summaryrefslogtreecommitdiff
path: root/doc/progs
diff options
context:
space:
mode:
authorRob Pike <r@golang.org>2012-02-28 13:35:58 +1100
committerRob Pike <r@golang.org>2012-02-28 13:35:58 +1100
commit00d4b71ade3706901865f041e3dd4971544713ac (patch)
treeaf19c1e371e15d230105d80a7e26331231f9b2a9 /doc/progs
parentd8c5a679812732f86bb1405911b8a0900bdfe700 (diff)
downloadgo-00d4b71ade3706901865f041e3dd4971544713ac.tar.gz
tutorial: delete
Instead we'll point people at the Tour and beef up code.html. Fixes issue 3107. R=golang-dev, bradfitz, r, adg CC=golang-dev http://codereview.appspot.com/5697077
Diffstat (limited to 'doc/progs')
-rw-r--r--doc/progs/cat.go47
-rw-r--r--doc/progs/cat_rot13.go91
-rw-r--r--doc/progs/echo.go32
-rw-r--r--doc/progs/file.go77
-rw-r--r--doc/progs/file_windows.go77
-rwxr-xr-xdoc/progs/run58
-rw-r--r--doc/progs/sieve.go38
-rw-r--r--doc/progs/sieve1.go51
-rw-r--r--doc/progs/sortmain.go68
9 files changed, 0 insertions, 539 deletions
diff --git a/doc/progs/cat.go b/doc/progs/cat.go
deleted file mode 100644
index 79ad01503..000000000
--- a/doc/progs/cat.go
+++ /dev/null
@@ -1,47 +0,0 @@
-// Copyright 2009 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package main
-
-import (
- "./file"
- "flag"
- "fmt"
- "os"
-)
-
-func cat(f *file.File) {
- const NBUF = 512
- var buf [NBUF]byte
- for {
- switch nr, er := f.Read(buf[:]); true {
- case nr < 0:
- fmt.Fprintf(os.Stderr, "cat: error reading from %s: %s\n", f, er)
- os.Exit(1)
- case nr == 0: // EOF
- return
- case nr > 0:
- if nw, ew := file.Stdout.Write(buf[0:nr]); nw != nr {
- fmt.Fprintf(os.Stderr, "cat: error writing from %s: %s\n", f, ew)
- os.Exit(1)
- }
- }
- }
-}
-
-func main() {
- flag.Parse() // Scans the arg list and sets up flags
- if flag.NArg() == 0 {
- cat(file.Stdin)
- }
- for i := 0; i < flag.NArg(); i++ {
- f, err := file.Open(flag.Arg(i))
- if f == nil {
- fmt.Fprintf(os.Stderr, "cat: can't open %s: error %s\n", flag.Arg(i), err)
- os.Exit(1)
- }
- cat(f)
- f.Close()
- }
-}
diff --git a/doc/progs/cat_rot13.go b/doc/progs/cat_rot13.go
deleted file mode 100644
index c8584ed47..000000000
--- a/doc/progs/cat_rot13.go
+++ /dev/null
@@ -1,91 +0,0 @@
-// Copyright 2009 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package main
-
-import (
- "./file"
- "flag"
- "fmt"
- "os"
-)
-
-var rot13Flag = flag.Bool("rot13", false, "rot13 the input")
-
-func rot13(b byte) byte {
- if 'a' <= b && b <= 'z' {
- b = 'a' + ((b-'a')+13)%26
- }
- if 'A' <= b && b <= 'Z' {
- b = 'A' + ((b-'A')+13)%26
- }
- return b
-}
-
-type reader interface {
- Read(b []byte) (ret int, err error)
- String() string
-}
-
-type rotate13 struct {
- source reader
-}
-
-func newRotate13(source reader) *rotate13 {
- return &rotate13{source}
-}
-
-func (r13 *rotate13) Read(b []byte) (ret int, err error) {
- r, e := r13.source.Read(b)
- for i := 0; i < r; i++ {
- b[i] = rot13(b[i])
- }
- return r, e
-}
-
-func (r13 *rotate13) String() string {
- return r13.source.String()
-}
-
-// end of rotate13 implementation OMIT
-
-func cat(r reader) {
- const NBUF = 512
- var buf [NBUF]byte
-
- if *rot13Flag {
- r = newRotate13(r)
- }
- for {
- switch nr, er := r.Read(buf[:]); {
- case nr < 0:
- fmt.Fprintf(os.Stderr, "cat: error reading from %s: %s\n", r, er)
- os.Exit(1)
- case nr == 0: // EOF
- return
- case nr > 0:
- nw, ew := file.Stdout.Write(buf[0:nr])
- if nw != nr {
- fmt.Fprintf(os.Stderr, "cat: error writing from %s: %s\n", r, ew)
- os.Exit(1)
- }
- }
- }
-}
-
-func main() {
- flag.Parse() // Scans the arg list and sets up flags
- if flag.NArg() == 0 {
- cat(file.Stdin)
- }
- for i := 0; i < flag.NArg(); i++ {
- f, err := file.Open(flag.Arg(i))
- if f == nil {
- fmt.Fprintf(os.Stderr, "cat: can't open %s: error %s\n", flag.Arg(i), err)
- os.Exit(1)
- }
- cat(f)
- f.Close()
- }
-}
diff --git a/doc/progs/echo.go b/doc/progs/echo.go
deleted file mode 100644
index 432e80820..000000000
--- a/doc/progs/echo.go
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright 2009 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package main
-
-import (
- "flag" // command line option parser
- "os"
-)
-
-var omitNewline = flag.Bool("n", false, "don't print final newline")
-
-const (
- Space = " "
- Newline = "\n"
-)
-
-func main() {
- flag.Parse() // Scans the arg list and sets up flags
- var s string = ""
- for i := 0; i < flag.NArg(); i++ {
- if i > 0 {
- s += Space
- }
- s += flag.Arg(i)
- }
- if !*omitNewline {
- s += Newline
- }
- os.Stdout.WriteString(s)
-}
diff --git a/doc/progs/file.go b/doc/progs/file.go
deleted file mode 100644
index 75f0f207a..000000000
--- a/doc/progs/file.go
+++ /dev/null
@@ -1,77 +0,0 @@
-// Copyright 2009 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package file
-
-import (
- "os"
- "syscall"
-)
-
-type File struct {
- fd int // file descriptor number
- name string // file name at Open time
-}
-
-func newFile(fd int, name string) *File {
- if fd < 0 {
- return nil
- }
- return &File{fd, name}
-}
-
-var (
- Stdin = newFile(syscall.Stdin, "/dev/stdin")
- Stdout = newFile(syscall.Stdout, "/dev/stdout")
- Stderr = newFile(syscall.Stderr, "/dev/stderr")
-)
-
-func OpenFile(name string, mode int, perm uint32) (file *File, err error) {
- r, err := syscall.Open(name, mode, perm)
- return newFile(r, name), err
-}
-
-const (
- O_RDONLY = syscall.O_RDONLY
- O_RDWR = syscall.O_RDWR
- O_CREATE = syscall.O_CREAT
- O_TRUNC = syscall.O_TRUNC
-)
-
-func Open(name string) (file *File, err error) {
- return OpenFile(name, O_RDONLY, 0)
-}
-
-func Create(name string) (file *File, err error) {
- return OpenFile(name, O_RDWR|O_CREATE|O_TRUNC, 0666)
-}
-
-func (file *File) Close() error {
- if file == nil {
- return os.ErrInvalid
- }
- err := syscall.Close(file.fd)
- file.fd = -1 // so it can't be closed again
- return err
-}
-
-func (file *File) Read(b []byte) (ret int, err error) {
- if file == nil {
- return -1, os.ErrInvalid
- }
- r, err := syscall.Read(file.fd, b)
- return int(r), err
-}
-
-func (file *File) Write(b []byte) (ret int, err error) {
- if file == nil {
- return -1, os.ErrInvalid
- }
- r, err := syscall.Write(file.fd, b)
- return int(r), err
-}
-
-func (file *File) String() string {
- return file.name
-}
diff --git a/doc/progs/file_windows.go b/doc/progs/file_windows.go
deleted file mode 100644
index 8b79ee97d..000000000
--- a/doc/progs/file_windows.go
+++ /dev/null
@@ -1,77 +0,0 @@
-// Copyright 2009 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package file
-
-import (
- "os"
- "syscall"
-)
-
-type File struct {
- fd syscall.Handle // file descriptor number
- name string // file name at Open time
-}
-
-func newFile(fd syscall.Handle, name string) *File {
- if fd == ^syscall.Handle(0) {
- return nil
- }
- return &File{fd, name}
-}
-
-var (
- Stdin = newFile(syscall.Stdin, "/dev/stdin")
- Stdout = newFile(syscall.Stdout, "/dev/stdout")
- Stderr = newFile(syscall.Stderr, "/dev/stderr")
-)
-
-func OpenFile(name string, mode int, perm uint32) (file *File, err error) {
- r, err := syscall.Open(name, mode, perm)
- return newFile(r, name), err
-}
-
-const (
- O_RDONLY = syscall.O_RDONLY
- O_RDWR = syscall.O_RDWR
- O_CREATE = syscall.O_CREAT
- O_TRUNC = syscall.O_TRUNC
-)
-
-func Open(name string) (file *File, err error) {
- return OpenFile(name, O_RDONLY, 0)
-}
-
-func Create(name string) (file *File, err error) {
- return OpenFile(name, O_RDWR|O_CREATE|O_TRUNC, 0666)
-}
-
-func (file *File) Close() error {
- if file == nil {
- return os.ErrInvalid
- }
- err := syscall.Close(file.fd)
- file.fd = syscall.InvalidHandle // so it can't be closed again
- return err
-}
-
-func (file *File) Read(b []byte) (ret int, err error) {
- if file == nil {
- return -1, os.ErrInvalid
- }
- r, err := syscall.Read(file.fd, b)
- return int(r), err
-}
-
-func (file *File) Write(b []byte) (ret int, err error) {
- if file == nil {
- return -1, os.ErrInvalid
- }
- r, err := syscall.Write(file.fd, b)
- return int(r), err
-}
-
-func (file *File) String() string {
- return file.name
-}
diff --git a/doc/progs/run b/doc/progs/run
index 5a2b78651..2470d5e8e 100755
--- a/doc/progs/run
+++ b/doc/progs/run
@@ -14,12 +14,6 @@ fi
rm -f *.$O
-if [ "$GOOS" = "windows" ];then
- $GC -o file.$O file_windows.go
-else
- $GC file.go
-fi
-
defer_panic_recover="
defer.go
defer2.go
@@ -38,29 +32,10 @@ error_handling="
error4.go
"
-go_tutorial="
- cat.go
- cat_rot13.go
- echo.go
- helloworld.go
- helloworld3.go
- print.go
- print_string.go
- server.go
- server1.go
- sieve.go
- sieve1.go
- sort.go
- sortmain.go
- strings.go
- sum.go
-"
-
for i in \
$defer_panic_recover \
$effective_go \
$error_handling \
- $go_tutorial \
slices.go \
go1.go \
; do
@@ -80,43 +55,10 @@ function testit {
fi
}
-function testitpipe {
- $LD $1.$O
- ./$O.out | $2 2>&1 >"$TMPFILE" || true
- x=$(echo $(cat "$TMPFILE")) # extra echo canonicalizes
- if [ "$x" != "$3" ]
- then
- echo $1 failed: '"'$x'"' is not '"'$3'"'
- fi
-}
-
-testit helloworld "" "Hello, world; or Καλημέρα κόσμε; or こんにちは 世界"
-testit helloworld3 "" "hello, world can't open file; err=no such file or directory"
-testit echo "hello, world" "hello, world"
-testit sum "" "6"
-testit strings "" ""
testit defer "" "0 3210 2"
testit defer2 "" "Calling g. Printing in g 0 Printing in g 1 Printing in g 2 Printing in g 3 Panicking! Defer in g 3 Defer in g 2 Defer in g 1 Defer in g 0 Recovered in f 4 Returned normally from f."
-alphabet=abcdefghijklmnopqrstuvwxyz
-rot13=nopqrstuvwxyzabcdefghijklm
-echo $alphabet | testit cat "" $alphabet
-echo $alphabet | testit cat_rot13 "--rot13" $rot13
-echo $rot13 | testit cat_rot13 "--rot13" $alphabet
-
-testit sortmain "" "Sunday Monday Tuesday Wednesday Thursday Friday Saturday"
-
-testit print "" "18446744073709551615 -1 18446744073709551615 {77 Sunset Strip} [1 2 3 4] 18446744073709551615 {77 Sunset Strip} [1 2 3 4] 18446744073709551615 {77 Sunset Strip} [1 2 3 4]"
-testit print_string "" "77 Sunset Strip"
-
-testitpipe sieve "sed 10q" "2 3 5 7 11 13 17 19 23 29"
-testitpipe sieve "sed 10q" "2 3 5 7 11 13 17 19 23 29"
-
-# server hangs; don't run it, just compile it
-$GC server.go
-testit server1 "" ""
-
testit eff_bytesize "" "1.00YB 9.09TB"
testit eff_sequence "" "[-1 2 6 16 44]"
diff --git a/doc/progs/sieve.go b/doc/progs/sieve.go
deleted file mode 100644
index b31530981..000000000
--- a/doc/progs/sieve.go
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright 2009 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package main
-
-import "fmt"
-
-// Send the sequence 2, 3, 4, ... to channel 'ch'.
-func generate(ch chan int) {
- for i := 2; ; i++ {
- ch <- i // Send 'i' to channel 'ch'.
- }
-}
-
-// Copy the values from channel 'in' to channel 'out',
-// removing those divisible by 'prime'.
-func filter(in, out chan int, prime int) {
- for {
- i := <-in // Receive value of new variable 'i' from 'in'.
- if i%prime != 0 {
- out <- i // Send 'i' to channel 'out'.
- }
- }
-}
-
-// The prime sieve: Daisy-chain filter processes together.
-func main() {
- ch := make(chan int) // Create a new channel.
- go generate(ch) // Start generate() as a goroutine.
- for i := 0; i < 100; i++ { // Print the first hundred primes.
- prime := <-ch
- fmt.Println(prime)
- ch1 := make(chan int)
- go filter(ch, ch1, prime)
- ch = ch1
- }
-}
diff --git a/doc/progs/sieve1.go b/doc/progs/sieve1.go
deleted file mode 100644
index e1411a334..000000000
--- a/doc/progs/sieve1.go
+++ /dev/null
@@ -1,51 +0,0 @@
-// Copyright 2009 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package main
-
-import "fmt"
-
-// Send the sequence 2, 3, 4, ... to returned channel
-func generate() chan int {
- ch := make(chan int)
- go func() {
- for i := 2; ; i++ {
- ch <- i
- }
- }()
- return ch
-}
-
-// Filter out input values divisible by 'prime', send rest to returned channel
-func filter(in chan int, prime int) chan int {
- out := make(chan int)
- go func() {
- for {
- if i := <-in; i%prime != 0 {
- out <- i
- }
- }
- }()
- return out
-}
-
-func sieve() chan int {
- out := make(chan int)
- go func() {
- ch := generate()
- for {
- prime := <-ch
- out <- prime
- ch = filter(ch, prime)
- }
- }()
- return out
-}
-
-func main() {
- primes := sieve()
- for i := 0; i < 100; i++ { // Print the first hundred primes.
- fmt.Println(<-primes)
- }
-}
diff --git a/doc/progs/sortmain.go b/doc/progs/sortmain.go
deleted file mode 100644
index 1bc3355fd..000000000
--- a/doc/progs/sortmain.go
+++ /dev/null
@@ -1,68 +0,0 @@
-// Copyright 2009 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package main
-
-import (
- "./sort"
- "fmt"
-)
-
-func ints() {
- data := []int{74, 59, 238, -784, 9845, 959, 905, 0, 0, 42, 7586, -5467984, 7586}
- a := sort.IntSlice(data)
- sort.Sort(a)
- if !sort.IsSorted(a) {
- panic("fail")
- }
-}
-
-func strings() {
- data := []string{"monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday"}
- a := sort.StringSlice(data)
- sort.Sort(a)
- if !sort.IsSorted(a) {
- panic("fail")
- }
-}
-
-type day struct {
- num int
- shortName string
- longName string
-}
-
-type dayArray struct {
- data []*day
-}
-
-func (p *dayArray) Len() int { return len(p.data) }
-func (p *dayArray) Less(i, j int) bool { return p.data[i].num < p.data[j].num }
-func (p *dayArray) Swap(i, j int) { p.data[i], p.data[j] = p.data[j], p.data[i] }
-
-func days() {
- Sunday := day{0, "SUN", "Sunday"}
- Monday := day{1, "MON", "Monday"}
- Tuesday := day{2, "TUE", "Tuesday"}
- Wednesday := day{3, "WED", "Wednesday"}
- Thursday := day{4, "THU", "Thursday"}
- Friday := day{5, "FRI", "Friday"}
- Saturday := day{6, "SAT", "Saturday"}
- data := []*day{&Tuesday, &Thursday, &Wednesday, &Sunday, &Monday, &Friday, &Saturday}
- a := dayArray{data}
- sort.Sort(&a)
- if !sort.IsSorted(&a) {
- panic("fail")
- }
- for _, d := range data {
- fmt.Printf("%s ", d.longName)
- }
- fmt.Printf("\n")
-}
-
-func main() {
- ints()
- strings()
- days()
-}