Golang ile Yazdığımız Fonksiyonları Python'da Çalıştırma | Ar-Ge Kulübü

b0mb

Katılımcı Üye
14 Mar 2017
471
1
İzmir
Merhabalar,

Bu konuda, Golang ile yazdığımız fonksiyonları nasıl shared object olarak export edip Python ile kullanabileceğimizden bahsedeceğim.

Her şeyden önce, Go ile bir fonksiyon yazalım.

Kod:
[COLOR="lemonchiffon"]package main

import "C"

//export sum
func sum(x, y int) int {
    return x + y
}

func main() {}[/COLOR]

Fonksiyon tanımlamadan önce kullandığımız, "//export sum" yorum satırı önemli. O olmadan fonksiyonu dışarıdan çağıramayız. Bu fonksiyonu Python ile çağırmak için önce "c-shared" modu ile build etmeliyiz kodu.

Kod:
[COLOR="lemonchiffon"]$ go help buildmode
The 'go build' and 'go install' commands take a -buildmode argument which  
indicates which kind of object file is to be built. Currently supported values  
are:

[...]

-buildmode=c-shared
    Build the listed main packages, plus all packages that they
    import, into C shared libraries. The only callable symbols will
    be those functions exported using a cgo //export comment.
    Non-main packages are ignored.

[...][/COLOR]

Gördüğünüz üzere, yorum satırı olayı yukarıda belirtilmiş zaten. Biz devam edelim, hemen kodu build edelim.

2J5jNE.png

Komutu çalıştırdığımız dizine başarılı bir şekilde shared library olarak export edebildik kodumuzu. Artık Python üzerinden çağırmak kaldı geriye. Bunun için, "ctypes" kütüphanesinden yararlanacağız.

oO9EEQ.png

Başarılı bir şekilde Python üzerinden Go ile yazdığımız fonksiyonu çağırdık. Anlayamadığınız yerde, bilgim neticesinde yardımcı olurum, kolay gelsin :)

Yararlanılan Kaynaklar:
 
Son düzenleme:
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.