一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語(yǔ)言編程技術(shù)及教程分享平臺(tái)!
分類導(dǎo)航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務(wù)器之家 - 腳本之家 - Golang - golang實(shí)現(xiàn)PHP數(shù)組特性的方法

golang實(shí)現(xiàn)PHP數(shù)組特性的方法

2022-01-26 11:26萬(wàn)般皆下品惟有讀書高 Golang

我們做業(yè)務(wù)過(guò)程中,對(duì)應(yīng)強(qiáng)類型語(yǔ)言使用有個(gè)痛點(diǎn),就是使用變量之前一定要定義變量類型,那么本文就來(lái)介紹一下golang實(shí)現(xiàn)PHP數(shù)組特性的方法

前言

我們做業(yè)務(wù)過(guò)程中,對(duì)應(yīng)強(qiáng)類型語(yǔ)言使用有個(gè)痛點(diǎn),就是使用變量之前一定要定義變量類型,比如c,c++,golang等,弱類型語(yǔ)言擇不需要,可以直接讀寫,比如php。下面通過(guò)php和golang語(yǔ)言舉例說(shuō)明,對(duì)于強(qiáng)弱類型語(yǔ)言變量類型的使用情況,并提出自己的解決方案databox。

內(nèi)容

復(fù)雜結(jié)構(gòu)處理

1. php 處理復(fù)雜結(jié)構(gòu)

1.1 讀取值

?
1
2
3
4
5
6
7
8
9
<?php
$country = [
    "china"=>[
            "陜西"=>["西安市","寶雞市","渭南市"],
            "北京"=>["朝陽(yáng)區(qū)","海淀區(qū)","通州區(qū)"]
    ],
];
 
print_r($country["china"]["陜西"][0]);

打印結(jié)果
西安市

1.2 寫入值

?
1
2
3
4
5
6
7
8
9
10
11
<?php
$country = [
    "china"=>[
        "陜西"=>["西安市","寶雞市","渭南市"],
        "北京"=>["朝陽(yáng)區(qū)","海淀區(qū)","通州區(qū)"]
    ],
];
 
$country["美國(guó)"]["紐約州"][0] = "紐約";
 
var_dump($country);

打印結(jié)果
array(3) {
  ["china"]=>
  array(2) {
    ["陜西"]=>
    array(3) {
      [0]=>
      string(9) "西安市"
      [1]=>
      string(9) "寶雞市"
      [2]=>
      string(9) "渭南市"
    }
    ["北京"]=>
    array(3) {
      [0]=>
      string(9) "朝陽(yáng)區(qū)"
      [1]=>
      string(9) "海淀區(qū)"
      [2]=>
      string(9) "通州區(qū)"
    }
  }
  ["america"]=>
  array(0) {
  }
  ["美國(guó)"]=>
  array(1) {
    ["紐約州"]=>
    array(1) {
      [0]=>
      string(6) "紐約"
    }
  }
}

說(shuō)明

  • php操作數(shù)組的時(shí)候,不需要考慮對(duì)應(yīng)的下標(biāo)值是否存在,可以直接使用。

2. golang 處理復(fù)雜結(jié)構(gòu)

2.1 讀取值

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package main
 
import "fmt"
 
func main() {
   country := map[string]interface{}{
      "china": map[string]interface{}{
         "陜西": []interface{}{"西安市", "寶雞市", "渭南市"},
         "寶雞": []interface{}{"朝陽(yáng)區(qū)", "海淀區(qū)", "通州區(qū)"},
      },
   }
 
   china := country["china"] //第一步
   shanxi := china.(map[string]interface{})["陜西"] //第二步
   xian := shanxi.([]interface{}) //第三步
   fmt.Println(xian[0])
}

打印結(jié)果
西安市

分三步

  • 第一步 創(chuàng)建變量china 值為country變量key為“china”對(duì)應(yīng)的值
  • 第二步 創(chuàng)建變量shanxi 只對(duì)china變量key為“陜西”對(duì)應(yīng)的值,其中對(duì)于china使用了斷言
  • 第三步 創(chuàng)建xian 變量,取值為shanxi對(duì)于下標(biāo)為0的值,其中對(duì)于shanxi使用了斷言

因?yàn)閷?duì)象有三層,所以用了三步,每次取一層數(shù)據(jù),然后斷言在取第二層數(shù)據(jù),接著又?jǐn)嘌?,同理如果?duì)象有N層,獲取N層的值,需要N步。
2.2 寫入值

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package main
 
