第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

混淆函數(shù)參數(shù)中的指針、切片和接口{}

混淆函數(shù)參數(shù)中的指針、切片和接口{}

Go
Helenr 2023-03-29 15:20:36
我一直在閱讀有關(guān) Go 如何通過(guò)指針與值將參數(shù)傳遞給函數(shù)的信息。我一直在閱讀有關(guān)接口類型的信息。而且我一直在篡改反射包。但很明顯,由于這里的示例代碼,我仍然不明白它是如何工作的:package mainimport (  "reflect"  "fmt")type Business struct {  Name string}func DoSomething(b []Business) {  var i interface{}  i = &b  v := reflect.ValueOf(i).Elem()  for c:=0 ;c<10; c++ {    z := reflect.New(v.Type().Elem())    s := reflect.ValueOf(z.Interface()).Elem()    s.Field(0).SetString("Pizza Store "+ fmt.Sprintf("%v",c))    v.Set(reflect.Append(v, z.Elem()))  }  fmt.Println(b)}func main() {  business := []Business{}  DoSomething(business)}當(dāng)我運(yùn)行這段代碼時(shí),它將打印一個(gè)包含 10 個(gè)業(yè)務(wù)結(jié)構(gòu)的列表,其中 Business.Name 為 Pizza 0 到 9。我知道在我的示例中,我的函數(shù)收到了業(yè)務(wù)切片的DoSomething副本,因此,business變量在我的主要功能中,無(wú)論做什么,都不會(huì)受到影響DoSomething。我接下來(lái)要做的是將我的更改func DoSomething(b []Business)為func DoSomething(b interface{}). 現(xiàn)在,當(dāng)我嘗試運(yùn)行我的腳本時(shí),出現(xiàn)panic: reflect: Elem of invalid type on在線運(yùn)行時(shí)錯(cuò)誤z := reflect.New(v.Type().Elem())我注意到DoSomething(b []Business), 變量i == &[]. 但是隨著DoSomething(b interface{}),變量i == 0xc42000e1d0。i為什么在這兩種情況下變量不同?
查看完整描述

1 回答

?
手掌心

TA貢獻(xiàn)1942條經(jīng)驗(yàn) 獲得超3個(gè)贊

您的調(diào)試器很可能使用(或至少遵循)包的默認(rèn)格式設(shè)置規(guī)則fmt:


對(duì)于復(fù)合對(duì)象,使用這些規(guī)則遞歸打印元素,布局如下:


struct:             {field0 field1 ...}

array, slice:       [elem0 elem1 ...]

maps:               map[key1:value1 key2:value2 ...]

pointer to above:   &{}, &[], &map[]

在您的第一種情況下,i它的值是 type *[]Business。因此,如果要打印(或檢查)的值是指向切片的指針,則它會(huì)打印為&[values].


在你的第二種情況下,i持有一個(gè)指向一個(gè)值的指針interface{},它是 type *interface{}。打印這種類型的值時(shí),%p使用默認(rèn)格式,它只是將內(nèi)存地址打印為前綴為 . 的十六進(jìn)制值0x。


查看完整回答
反對(duì) 回復(fù) 2023-03-29
  • 1 回答
  • 0 關(guān)注
  • 150 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)