iT邦幫忙

2023 iThome 鐵人賽

DAY 25
0

花木蘭回家後,穿回了她的女裝,這些代表了她過去的生活,以及她的家庭和傳統價值觀。當她站在湖邊,看著湖面的倒影時,她看到了一個熟悉的、但又有些陌生的自己。湖水平靜的倒影像是時間的瞬間凝結,也是花木蘭自己內心掙扎的一個映射。湖影裡的自己讓她明白,她擁有多重身份,每一個都是她獨特而珍貴的一部分。

你可以有不同的背景,可以有各種身份,這些都不影響你對未來的規劃與選擇,更不阻礙你學習 Golang (XD有點硬扯)。

什麼是reflect?

反射是一種在運行時 檢查變數類型 以及 操作 的能力。允許在不知道變數類型的情況下,動態檢查和操作變數。雖然有時候很好用,但同時也可能導致程式碼的複雜性增加。

假設你有一個變數,但你不確定它的確切型別或內容,反射允許你在程式運行時查看這個變數的型別,然後根據這個型別來執行相應的操作。這對於處理各種不同型別的資料、設定檔或者動態載入模組非常有用。

reflect 的用途

反射的主要用途之一是 處理不同類型的數據。舉例來說,如果你需要從一個通用的數據源(如JSON或XML)中解析數據,這些數據可能具有不同的結構和類型,反射就能派上用場。能夠動態處理這些數據,而不需要為每種可能的數據結構編寫專用的解析代碼。

另一個用途是在運行時動態創建、訪問和修改對象的屬性。這對於許多庫、框架和工具來說很重要,因為它們需要操作未知結構的數據。

舉例:
使用reflect包中的 TypeOfValueOf 函數來獲取變數x的類型和值。在不知道x的具體類型的情況下進行操作。

package main

import (
	"fmt"
	"reflect"
)

func main() {
	x := 42
	t := reflect.TypeOf(x)
	v := reflect.ValueOf(x)

	fmt.Printf("Type: %s\n", t)
	fmt.Printf("Value: %v\n", v)
}

反射操作通常比直接訪問變數的效率要低。如果效率對應用程式很重要,應該避免一些不必要的反射操作。
由於Go是一個靜態類型語言,使用反射時,需要小心處理類型轉換和類型斷言,以避免運行時的錯誤。而其程式碼通常比直接的、靜態程式碼難以閱讀和維護。

碎語

標題名想法來自花木蘭的主體曲 reflection,跟內文並沒有什麼關係,就只有名字相向而已XD
小時候看花木蘭,印象最深刻的是她回到老家穿回女裝,在一旁的湖裡看著自己的倒影,好像迷失自我,但又不想辜負父母期待,小時候看不懂,長大好像才稍稍明白。
就像非本科背景,想往軟體工程的方向走,一定要花更多的時間還有努力,但能成功嗎?只有自己知道。

祝福轉職路上的大家,選定目標,好好堅持,期許開花結果!


上一篇
24 | Test, one two three...
下一篇
26 | Redis 遠端資料庫
系列文
Go 語言學習手札30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言