Goが最近踏んだピットを書く|ログ、結束と再利用、gjson、メンタリティ調整

創造を続け、成長を加速させましょう!「ナゲッツデイリーニュープラン・6月アップデートチャレンジ」に参加して7日目です。クリックしてイベントの詳細をご覧ください。

今日、私は最近遭遇したピットを共有します:

次のコード例では、GoFrameフレームワーク(以降、gfフレームワークと呼びます)を使用します。

統合ログ形式

以前にPHPを開発していたか、現在GOを開発していたかにかかわらず、開発プロセス中にデバッグ用のデータを出力するためにdump()を使用することに慣れています。

ローカルデバッグはすばらしいものですが、テスト環境や開発環境でさえログが見つからず、問題を簡単に特定できない場合はばかげています。

したがって、重要なステップのログを印刷する良い習慣を身に付け、ログ形式を統一する必要があります。

栗を取る

ログを印刷する

scm.Log.Info("测试的日志都打印在这里,res:%v", res)
复制代码

印刷ログをカプセル化する方法

ログ印刷ディレクトリを指定します

var Log = g.Log().Path(g.Log().GetPath() + "/scm")
复制代码

gfが提供するg.logと、独自のカプセル化により、ログは機能モジュールによって区別できます。これは、問題の特定に便利です。

結束と再利用

gfフレームワークには、内部、つまり内部呼び出しのみを許可するメソッドという設計があります。

著者は、一方ではセキュリティを考慮し、他方では高い凝集度を考慮して内部を設計したと思います。

ただし、あまりまとまりがないようにしてください。今日私が遭遇した問題は、コードの再利用をより適切に実装する方法です。

したがって、共有されているパブリックメソッドディレクトリがプロジェクトから抽出され、元々内部で記述されていた再利用可能なロジックが移行されます。

gjson

今日、非常に便利なツールクラスを見つけました:gjson

gjsonは、json / xml / toml /およびその他のファイルまたはファイルのコンテンツを読み取り、オブジェクトを作成し、getメソッドを介してオブジェクトに対応する値を取得できます。

package main

import (
   "fmt"
   "github.com/gogf/gf/encoding/gjson"
)

func main() {
   jsonContent := `{"k5":1}`
   jsonObj, err := gjson.LoadContent(jsonContent)
   if err != nil {
      panic(err)
   }
   fmt.Println(jsonObj.Get("k5"))
}
复制代码

結果を印刷

image.png

落ち着け

最近、とても恥ずかしい問題を解決していて、落ち着くことができず、どんな小さな問題を起こさなければならないかを常に考え、迅速に問題を解決することを常に考えています。しかし、このような問題の迅速な解決策を模索することで、問題は表面に残り、根本的に問題を解決するのではなく、進行を引きずり、進行をどんどん遅くしていきます。

要約する

驚くほど重い作業負荷で、異常に疲れ果てた一日が終わりました。

遠くからの友達、あなたは私と同じくらい疲れていますか?

再び成長したお腹を見てください。仕事やブログに加えて、運動も始めるべきです。

やっと

読んでくれてありがとう、そしてみんなを歓迎します:いいね、お気に入り、コイン(焦点を合わせる)!

8e95dac1fd0b2b1ff51c08757667c47a.gif

おすすめ

転載: juejin.im/post/7103887534299545613