2016-04-07 14 views

cevap

2

Türler arasındaki fark nedir? Değişir. Eğer 64bit üzerindeyseniz, Go int 64 bit olacaktır, C int 32 olacaktır. Eğer 32bit üzerinde iseniz, gerçek bir fark yoktur.

Git'de C türleri hakkında ek bilgi nereden bulabilirim? C için belgelere bakın. Yorumlarda belirtildiği gibi, Go'da örtülü sayısal tür dönüşümlerine izin verilmez, dolayısıyla bir dönüşüm gereklidir.

+1

Üzgünüz, ama ikinci kısım doğru değil. 'Int' mimariye bağlı olarak 64 veya 32 bit olabilir. https://golang.org/ref/spec#Numeric_types – jupp0r

+0

@ jupp0r Evet, dilimin belki de yeterince spesifik olmamasına rağmen "64bit üzerindeyseniz" ifadesini aktarmaya çalışıyordum. – evanmcdonnal

+0

İlgili fark, bunların 32 veya 64 bit olması, farklı türde olmaları ve Go'nun örtük sayısal tür dönüşümlerine izin vermemesidir. Türlerin aynı boyutta olup olmadığına bakılmaksızın aynı hatayı alacaksınız. – JimB

1

Git kasten bazı istisnalar dışında 1 ile örtülü tip dönüştürme desteklemez:

bir değeri x tipi T bir değişkene atanabilir olan bu durumlardan herhangi birinde ("x T atanabilir olan"):

  • x tip
  • x tip V ve T aynı temel türleri ve en az bir V birini ya da T adlandırılmış türü değil sahip T.
  • özdeştir.
  • T, bir arabirim türüdür ve x, T'nin bir çift yönlü kanal değeridir, T, bir kanal türüdür, x'in V tipi ve T, aynı öğe türlerine sahiptir ve V veya T'nin en az biri, bir arabirim türüdür. adlandırılmış tip.
  • x, önceden tanımlanmış tanımlayıcıdır nil ve T bir işaretçi, işlev, dilim, harita, kanal veya arabirim türüdür.
  • x durumunda potansiyel açıdan farklı bellek düzenleri 2 eşleştirmek için gerekli olan

tipi T bir değer ile Türlenmemiş sabit sunulabilen.

İlgili konular