下面这个例子只有用泛型才简洁
package main
import "debug/pe"
func dump32(hdr *pe.OptionalHeader32) {
// 相同逻辑
}
func dump64(hdr *pe.OptionalHeader64) {
// 相同逻辑
}
func main() {
file,err := pe.Open("test.exe")
if err == nil {
hdr,ok := file.OptionalHeader.(*pe.OptionalHeader32)
if ok {
dump32(hdr)
} else {
hdr2 := file.OptionalHeader.(*pe.OptionalHeader64)
dump64(hdr2)
}
}
}