亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

go中的int和C.int有什么區別?

go中的int和C.int有什么區別?

Go
呼啦一陣風 2022-01-04 10:02:02
import "C"func f() {  var vGo int  var vC  C.int  // fails to compile with error  // cannot use &vGo (type *int) as type *C.int in argument to...  C.c_function(&vGo)    // compiles just fine:  C.c_function(&vC)}我用 CGO_ENABLED=1 GOARCH=arm 編譯...在這種情況下 int 和 C.int 類型有什么不同?在哪里可以找到有關 GO 中 C 類型的其他信息?
查看完整描述

2 回答

?
RISEBY

TA貢獻1856條經驗 獲得超5個贊

類型之間有什么區別?這取決于。如果您使用的是 64 位,則 Go int 將是 64 位,而 C int 將是 32。如果您使用的是 32 位,則沒有真正的區別。

在哪里可以找到有關 Go 中 C 類型的其他信息?查看 C 的文檔。如評論中所述,Go 中不允許隱式數字類型轉換,因此需要進行轉換。


查看完整回答
反對 回復 2022-01-04
?
天涯盡頭無女友

TA貢獻1831條經驗 獲得超9個贊

Go 故意不支持隱式類型轉換,但有一些例外1

在以下任一情況下,值 x 可分配給 T 類型的變量(“x 可分配給 T”):

  • x 的類型與 T 相同。

  • x 的類型 V 和 T 具有相同的基礎類型,并且 V 或 T 中至少有一個不是命名類型。

  • T 是一個接口類型,x 實現了 T。

  • x 是雙向通道值,T 是通道類型,x 的類型 V 和 T 具有相同的元素類型,并且 V 或 T 中至少有一個不是命名類型。

  • x 是預先聲明的標識符 nil 并且 T 是指針、函數、切片、映射、通道或接口類型。

  • x 是一個無類型常量,可以用 T 類型的值表示。

您的情況需要進行轉換以匹配可能不同的內存布局2。


查看完整回答
反對 回復 2022-01-04
  • 2 回答
  • 0 關注
  • 424 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號