2015-04-22 3 views
0

У меня есть код на С, которые выглядят как this-как изменить символ * Пойти эквивалент

*((Oid *) ((char *)(tup) 

где Oid является тип uint32 и стро является структурой. Я хочу преобразовать его в lang. Я расшифровал структуру, но не смог понять, как преобразовать вышеприведенную строку в lang.

+2

Транслейтинг между языками * требует * зная, как старый и новый язык хорошо, а как вещь перевод. Обычно вы должны переводить/порт выше уровня выписки. В любом случае, либо вы знаете, что делает C (в этом случае он должен быть легким для порта), либо нет, и в этом случае вы не должны пытаться его перенести. –

+0

Я рекомендую прочитать это сообщение в блоге https://blog.golang.org/strings, потому что это место, где Go не очень похоже на C imo. – evanmcdonnal

+0

Спасибо @DaveC, я согласен с вами в определенной степени, но если я не буду пытаться, как я узнаю. Кроме того, я смог передать большинство из них, и это последнее, что мне нужно сделать. Я не мастер на обоих и не схожу, но имею способность читать и понимать и писать что-то новое (с go). – Varun

ответ

0

Go, эквивалентный литью указателя C, преобразует указатель в unsafe.Pointer, который затем может быть преобразован в указатель любого типа, который вы хотите.

Если tup является указателем на структуру в C, вы можете преобразовать его к *uint32 как так:

u := (*uint32)(unsafe.Pointer(C.tup)) 
+0

Спасибо @JimB, позвольте мне попробовать. – Varun