diff --git a/doc/go_tutorial.txt b/doc/go_tutorial.txt new file mode 100644 index 00000000000..500231eb73d --- /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 00000000000..8f376b66d20 --- /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 ''