久久国产乱子伦精品免费M,亚洲一区二区三区91,欧美国产在线视频,国产精品视频久久

Go 語言中的反射

反射是在 java 出現后迅速流行起來的一種概念,通過反射可以獲取豐富的類型信息,并可以利用這些類型信息做非常靈活的工作。大多數現代的高級語言都以各種形式支持反射功能,反射是把雙刃劍,功能強大但代碼可讀性并不理想,若非必要并不推薦使用反射。本文就來介紹一下反射在 Go 語言中的基本使用方法

 

1. 通過反射獲取類型

在 Go 語言中提供反射的包為?reflect 包,其中reflect.Type()函數可以獲取一個變量的類型。

代碼示例:

代碼塊
  • 1? package main
  • 2
  • 3? import (
  • 4? ? ? ? ? "fmt"
  • 5? ? ? ? ? "reflect"
  • 6? )
  • 7
  • 8? func main() {
  • 9? ? ? ? ? test := 10
  • 10? ? ? ? typeOfTest := reflect.TypeOf(test)
  • 11? ? ? ? fmt.Println("變量test的類型:", typeOfTest)
  • 12? }
  • 第 9 行:定義一個值為10的變量;
  • 第 10 行:通過反射獲取變量的類型。

執行結果:

圖片描述

 

2. 通過反射獲取值

其中?reflect.ValueOf()?函數可以獲取一個變量的值。

代碼示例:

代碼塊
  • 1? package main
  • 2
  • 3? import (
  • 4? ? ? ? ? "fmt"
  • 5? ? ? ? ? "reflect"
  • 6? )
  • 7
  • 8? func main() {
  • 9? ? ? ? ? test := 10
  • 10? ? ? ? ValueOfTest := reflect.ValueOf(test)
  • 11? ? ? ? fmt.Println("變量test的值:", ValueOfTest)
  • 12? }
  • 第 9 行:定義一個值為 10 的變量;
  • 第 10 行:通過反射獲取變量的值。

執行結果:

圖片描述

 

3. 通過反射修改變量值

上文中我們了解了兩個反射中常用的函數,接下來,我們來學習下如何使用反射來進行一些靈活的操作,比如修改變量的值。

代碼示例:

代碼塊
  • 1? package main
  • 2
  • 3? import (
  • 4? ? ? ? ? "fmt"
  • 5? ? ? ? ? "reflect"
  • 6? )
  • 7
  • 8? func main() {
  • 9? ? ? ? ? test := 10
  • 10? ? ? ? //獲取test變量的地址
  • 11? ? ? ? ValueOfTestAddr := reflect.ValueOf(&test)
  • 12? ? ? ? //獲取地址存放的值
  • 13? ? ? ? ValueOfTest := ValueOfTestAddr.Elem()
  • 14? ? ? ? //修改這個值
  • 15? ? ? ? ValueOfTest.SetInt(100)
  • 16? ? ? ? fmt.Println("變量test的值:", test)
  • 17? }

執行結果:

圖片描述

使用上述操作,我們就可以在一些情況下操作其它包中的私有變量,這種操作是十分危險的,所以如非必要盡量不要使用。

 

4. 小結

本文主要是簡單的介紹了以下 Go 語言中的反射的用法。雖然反射的功能強大,但是由于使用的風險比較高,而且對程序的設計會有破壞,所以建議非必要盡量就不要使用了。反射是在 java 出現后迅速流行起來的一種概念,通過反射可以獲取豐富的類型信息,并可以利用這些類型信息做非常靈活的工作。大多數現代的高級語言都以各種形式支持反射功能,反射是把雙刃劍,功能強大但代碼可讀性并不理想,若非必要并不推薦使用反射。

文章來源于網絡,侵刪!

相關新聞

歷經多年發展,已成為國內好評如潮的Linux云計算運維、SRE、Devops、網絡安全、云原生、Go、Python開發專業人才培訓機構!

    1. 主站蜘蛛池模板: 三原县| 洪泽县| 长子县| 夏邑县| 景宁| 汝阳县| 德州市| 古浪县| 宜都市| 紫云| 芦溪县| 奉节县| 工布江达县| 维西| 和顺县| 徐汇区| 泰和县| 舒城县| 高安市| 新民市| 鄂伦春自治旗| 清原| 博白县| 绍兴市| 鲜城| 天全县| 团风县| 原平市| 神木县| 天镇县| 大埔县| 尚志市| 社会| 治县。| 武功县| 寿阳县| 江城| 福贡县| 琼海市| 青田县| 巴马|