diff --git a/doc/go_tutorial.txt b/doc/go_tutorial.txt new file mode 100644 index 0000000000..500231eb73 --- /dev/null +++ b/doc/go_tutorial.txt @@ -0,0 +1,21 @@ +Get Going +---- + +Rob Pike + +---- +(September 10, 2008) + + +This document is a tutorial introduction to the basics of the Go systems programming +language, intended for programmers familiar with C or C++. + +--PROG progs/helloworld.go + +--PROG progs/helloworld.go /func.main/ END + +--PROG progs/helloworld.go /print/ + +--PROG progs/helloworld.go /func/ + +Now is the time. diff --git a/doc/prog.sh b/doc/prog.sh new file mode 100755 index 0000000000..8f376b66d2 --- /dev/null +++ b/doc/prog.sh @@ -0,0 +1,63 @@ +#!/bin/sh +# 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. + +# generate HTML for a program excerpt. +# first arg is file name +# second arg is awk pattern to match start line +# third arg is awk pattern to stop processing +# +# missing third arg means print one line +# third arg "END" means proces rest of file +# missing second arg means process whole file +# +# examples: +# +# prog.sh foo.go # whole file +# prog.sh foo.go "/^func.main/" # signature of main +# prog.sh foo.go "/^func.main/" "/^}/ # body of main +# +# non-blank lines are annotated with line number in file + +echo "
"
+
+case $# in
+3)
+ if test "$3" = "END" # $2 to end of file
+ then
+ awk '
+ BEGIN { printing = 0 }
+ '$2' { printing = 1; print NR "\t" $0; getline }
+ printing { if($0 ~ /./) { print NR "\t" $0 } else { print "" } }
+ '
+ else # $2 through $3
+ awk '
+ BEGIN { printing = 0 }
+ '$2' { printing = 1; print NR "\t" $0; getline }
+ '$3' && printing { if(printing) {printing = 0; print NR "\t" $0; exit} }
+ printing { if($0 ~ /./) { print NR "\t" $0 } else { print "" } }
+ '
+ fi
+ ;;
+2) # one line
+ awk '
+ '$2' { print NR "\t" $0; getline; exit }
+ '
+ ;;
+1) # whole file
+ awk '
+ { if($0 ~ /./) { print NR "\t" $0 } else { print "" } }
+ '
+ ;;
+*)
+ echo >&2 usage: prog.sh file.go /func.main/ /^}/
+esac <$1 |
+sed '
+ s/&/\&/g
+ s/"/\"/g
+ s/\</g
+ s/>/\>/g
+'
+
+echo ''