NAME FFI::Platypus::Lang::Go - Documentation and tools for using Platypus with Go VERSION version 0.01 SYNOPSIS Go code: /* * borrowed from * https://medium.com/learning-the-go-programming-language/calling-go-functions-from-other-languages-4c7d8bcc69bf */ package main import "C" import ( "fmt" "math" "sort" "sync" ) var count int var mtx sync.Mutex //export Add func Add(a, b int) int { return a + b } //export Cosine func Cosine(x float64) float64 { return math.Cos(x) } //export Sort func Sort(vals []int) { sort.Ints(vals) } //export Log func Log(msg string) int { mtx.Lock() defer mtx.Unlock() fmt.Println(msg) count++ return count } func main() {} Perl code: package Awesome::FFI; use strict; use warnings; use FFI::Platypus; use FFI::Go::String; use base qw( Exporter ); our @EXPORT_OK = qw( Add Cosine Log ); my $ffi = FFI::Platypus->new( api => 1, lang => 'Go' ); # See FFI::Platypus::Bundle for the how and why # bundle works. $ffi->bundle; $ffi->attach( Add => ['goint','goint'] => 'goint' ); $ffi->attach( Cosine => ['gofloat64' ] => 'gofloat64' ); $ffi->attach( Log => ['gostring' ] => 'goint' ); 1; DESCRIPTION This distribution is the Go language plugin for Platypus. It provides the definition for native Go types, like goint and gostring. It also provides a FFI::Build interface for building Perl extensions written in Go. For a full working example based on the synopsis above, including support files like Makefile.PL and tests, see the examples/Awesome-FFI directory that came with this distribution. SEE ALSO FFI::Platypus More about FFI and Platypus itself. FFI::Platypus::Type::GoString Type plugin for the go string type. FFI::Go::String Low level interface to the go string type. FFI::Build::File::GoMod FFI::Build class for handling Go modules. AUTHOR Graham Ollis COPYRIGHT AND LICENSE This software is copyright (c) 2018 by Graham Ollis. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.