Articles of aller

Callbacks C et threads non-Go

Comment appeler un code Go en C à partir de threads qui n’ont pas été créés par Go? Qu’est-ce que j’assigne à un pointeur de fonction C tel que les threads non créés par Go puissent appeler ce pointeur et entrer dans le code Go? Mise à jour0 Je ne veux pas utiliser SWIG. Les […]

cgo – Comment convertir une chaîne en tableau de caractères fixes C

J’essaye d’instancier une structure C dans mon code Go. La structure est définie comme ceci (dans une bibliothèque externe que je ne peux pas modifier): typedef struct { char field1[256]; } S1 En allant, j’ai fait ceci: func myfunc(mystr ssortingng){ // We need to convert mystr from ssortingng to char array cStr := C.CSsortingng(mystr) defer […]

Algorithme pour obtenir la meilleure combinaison

J’ai des articles avec les identifiants 1, 3, 4, 5, 6, 7 . Maintenant, j’ai des données comme suit. Il y a un offerId pour chaque ligne. Array of Ids consiste en une combinaison de l’ ID dans un tableau. Discount est la valeur de cette offerId offerId : Array of Ids : Discount o1 […]

cgo résultat a aller pointeur

J’écris du code go qui exporte une fonction comme celle-ci: package main import “C” //export returnSsortingng func returnSsortingng() ssortingng { // gossortingng := “hello world” return gossortingng } func main() {} Je construis le fichier .so et le fichier d’en-tête en utilisant go build -buildmode = c-shared, mais lorsque j’appelle returnSsortingng () dans mon code […]

Appelez la fonction Go avec le paramètre de chaîne de C?

Je peux appeler une fonction Go sans parameters de C, voir ci-dessous . Cela comstack via go build et imprime Hello from Golang main function! CFunction says: Hello World from CFunction! Hello from GoFunction! main.go package main //extern int CFunction(); import “C” import “fmt” func main() { fmt.Println(“Hello from Golang main function!”) //Calling a CFunction […]

Comment puis-je convertir une chaîne terminée par null dans un tampon d’octets en chaîne dans Go?

Ce: label := ssortingng([]byte{97, 98, 99, 0, 0, 0, 0}) fmt.Printf(“%s\n”, label) fait ceci ( ^@ est l’octet nul): go run test.go abc^@^@^@

Comptage de l’occurrence du personnage dans la tranche dans Go

Ok, alors j’ai frappé un mur de briques. Edit: utiliser bytes.IndexByte() dans ma fonction count() permet de fonctionner presque deux fois plus vite. bytes.IndexByte() est écrit en assembleur au lieu de Go. Pas encore la vitesse C, mais plus près. J’ai deux programmes, l’un en C et l’autre en Go, qui comptent tous les nouveaux […]

Go TCP read n’est pas bloquant

J’essaie de faire un serveur et un client dans Go, j’ai réussi à communiquer avec le serveur et le client. Mais le problème que j’ai, c’est que la lecture TCP dans golang est non bloquante. Ce que je voudrais savoir s’il est possible que la lecture dans golang bloque comme la lecture dans C. Merci […]

Comment puis-je exécuter un exécutable de la mémoire?

Supposons que j’ai inclus un binary dans mon programme lors de la compilation, je le garde donc dans une variable qui ressemble à var myExec =[]byte{‘s’,’o’,’m’,’e’,’ ‘,’b’,’y’,’t’,’e’,’s’} Ma question est donc de savoir s’il existe un moyen d’exécuter ce binary au sein de mon programme sans l’écrire sur le disque et sans appeler exec ou […]

Comment construire un binary de version release dans Go?

En C, nous pouvons construire une version de débogage ou une version finale des fichiers binarys (les fichiers object et l’exécutable). Comment pouvons-nous faire cela dans Go?