介紹
反射是元數(shù)據(jù)編程的一種形式,指的是程序獲得本身結(jié)構(gòu)的一種能力。不同語言的反射模型實(shí)現(xiàn)不一樣,本文中的反射,僅僅指的是Go語言中的反射模型。
反射有兩個問題,在使用前需要三思:
Go的類型設(shè)計上有一些基本原則,理解這些基本原則會有助于你理解反射的本質(zhì):
nil != nil
了。static type
和concrete type
. 簡單來說 static type
是你在編碼是看見的類型,concrete type
是runtime系統(tǒng)看見的類型。concrete type
,而不是static type
. 因此,一個 reader變量如果它的concrete type也實(shí)現(xiàn)了write方法的話,它也可以被類型斷言為writer.interface{}
作為橋梁,因此遵循原則3. 例如,反射包.Kind方法返回的是concrete type
, 而不是static type
.多說無用,下面來看示例代碼
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。
新聞熱點(diǎn)
疑難解答
圖片精選