最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2021年12月29日 10:08:42   作者:萬(wàn)般皆下品惟有讀書高  
我們做業(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 讀取值

<?php
$country = [
    "china"=>[
            "陜西"=>["西安市","寶雞市","渭南市"],
            "北京"=>["朝陽(yáng)區(qū)","海淀區(qū)","通州區(qū)"]
    ],
];

print_r($country["china"]["陜西"][0]);

打印結(jié)果
西安市

1.2 寫入值

<?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 讀取值

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 寫入值

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ù)

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ù)

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)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Go之interface的具體使用

    Go之interface的具體使用

    這篇文章主要介紹了Go之interface的具體使用,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-03-03
  • GO語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單TCP服務(wù)的方法

    GO語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單TCP服務(wù)的方法

    這篇文章主要介紹了GO語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單TCP服務(wù)的方法,實(shí)例分析了Go語(yǔ)言實(shí)現(xiàn)TCP服務(wù)的技巧,需要的朋友可以參考下
    2015-03-03
  • go語(yǔ)言實(shí)現(xiàn)字符串base64編碼的方法

    go語(yǔ)言實(shí)現(xiàn)字符串base64編碼的方法

    這篇文章主要介紹了go語(yǔ)言實(shí)現(xiàn)字符串base64編碼的方法,實(shí)例分析了Go語(yǔ)言操作字符串的技巧及base64編碼的使用技巧,需要的朋友可以參考下
    2015-03-03
  • 使用Go語(yǔ)言進(jìn)行條件編譯的示例代碼

    使用Go語(yǔ)言進(jìn)行條件編譯的示例代碼

    Go的條件編譯主要通過(guò)構(gòu)建標(biāo)簽(build?tags)和構(gòu)建約束(build?constraints)來(lái)實(shí)現(xiàn),這些標(biāo)簽和約束可以讓我們針對(duì)不同的操作系統(tǒng)、架構(gòu)或特定條件編寫特定代碼,本文給大家介紹了如何使用Go語(yǔ)言進(jìn)行條件編譯,需要的朋友可以參考下
    2024-06-06
  • 代碼整潔利器go?fmt命令使用詳解

    代碼整潔利器go?fmt命令使用詳解

    這篇文章主要為大家介紹了代碼整潔利器go?fmt命令使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2024-01-01
  • golang int64轉(zhuǎn)int的方法

    golang int64轉(zhuǎn)int的方法

    這篇文章主要介紹了golang int64轉(zhuǎn)int,本文給大家提供兩種方法 ,將 golang int64 轉(zhuǎn)換為golang int,結(jié)合實(shí)例代碼給大家分享轉(zhuǎn)換方法,需要的朋友可以參考下
    2023-01-01
  • 一文帶你了解Go中的內(nèi)存對(duì)齊

    一文帶你了解Go中的內(nèi)存對(duì)齊

    一旦涉及到較為底層的編程,特別是與硬件交互,內(nèi)存對(duì)齊是一個(gè)必修的課題,所以這篇文章小編就想來(lái)和大家聊一聊Go語(yǔ)言中的內(nèi)存對(duì)齊,希望對(duì)大家有所幫助
    2023-10-10
  • Go語(yǔ)言利用ssh連接服務(wù)器的方法步驟

    Go語(yǔ)言利用ssh連接服務(wù)器的方法步驟

    這篇文章主要介紹了Go語(yǔ)言利用ssh連接服務(wù)器的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • golang如何通過(guò)type定義函數(shù)類型

    golang如何通過(guò)type定義函數(shù)類型

    這篇文章主要介紹了golang如何通過(guò)type定義函數(shù)類型問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • go語(yǔ)言字符串的拼接和切片方法總結(jié)

    go語(yǔ)言字符串的拼接和切片方法總結(jié)

    在go語(yǔ)言中,因?yàn)樽址荒鼙辉L問(wèn),不能被修改,所以進(jìn)行字符串拼接的時(shí)候,golang都需要進(jìn)行內(nèi)存拷貝,造成一定的性能消耗,這篇文章主要給大家介紹了關(guān)于go語(yǔ)言字符串的拼接和切片的相關(guān)資料,需要的朋友可以參考下
    2022-11-11

最新評(píng)論

崇文区| 娱乐| 桓仁| 竹山县| 凤台县| 巴林左旗| 盘锦市| 桐柏县| 邵东县| 沈阳市| 金阳县| 即墨市| 象州县| 长泰县| 水城县| 安平县| 眉山市| 五峰| 通许县| 日喀则市| 大新县| 缙云县| 水富县| 嵊州市| 道孚县| 阳东县| 泽州县| 余干县| 西华县| 保亭| 漯河市| 通城县| 长兴县| 阿巴嘎旗| 滨海县| 鹤庆县| 锦州市| 木兰县| 凌源市| 和龙市| 镇宁|