import "fmt"
 
func main() {
   country := map[string]interface{}{
      "中國(guó)": map[string]interface{}{
         "陜西": []interface{}{"西安市", "寶雞市", "渭南市"},
         "寶雞": []interface{}{"朝陽(yáng)區(qū)", "海淀區(qū)", "通州區(qū)"},
      },
   }
 
   city := []interface{}{"紐約"} //第一步
   province := map[string]interface{}{"紐約州": city} //第二步
   country["美國(guó)"] = province //第三步
   fmt.Println(country)
}

打印結(jié)果
map[中國(guó):map[寶雞:[朝陽(yáng)區(qū) 海淀區(qū) 通州區(qū)] 陜西:[西安市 寶雞市 渭南市]] 美國(guó):map[紐約州:[紐約]]]

說(shuō)明 需要在country下寫入美國(guó),紐約州,下面為紐約的數(shù)據(jù)。
分三步

  • 第一步 先創(chuàng)建紐city數(shù)組,第一個(gè)索引對(duì)應(yīng)為“紐約”
  • 第二步 創(chuàng)建province map對(duì)象,元素為key為“紐約州”值為city數(shù)組
  • 第三步 將country 寫入key“美國(guó)”,值為province 對(duì)象

因?yàn)橐獙懭氲臄?shù)據(jù)處在第三層,所有需要三步,才能賦值完成,如果對(duì)象為N層,需要在N層寫入數(shù)據(jù),所有需要N步

3. dataBox 復(fù)雜結(jié)構(gòu)處理

  • api層:提供初始化函數(shù)NewDataBox,get,getString,getMap 獲取變量為了函數(shù),set 寫入變量函數(shù)
  • 數(shù)據(jù)處理引擎層:負(fù)責(zé)修改和讀取數(shù)據(jù)
  • 數(shù)據(jù)存儲(chǔ)層:負(fù)責(zé)保存數(shù)據(jù)

3.1 讀數(shù)據(jù)

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package main
 
import (
   "fmt"
   "github.com/codewangz/goutils/databox"
)
 
func main() {
   country := map[string]interface{}{
      "中國(guó)": map[string]interface{}{
         "陜西": []interface{}{"西安市", "寶雞市", "渭南市"},
         "寶雞": []interface{}{"朝陽(yáng)區(qū)", "海淀區(qū)", "通州區(qū)"},
      },
   }
 
   dbx := databox.NewDataBox(country)
   xian := dbx.GetString("中國(guó).陜西.0")
   fmt.Println(xian)
}

打印結(jié)果
西安

通過(guò)GetString 傳入key “中國(guó).陜西.0”,直接就可以獲取對(duì)應(yīng)的值“西安”,只有一步操作。

3.2 寫數(shù)據(jù)

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package main
 
import (
   "fmt"
   "github.com/codewangz/goutils/databox"
)
 
func main() {
   country := map[string]interface{}{
      "中國(guó)": map[string]interface{}{
         "陜西": []interface{}{"西安市", "寶雞市", "渭南市"},
         "寶雞": []interface{}{"朝陽(yáng)區(qū)", "海淀區(qū)", "通州區(qū)"},
      },
   }
 
   dbx := databox.NewDataBox(country)
   dbx.Set("美國(guó).紐約州.0", "紐約")
   fmt.Println(dbx.Data())
}

打印結(jié)果
map[中國(guó):map[寶雞:[朝陽(yáng)區(qū) 海淀區(qū) 通州區(qū)] 陜西:[西安市 寶雞市 渭南市]] 美國(guó):map[紐約州:[紐約]]]

使用set方法直接對(duì)應(yīng)key“美國(guó).紐約州.0”寫入對(duì)應(yīng)的值就可以。

總結(jié)

  • 弱類型語(yǔ)言php可以直接對(duì)數(shù)值讀寫,不需要提前知道變量類型,也不需要知道變量?jī)?nèi)部構(gòu)造
  • 強(qiáng)類型語(yǔ)言golang不能直接讀寫數(shù)據(jù),需要對(duì)數(shù)據(jù)類型進(jìn)行斷言,才能寫入,需要知道變量?jī)?nèi)部構(gòu)造

