diff options
author | Francisco Souza <franciscossouza@gmail.com> | 2012-03-13 09:07:37 +1100 |
---|---|---|
committer | Andrew Gerrand <adg@golang.org> | 2012-03-13 09:07:37 +1100 |
commit | 60b98d62087d582dafdda68c2af281c5e204fe03 (patch) | |
tree | 42d8bf0d7948fe652d8c401f2fd503227b51fd6b /doc/progs | |
parent | c7cca2756e7cf04a472c97b81f07ab791b7186ca (diff) | |
download | go-git-60b98d62087d582dafdda68c2af281c5e204fe03.tar.gz |
doc: add C? Go? Cgo! article
Originally published on The Go Programming Language Blog, March 17, 2011.
http://blog.golang.org/2011/03/c-go-cgo.html
Update #2547.
R=golang-dev, adg
CC=golang-dev
https://golang.org/cl/5777054
Diffstat (limited to 'doc/progs')
-rw-r--r-- | doc/progs/cgo1.go | 23 | ||||
-rw-r--r-- | doc/progs/cgo2.go | 21 | ||||
-rw-r--r-- | doc/progs/cgo3.go | 17 | ||||
-rw-r--r-- | doc/progs/cgo4.go | 17 | ||||
-rwxr-xr-x | doc/progs/run | 9 |
5 files changed, 86 insertions, 1 deletions
diff --git a/doc/progs/cgo1.go b/doc/progs/cgo1.go new file mode 100644 index 0000000000..3125cda3d8 --- /dev/null +++ b/doc/progs/cgo1.go @@ -0,0 +1,23 @@ +// Copyright 2012 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 rand + +// INCLUDE OMIT + +/* +#include <stdlib.h> +*/ +import "C" + +// STOP OMIT +func Random() int { + return int(C.random()) +} + +// STOP OMIT +func Seed(i int) { + C.srandom(C.uint(i)) +} + +// END OMIT diff --git a/doc/progs/cgo2.go b/doc/progs/cgo2.go new file mode 100644 index 0000000000..f38473b13e --- /dev/null +++ b/doc/progs/cgo2.go @@ -0,0 +1,21 @@ +// Copyright 2012 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 rand2 + +/* +#include <stdlib.h> +*/ +import "C" + +func Random() int { + var r C.long = C.random() + return int(r) +} + +// STOP OMIT +func Seed(i int) { + C.srandom(C.uint(i)) +} + +// END OMIT diff --git a/doc/progs/cgo3.go b/doc/progs/cgo3.go new file mode 100644 index 0000000000..435fd0402d --- /dev/null +++ b/doc/progs/cgo3.go @@ -0,0 +1,17 @@ +// Copyright 2012 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 print + +// #include <stdio.h> +// #include <stdlib.h> +import "C" +import "unsafe" + +func Print(s string) { + cs := C.CString(s) + C.fputs(cs, (*C.FILE)(C.stdout)) + C.free(unsafe.Pointer(cs)) +} + +// END OMIT diff --git a/doc/progs/cgo4.go b/doc/progs/cgo4.go new file mode 100644 index 0000000000..3808d62179 --- /dev/null +++ b/doc/progs/cgo4.go @@ -0,0 +1,17 @@ +// Copyright 2012 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 print + +// #include <stdio.h> +// #include <stdlib.h> +import "C" +import "unsafe" + +func Print(s string) { + cs := C.CString(s) + defer C.free(unsafe.Pointer(cs)) + C.fputs(cs, (*C.FILE)(C.stdout)) +} + +// END OMIT diff --git a/doc/progs/run b/doc/progs/run index 9d4669b6c2..8b383e5903 100755 --- a/doc/progs/run +++ b/doc/progs/run @@ -28,7 +28,14 @@ law_of_reflection=" interface2 " -all=$(echo $defer_panic_recover $effective_go $error_handling $law_of_reflection slices go1) +c_go_cgo=" + cgo1 + cgo2 + cgo3 + cgo4 +" + +all=$(echo $defer_panic_recover $effective_go $error_handling $law_of_reflection $c_go_cgo slices go1) for i in $all; do go build $i.go |