golang查询省市

发布时间:2024-12-23 03:47:42

Go语言查询省市的实现方法

在开发实践中,我们经常需要查询省市信息。使用Go语言编写代码来查询省市信息是一种简单且方便的方法。本文将介绍如何使用Go语言实现这样的功能。

1. 导入需要的库

首先,我们需要导入需要的库。在Go语言中,我们可以使用 encoding/jsonioutil 分别来解析JSON数据和读取文件内容。我们还需要一个结构体来存储省市数据。

```go package main import ( "encoding/json" "io/ioutil" ) ```

2. 读取省市数据

接下来,我们需要通过读取一个JSON文件来获取省市数据。我们可以将这个文件放在项目的根目录下,并命名为 "city.json"。

```go func readCityData() ([]byte, error) { file, err := ioutil.ReadFile("city.json") if err != nil { return nil, err } return file, nil } ```

3. 解析省市数据

读取文件后,我们需要解析JSON数据并将其存储在一个结构体中。假设JSON数据的格式如下:

```json [ {"province": "北京市", "city": "北京市"}, {"province": "上海市", "city": "上海市"}, ... ] ```

我们可以定义一个结构体来存储每个省市的名称:

```go type City struct { Province string `json:"province"` City string `json:"city"` } ```

然后,我们可以将JSON数据解析到一个切片中:

```go func parseCityData(file []byte) ([]City, error) { var cities []City err := json.Unmarshal(file, &cities) if err != nil { return nil, err } return cities, nil } ```

4. 查询省市信息

现在,我们已经成功地读取和解析了省市数据。接下来,我们可以为用户提供一个函数来查询特定省份或城市。

```go func searchCity(cities []City, keyword string) []City { var result []City for _, city := range cities { if strings.Contains(city.Province, keyword) || strings.Contains(city.City, keyword) { result = append(result, city) } } return result } ```

5. 完整示例代码

这里是一个完整的示例代码,演示了如何使用以上的功能来查询省市信息:

```go package main import ( "encoding/json" "fmt" "io/ioutil" "strings" ) type City struct { Province string `json:"province"` City string `json:"city"` } func readCityData() ([]byte, error) { file, err := ioutil.ReadFile("city.json") if err != nil { return nil, err } return file, nil } func parseCityData(file []byte) ([]City, error) { var cities []City err := json.Unmarshal(file, &cities) if err != nil { return nil, err } return cities, nil } func searchCity(cities []City, keyword string) []City { var result []City for _, city := range cities { if strings.Contains(city.Province, keyword) || strings.Contains(city.City, keyword) { result = append(result, city) } } return result } func main() { file, err := readCityData() if err != nil { fmt.Println("Failed to read city data:", err) return } cities, err := parseCityData(file) if err != nil { fmt.Println("Failed to parse city data:", err) return } result := searchCity(cities, "北京") fmt.Println("Search result:") for _, city := range result { fmt.Printf("%s, %s\n", city.Province, city.City) } } ```

6. 运行结果

以上代码执行结果如下:

``` Search result: 北京市, 北京市 ```

这表示查询关键字为 "北京" 的省市信息成功,并返回了符合条件的结果。

总结

通过本文,我们了解了如何使用Go语言来实现查询省市信息的功能。首先,我们导入需要的库;然后,读取并解析省市数据;接着,为用户提供了一个功能来查询特定省份或城市;最后,我们演示了一个完整的示例代码,并展示了查询结果。

希望这篇文章对正在学习和使用Go语言的开发者有所帮助!

相关推荐