transformArray generates Go code to transform source array to target array.
(source, target *expr.Array, sourceVar, targetVar string, newVar bool, ta *TransformAttrs)
| 385 | |
| 386 | // transformArray generates Go code to transform source array to target array. |
| 387 | func transformArray(source, target *expr.Array, sourceVar, targetVar string, newVar bool, ta *TransformAttrs) (string, error) { |
| 388 | if err := IsCompatible(source.ElemType.Type, target.ElemType.Type, sourceVar+"[0]", targetVar+"[0]"); err != nil { |
| 389 | return "", err |
| 390 | } |
| 391 | data := map[string]any{ |
| 392 | "ElemTypeRef": ta.TargetCtx.Scope.Ref(target.ElemType, ta.TargetCtx.Pkg(target.ElemType)), |
| 393 | "SourceElem": source.ElemType, |
| 394 | "TargetElem": target.ElemType, |
| 395 | "SourceVar": sourceVar, |
| 396 | "TargetVar": targetVar, |
| 397 | "NewVar": newVar, |
| 398 | "TransformAttrs": ta, |
| 399 | "LoopVar": string(rune(105 + strings.Count(targetVar, "["))), |
| 400 | "IsStruct": expr.IsObject(target.ElemType.Type), |
| 401 | } |
| 402 | var buf bytes.Buffer |
| 403 | if err := transformGoArrayT.Execute(&buf, data); err != nil { |
| 404 | return "", err |
| 405 | } |
| 406 | return buf.String(), nil |
| 407 | } |
| 408 | |
| 409 | // transformMap generates Go code to transform source map to target map. |
| 410 | func transformMap(source, target *expr.Map, sourceVar, targetVar string, newVar bool, ta *TransformAttrs) (string, error) { |