Go語言中反射的正確使用

2022-09-24 21:06:11 字數 851 閱讀 6690

介紹

反射是元資料程式設計的一種形式,指的是程式獲得本身結構的一種能力。不同語言的反射模型實現不一樣,本文中的反射,僅僅指的是go語言中的反射模型。

反射有兩個問題,在使用前需要三思:

go的型別設計上有一些基本原則,理解這些基本原則會有助於你理解反射的本質:

多說無用,下面來看示例**

複製** **如下:

package main

import (

"fmt"

"reflect") 

type t struct

func main()

tt := reflect.typeof(t)

fmt.priifpkczygntf("t type:%v\n", tt)

ttp := reflect.typeof(&t)

程式設計客棧;  fmt.printf("t type:%v\n", ttp)

// 要設定t的值,需要傳入t的位址,而不是t的拷貝。

// reflect.valueof(&t)只是乙個位址的值,不是settable, 通過.elem()解引用獲取t本身的reflect.value

s := reflect.valueof(&t).elem()

typeoft := s.type()

for i := 0; i < s.numfield(); i++ } 

// 輸出結果

// t type:main.程式設計客棧t

// t type:*main.t

// 0: a int = 23

// 1: b string = skidoo

總結本文標題: go語言中反射的正確使用

本文位址:

go語言中反射機理詳解

package main import fmt reflect type user struct type manager struct func main title 123 t reflect.typeof m fmt.printf v n t.field 0 號會將reflect的struct...

在 Go 語言中,正確的使用併發

glyph lefkowitz最近寫了一篇 啟蒙文章 其中他詳細的說明了一些關於開發高併發軟體的挑戰,如果你開發軟體但是沒有閱讀這篇問題,那麼我建議你閱讀一篇。這是一篇非常好的文章,現代軟體工程應該擁有的豐富智慧型。從多個花絮中提取,但是如果我斗膽提出主要觀點的總結,其內容就是 搶占式多工和一般共享...

Go語言中defer的使用

func print a int func add a,b int int fmt.println add 4,3 上面這段 defer語句輸出的是4,add返回的值是7。defer可以用於檔案的開啟和關閉,鎖的開啟和關閉。package ioutil func readfile filename ...