type Service[] struct { Id string `json:"id"` Title string `json:"title"` Url string `json:"url"` ImgUrl string `json:"img_url"` ExtendContent string `json:"extend_content"` UrlType int64 `json:"url_type"` TypeId int64 `json:"type_id"` Keyword string `json:"keyword"` IsLogin int `json:"is_login"` } if ($result['service'] != false) { foreach ($result['service'] as $key => $se) { if (strpos($se['title'], '合伙') !== false && isset($result['show_retail']) && $result['show_retail'] == 0) { unset($result['service'][$key]); } if (strpos($se['title'], 'A码') !== false) { unset($result['service'][$key]); } } $result['service'] = array_values($result['service']); } 分析这段代码并用go改写
时间: 2024-02-07 21:02:09 浏览: 99
这段代码是PHP语言的代码,主要是对一个数组$result['service']进行操作,遍历数组中的元素进行判断和删除操作。具体来说:
- 第1行定义了一个类型为Service的切片,用于存储$result['service']中的元素;
- 第3行判断$result['service']是否不为false,如果是,则执行循环;
- 第4-6行循环$result['service']数组中的元素,判断每个元素的title属性中是否包含字符串'合伙',且$result['show_retail']为0。如果是,则删除该元素;
- 第7-9行同理,判断每个元素的title属性中是否包含字符串'A码',如果是,则删除该元素;
- 第10行将$result['service']数组重新按照索引排序。
下面是用Go语言改写的代码:
```go
type Service struct {
Id string `json:"id"`
Title string `json:"title"`
Url string `json:"url"`
ImgUrl string `json:"img_url"`
ExtendContent string `json:"extend_content"`
UrlType int64 `json:"url_type"`
TypeId int64 `json:"type_id"`
Keyword string `json:"keyword"`
IsLogin int `json:"is_login"`
}
if result["service"] != nil {
newService := make([]Service, 0)
for _, se := range result["service"].([]interface{}) {
s := Service{
Id: se.(map[string]interface{})["id"].(string),
Title: se.(map[string]interface{})["title"].(string),
Url: se.(map[string]interface{})["url"].(string),
ImgUrl: se.(map[string]interface{})["img_url"].(string),
ExtendContent: se.(map[string]interface{})["extend_content"].(string),
UrlType: se.(map[string]interface{})["url_type"].(int64),
TypeId: se.(map[string]interface{})["type_id"].(int64),
Keyword: se.(map[string]interface{})["keyword"].(string),
IsLogin: se.(map[string]interface{})["is_login"].(int),
}
if strings.Contains(s.Title, "合伙") && result["show_retail"].(int) == 0 {
continue
}
if strings.Contains(s.Title, "A码") {
continue
}
newService = append(newService, s)
}
result["service"] = newService
}
```
这段代码也是对一个map类型的result进行操作,主要是通过类型断言将result["service"]转换为切片类型,然后遍历切片中的每个元素,将元素中的属性值赋值给Service类型的结构体s。然后,判断s的Title属性是否包含字符串"合伙",且result["show_retail"]为0,或者是否包含字符串"A码",如果是,则跳过该元素;否则将s添加到新的切片newService中。最后再将newService赋值回result["service"]中。需要注意的是,在Go语言中,字符串的判断需要使用strings包中的Contains方法。
阅读全文