目次
1.map[string]anyパラメータはmap[string]stringに変換されます。
2. Go リクエスト パラメーター バインディング ジン フレームワークの例
1.map[string]anyパラメータはmap[string]stringに変換されます。
シナリオ: go では、map[string]any パラメーターが map[string]string に変換されます。
その中にソースコードが入ると、それは Java の Object? に似たインターフェイス データ型になります。{}
通常はJavaと異なりString.valueOfの汎用変換メソッドが存在しますが、ここではfmtパッケージ配下のメソッドを使用します。
func MMPToString(mmp map[string]any) map[string]string {
mpp := make(map[string]string, len(mmp))
for k, v := range mmp {
mpp[k] = fmt.Sprintf("%v", v)
}
return mpp
}
2. Go リクエスト パラメーター バインディング ジン フレームワークの例
オブジェクトをバインドするだけです (Java でのオブジェクトの作成には new が使用されます。ここでは直接変数宣言でオブジェクトを作成します)。
func GetServiceConfigList(c *gin.Context) {
var request model.Request
c.Bind(&request)
fmt.Println(xutils.JSONToString(request))
}
utils包下的方法
func JSONToString(value any) string {
b, _ := json.Marshal(value)
return string(b)
}
// 传递指针类型数据
func JSONtoObject(value string, obj any) error {
err := json.Unmarshal([]byte(value), obj)
return err
}
3. Goでインターフェースを実装する
go のメソッド実装は Java とは異なります。go の実装メソッドは、implements キーワードがなく、インターフェイス内のメソッドのみを実装できます。
//接口定义
type ICheckService interface {
Check() bool
}
//定义实现类并实现接口方法,完成
type EmptyCheckService struct {
}
func (service *EmptyCheckService) Check() bool {
fmt.Println("EmptyCheckService......")
return false
}
4. Goにおけるデザインパターン戦略パターンの実現
//定义全局变量
var CheckServiceMap = map[string]ICheckService{
CheckServiceMap["emptyCheckService"] = &EmptyCheckService{}
// 其他实现
}
//方法中调用
CheckServiceMap["emptyCheckService"].Check()
//接口定义
type ICheckService interface {
Check() bool
}
//定义实现类并实现接口方法,完成
type EmptyCheckService struct {
}
func (service *EmptyCheckService) Check() bool {
fmt.Println("EmptyCheckService......")
return false
}