| // compile | |
| // Copyright 2023 The Go Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style | |
| // license that can be found in the LICENSE file. | |
| package main | |
| type explainer struct { | |
| m map[string]string | |
| } | |
| func init() { | |
| RegisterExplainer(newExplainer()) | |
| } | |
| type Explainer interface { | |
| Name() string | |
| Map() map[string]string | |
| } | |
| func (e explainer) Name() string { | |
| return "HelloWorldExplainer" | |
| } | |
| func (e explainer) Map() map[string]string { | |
| return e.m | |
| } | |
| //go:noinline | |
| func newExplainer() explainer { | |
| m := make(map[string]string) | |
| m["Hello"] = "World!" | |
| return explainer{m} | |
| } | |
| var explainers = make(map[string]Explainer) | |
| func RegisterExplainer(e Explainer) { | |
| explainers[e.Name()] = e | |
| } | |
| func main() { | |
| } |