到此這篇關(guān)于golang實(shí)現(xiàn)PHP數(shù)組特性的方法的文章就介紹到這了,更多相關(guān)golang實(shí)現(xiàn)PHP數(shù)組特性內(nèi)容請(qǐng)搜索服務(wù)器之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持服務(wù)器之家!

原文鏈接:https://juejin.cn/post/7046679990368206861

延伸 · 閱讀

精彩推薦
  • Golanggo語(yǔ)言制作端口掃描器

    go語(yǔ)言制作端口掃描器

    本文給大家分享的是使用go語(yǔ)言編寫的TCP端口掃描器,可以選擇IP范圍,掃描的端口,以及多線程,有需要的小伙伴可以參考下。 ...

    腳本之家3642020-04-25
  • Golanggolang的httpserver優(yōu)雅重啟方法詳解

    golang的httpserver優(yōu)雅重啟方法詳解

    這篇文章主要給大家介紹了關(guān)于golang的httpserver優(yōu)雅重啟的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,...

    helight2992020-05-14
  • Golanggolang如何使用struct的tag屬性的詳細(xì)介紹

    golang如何使用struct的tag屬性的詳細(xì)介紹

    這篇文章主要介紹了golang如何使用struct的tag屬性的詳細(xì)介紹,從例子說(shuō)起,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看...

    Go語(yǔ)言中文網(wǎng)11352020-05-21
  • Golanggo日志系統(tǒng)logrus顯示文件和行號(hào)的操作

    go日志系統(tǒng)logrus顯示文件和行號(hào)的操作

    這篇文章主要介紹了go日志系統(tǒng)logrus顯示文件和行號(hào)的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧...

    SmallQinYan12302021-02-02
  • GolangGolang通脈之?dāng)?shù)據(jù)類型詳情

    Golang通脈之?dāng)?shù)據(jù)類型詳情

    這篇文章主要介紹了Golang通脈之?dāng)?shù)據(jù)類型,在編程語(yǔ)言中標(biāo)識(shí)符就是定義的具有某種意義的詞,比如變量名、常量名、函數(shù)名等等,Go語(yǔ)言中標(biāo)識(shí)符允許由...

    4272021-11-24
  • Golanggolang json.Marshal 特殊html字符被轉(zhuǎn)義的解決方法

    golang json.Marshal 特殊html字符被轉(zhuǎn)義的解決方法

    今天小編就為大家分享一篇golang json.Marshal 特殊html字符被轉(zhuǎn)義的解決方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧 ...

    李浩的life12792020-05-27
  • GolangGolang中Bit數(shù)組的實(shí)現(xiàn)方式

    Golang中Bit數(shù)組的實(shí)現(xiàn)方式

    這篇文章主要介紹了Golang中Bit數(shù)組的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧...

    天易獨(dú)尊11682021-06-09
  • Golanggolang 通過(guò)ssh代理連接mysql的操作

    golang 通過(guò)ssh代理連接mysql的操作

    這篇文章主要介紹了golang 通過(guò)ssh代理連接mysql的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧...

    a165861639710342021-03-08
主站蜘蛛池模板: 国产精品色拉拉免费看 | 日日草视频 | jk制服蕾丝超短裙流白浆 | 国产精品 色 | 精品小视频在线 | 校花的第一次好紧好爽 | 99久久精品自在自看国产 | 四虎影视在线影院在线观看观看 | 国产综合色在线视频区色吧图片 | 91麻豆网址 | xxxxxx性受 | 双夫1v2| 九九久久国产精品大片 | 乌克兰精品摘花处破 | 青青热久免费精品视频网站 | 四虎在线最新地址公告 | 9420高清视频在线观看网百度 | 免费我看视频在线观看 | 三级理论在线播放大全 | 亚洲国产日韩成人综合天堂 | aⅴ免费视频 | 国产精品成人免费 | 95视频在线观看在线分类h片 | 98精品视频 | 亚洲欧美影院 | 免费国产一级观看完整版 | 2020国产精品永久在线观看 | 国产探花视频 | 日本福利片国产午夜久久 | 40分钟在线观看免费 | 国产第一福利视频导航在线 | 福利色播 | 免费看又黄又爽又猛的视频软件- | fc2成人免费共享视频 | 97涩色| 无颜之月全集免费观看 | 黑人与欧洲女子性大战 | 青草国产福利视频免费观看 | 亚洲剧情在线观看 | 四虎国产精品视频免费看 | 秋霞一级成人欧美理论 |