go マップ[文字列]任意の转マップ[文字列]文字列

目次

1.map[string]anyパラメータはmap[string]stringに変換されます。 

2. Go リクエスト パラメーター バインディング ジン フレームワークの例

3. Goでインターフェースを実装する

4. 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
}

おすすめ

転載: blog.csdn.net/haohaounique/article/details/131814235
おすすめ