reflect.TypeOf().numField()和reflect.ValueOf().numField()有什麼區別?
type People struct {
Name string
Age int
Addr string
}
func main() {
p := people{Name: "aaa"}
v := reflect.ValueOf(p)
t := reflect.TypeOf(p)
fmt.Println(v.NumField(), t.NumField()) // 3 3
}
這裡列印出來的值都是 3,新增或者刪除 People 的 field 這兩個值都是一樣的,難道這兩個的作用一模一樣嗎。 看了下原始碼
// NumField returns the number of fields in the struct v.
// It panics if v's Kind is not Struct.
func (v Value) NumField() int {
v.mustBe(Struct)
tt := (*structType)(unsafe.Pointer(v.typ))
return len(tt.fields)
}
// NumField returns a struct type's field count.
// It panics if the type's Kind is not Struct.
NumField() int
英文不好,但感覺這兩者還是有區別的,並且也沒有說明這兩者作用一樣,求解答。
更多原創文章乾貨分享,請關注公眾號
- 加微信實戰群請加微信(註明:實戰群):gocnio
相關文章
- reflect: NumField of non-struct type,這是怎麼回事?Struct
- *和body有什麼區別
- Cache 和 Buffer 有什麼區別?
- mongodb和mysql有什麼區別MongoDBMySql
- shim和polyfill有什麼區別
- float和double有什麼區別?
- int 和 Integer 有什麼區別
- cookie和session 有什麼區別?CookieSession
- session 和 cookie 有什麼區別?SessionCookie
- modbus和tcp有什麼區別?TCP
- Nginx和Apache有什麼區別?NginxApache
- COOKIE和SESSION有什麼區別?CookieSession
- RegisterClass和RegisterClassEx有什麼區別?
- for update 和 for update of 有什麼區別
- PEAR 和 PECL 有什麼區別?
- Activity和Fragment有什麼區別Fragment
- vue和react有什麼區別?VueReact
- Iterator和ListIterator有什麼區別
- Hifi和ONT 有什麼區別
- cookie是什麼?和session有什麼區別?CookieSession
- IPFS和區塊鏈有什麼區別區塊鏈
- Java和Python是什麼?有什麼區別?JavaPython
- RPA和IPA有什麼區別
- Jsp和Servlet有什麼區別?JSServlet
- HTTP和HTTPS有什麼區別?HTTP
- VPS和HTTP有什麼區別?HTTP
- 命令和事件有什麼區別? - Oskar事件
- c++中&和&&有什麼區別C++
- DAO和Repository有什麼區別
- 青蛙和癩蛤蟆有什麼區別
- maven </dependencies>和</dependencyManagement> 有什麼區別Maven
- JMS和AMQP有什麼區別嗎MQ
- 什麼是報表工具?和 EXCEL 有什麼區別?Excel
- Java 介面和抽象類是什麼,有什麼區別Java抽象
- 什麼是 MicroPython?和CPython有什麼區別?Python
- 什麼是SCRM系統?和CRM有什麼區別?
- png是什麼格式 png和jpg有什麼區別
- xpgu是什麼 xgpu和xgp有什麼區別GPU