C veri türleri
- Go kursu
- İleri seviye
- Ders 15/68
- 4 dk
C.int, C.char gibi türleri öğrenirsin.
C veri türleri
C türleri Go'da C.int, C.long, C.double, C.char gibi adlarla görünür. Bunlar Go'nun int veya float64 türleriyle aynı değildir; açık dönüşüm gerekir.
var a C.int = 5
b := int(a) * 2 // C.int → int
c := C.double(1.5) // float64 → C.doubleBoyutlar platforma göre değişebilir: C.long Linux'ta 8, Windows'ta 4 bayttır.
Struct ve enum
C'deki struct nokta Go'da C.struct_nokta olarak kullanılır; alanlarına doğrudan erişirsin. enum sabitleri de C.AD biçiminde gelir.
/*
struct nokta { int x; int y; };
*/
import "C"
var p C.struct_nokta
p.x = 3Uygulama Tür dönüşümü
Önsözde double yarim(double x) { return x / 2; } tanımla. v := 9.0 değerini C.double'a çevirip fonksiyona ver, sonucu float64'e çevirip yazdır.
Başlangıç kodu
package main
/*
// C kodu buraya
*/
import "C"
import "fmt"
func main() {
// buraya yaz
}Örnek çözüm
package main
/*
double yarim(double x) { return x / 2; }
*/
import "C"
import "fmt"
func main() {
v := 9.0
r := float64(C.yarim(C.double(v)))
fmt.Println(r)
}Beklenen çıktı
4.5
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 C fonksiyonu <code>double</code> döndürüyorsa Go tarafında nasıl <code>float64</code> elde edersin?
- C.float64(C.f())
- float64(C.f()) Doğru cevap
- C.f().(float64)
- Dönüşüm gerekmez
Açıklama: C.double ayrı bir türdür; Go tarafında kullanmak için float64(...) ile açıkça dönüştürülür.
2 C türüne dönüştür
x := 10
r := C.kare(C.____(x))
x := 10
r := C.kare(C.int(x))
Açıklama: Go int değeri C fonksiyonuna verilmeden önce C.int'e dönüştürülür.
3 C ve Go türleri
| Kavram | Anlamı |
|---|---|
C.int |
int32 boyutunda |
C.double |
float64 karşılığı |
C.char |
Tek bayt |
C.struct_nokta |
C struct'ı |