Source file
src/net/http/h2_error.go
1
2
3
4
5
6
7
8 package http
9
10 import (
11 "reflect"
12 )
13
14 func (e http2StreamError) As(target any) bool {
15 dst := reflect.ValueOf(target).Elem()
16 dstType := dst.Type()
17 if dstType.Kind() != reflect.Struct {
18 return false
19 }
20 src := reflect.ValueOf(e)
21 srcType := src.Type()
22 numField := srcType.NumField()
23 if dstType.NumField() != numField {
24 return false
25 }
26 for i := 0; i < numField; i++ {
27 sf := srcType.Field(i)
28 df := dstType.Field(i)
29 if sf.Name != df.Name || !sf.Type.ConvertibleTo(df.Type) {
30 return false
31 }
32 }
33 for i := 0; i < numField; i++ {
34 df := dst.Field(i)
35 df.Set(src.Field(i).Convert(df.Type()))
36 }
37 return true
38 }
39
View as plain text