mirror of
https://github.com/golang/go
synced 2024-11-13 15:30:22 -07:00
9443949207
Originally published on the Go blog on 5 Jan 2011: http://blog.golang.org/2011/01/go-slices-usage-and-internals.html R=golang-dev, gri CC=golang-dev https://golang.org/cl/5516046
126 lines
2.7 KiB
Bash
Executable File
126 lines
2.7 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# 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.
|
|
|
|
set -e
|
|
|
|
eval $(gomake --no-print-directory -f ../../src/Make.inc go-env)
|
|
|
|
if [ -z "$O" ]; then
|
|
echo 'missing $O - maybe no Make.$GOARCH?' 1>&2
|
|
exit 1
|
|
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
|
|
"
|
|
|
|
effective_go="
|
|
eff_bytesize.go
|
|
eff_qr.go
|
|
eff_sequence.go
|
|
"
|
|
|
|
error_handling="
|
|
error.go
|
|
error2.go
|
|
error3.go
|
|
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
|
|
$GC $i
|
|
done
|
|
|
|
# Write to temporary file to avoid mingw bash bug.
|
|
TMPFILE="/tmp/gotest3"
|
|
|
|
function testit {
|
|
$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
|
|
}
|
|
|
|
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]"
|
|
|
|
testit go1 "" "Christmas is a holiday: true"
|
|
|
|
rm -f $O.out $O.out.exe *.$O "$TMPFILE"
|