近年、中国での Go 言語の人気に伴い、この言語を開発に使用するプログラマーが増えています。プログラマーである私も例外ではありません。この記事では、私の Go 言語プロジェクト開発の軌跡を共有します。
初心者向けの Go 言語
Go 言語を学ぶ前、私はすでにプログラミングの経験があり、Java、Python、その他の言語に堪能でした。しかし、初めて Go 言語に触れたとき、少し慣れないものを感じました。他の言語と比較して、Go 言語には次のような多くの独自の機能があります。
Go言語を学習し始めてからは、主に公式ドキュメントや「Go言語プログラミング」などの書籍を読んで学習しました。アドバイスに従って、簡単な演習から始めて、徐々に深く学習していきました。
開発プロジェクト
Go 言語の基本的な知識を習得した後、小さなプロジェクトの開発を開始しました。このプロジェクトの機能は、API インターフェイスから気象情報を取得し、コマンド ラインに出力することです。私たちはこのプロジェクトを GoWeather と名付けました。
まず、天気 API の戻りデータ形式を理解する必要があります。 API インターフェイス ドキュメントを表示すると、次のデータを取得できます。
{ "weatherinfo": { "city": "北京", "temp": "32℃", "WD": "东南风", "WS": "1级", "SD": "54%", "AP": "980hPa", "njd": "暂无实况", "time": "17:55", "sm": "3.3", "isRadar": "1", "Radar": "JC_RADAR_AZ9010_JB" } }
その後、コーディングを開始できます。まず、Weather 構造体を作成し、API 内のデータに対応するプロパティを定義する必要があります。
type Weather struct { City string `json:"city"` Temp string `json:"temp"` WD string `json:"WD"` WS string `json:"WS"` SD string `json:"SD"` AP string `json:"AP"` NJD string `json:"njd"` Time string `json:"time"` SM string `json:"sm"` IsRadar string `json:"isRadar"` Radar string `json:"Radar"` }
次に、天気データを取得し、それを Weather タイプに解析する関数を作成する必要があります。関数コードは次のとおりです。
func getWeather(city string) (*Weather, error) { resp, err := http.Get("http://www.weather.com.cn/data/cityinfo/" + city + ".html") if err != nil { return nil, err } defer resp.Body.Close() body, err := ioutil.ReadAll(resp.Body) if err != nil { return nil, err } var weatherData struct { WeatherInfo Weather `json:"weatherinfo"` } if err := json.Unmarshal(body, &weatherData); err != nil { return nil, err } return &weatherData.WeatherInfo, nil }
関数では、まず http.Get() メソッドを通じて API インターフェイスから返されたデータを取得し、それを変数に読み込みます。次に、json.Unmarshal() メソッドを通じて文字列を Weather タイプの構造に「解析」し、その構造を返します。
最後に、取得した気象情報を出力する必要があります。テストを容易にするために、最初はコマンド ラインにのみ出力し、後で気象情報をログ ファイルまたはデータベースに出力するように拡張できます。出力関数コードは次のとおりです。
func printWeather(w *Weather) { fmt.Printf("城市: %s ", w.City) fmt.Printf("温度: %s ", w.Temp) fmt.Printf("风向: %s ", w.WD) fmt.Printf("风力: %s ", w.WS) fmt.Printf("湿度: %s ", w.SD) fmt.Printf("气压: %s ", w.AP) fmt.Printf("时间: %s ", w.Time) }
Test
他の言語と同様、Go 言語も豊富なテスト フレームワークを提供しており、単体テストを簡単に実行できます。
上記のコードの記述が完了したら、簡単なテストを実施し、コードが正しいかどうかを確認するために次のテスト プログラムを実行する必要があります。
func TestWeather(t *testing.T) { city := "101010100" w, err := getWeather(city) if err != nil { t.Error(err) } else { printWeather(w) } }
テスト プログラムを実行すると、次のことがわかります。次の出力:
城市: 北京 温度: 32℃ 风向: 东南风 风力: 1级 湿度: 54% 气压: 980hPa 时间: 17:55
出力から、取得した気象情報が正しいことがわかります。
概要
この単純なプロジェクトを通じて、私は Go 言語についてより深く理解しました。実際の開発では、Go 言語の同時処理とメモリ管理により効率が向上し、より良いユーザー エクスペリエンスが得られました。これからも Go 言語を使い、勉強し続けることになると思います。
以上が私の Go 言語プロジェクト開発の旅の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。