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

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

 更新時間:2021年12月29日 10:08:42   作者:萬般皆下品惟有讀書高  
我們做業(yè)務過程中,對應強類型語言使用有個痛點,就是使用變量之前一定要定義變量類型,那么本文就來介紹一下golang實現(xiàn)PHP數(shù)組特性的方法

前言

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

內(nèi)容

復雜結構處理

1. php 處理復雜結構

1.1 讀取值

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

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

打印結果
西安市

1.2 寫入值

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

$country["美國"]["紐約州"][0] = "紐約";

var_dump($country);

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

說明

  • php操作數(shù)組的時候,不需要考慮對應的下標值是否存在,可以直接使用。

2. golang 處理復雜結構

2.1 讀取值

package main

import "fmt"

func main() {
   country := map[string]interface{}{
      "china": map[string]interface{}{
         "陜西": []interface{}{"西安市", "寶雞市", "渭南市"},
         "寶雞": []interface{}{"朝陽區(qū)", "海淀區(qū)", "通州區(qū)"},
      },
   }

   china := country["china"] //第一步
   shanxi := china.(map[string]interface{})["陜西"] //第二步
   xian := shanxi.([]interface{}) //第三步
   fmt.Println(xian[0])
}

打印結果
西安市

分三步

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

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

package main

import "fmt"

func main() {
   country := map[string]interface{}{
      "中國": map[string]interface{}{
         "陜西": []interface{}{"西安市", "寶雞市", "渭南市"},
         "寶雞": []interface{}{"朝陽區(qū)", "海淀區(qū)", "通州區(qū)"},
      },
   }

   city := []interface{}{"紐約"} //第一步
   province := map[string]interface{}{"紐約州": city} //第二步
   country["美國"] = province //第三步
   fmt.Println(country)
}

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

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

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

因為要寫入的數(shù)據(jù)處在第三層,所有需要三步,才能賦值完成,如果對象為N層,需要在N層寫入數(shù)據(jù),所有需要N步

3. dataBox 復雜結構處理

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

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

package main

import (
   "fmt"
   "github.com/codewangz/goutils/databox"
)

func main() {
   country := map[string]interface{}{
      "中國": map[string]interface{}{
         "陜西": []interface{}{"西安市", "寶雞市", "渭南市"},
         "寶雞": []interface{}{"朝陽區(qū)", "海淀區(qū)", "通州區(qū)"},
      },
   }

   dbx := databox.NewDataBox(country)
   xian := dbx.GetString("中國.陜西.0")
   fmt.Println(xian)
}

打印結果
西安

通過GetString 傳入key “中國.陜西.0”,直接就可以獲取對應的值“西安”,只有一步操作。

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

package main

import (
   "fmt"
   "github.com/codewangz/goutils/databox"
)

func main() {
   country := map[string]interface{}{
      "中國": map[string]interface{}{
         "陜西": []interface{}{"西安市", "寶雞市", "渭南市"},
         "寶雞": []interface{}{"朝陽區(qū)", "海淀區(qū)", "通州區(qū)"},
      },
   }

   dbx := databox.NewDataBox(country)
   dbx.Set("美國.紐約州.0", "紐約")
   fmt.Println(dbx.Data())
}

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

使用set方法直接對應key“美國.紐約州.0”寫入對應的值就可以。

總結

  • 弱類型語言php可以直接對數(shù)值讀寫,不需要提前知道變量類型,也不需要知道變量內(nèi)部構造
  • 強類型語言golang不能直接讀寫數(shù)據(jù),需要對數(shù)據(jù)類型進行斷言,才能寫入,需要知道變量內(nèi)部構造

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

相關文章

  • Go之interface的具體使用

    Go之interface的具體使用

    這篇文章主要介紹了Go之interface的具體使用,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-03-03
  • GO語言實現(xiàn)簡單TCP服務的方法

    GO語言實現(xiàn)簡單TCP服務的方法

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

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

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

    使用Go語言進行條件編譯的示例代碼

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

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

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

    golang int64轉int的方法

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

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

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

    Go語言利用ssh連接服務器的方法步驟

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

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

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

    go語言字符串的拼接和切片方法總結

    在go語言中,因為字符串只能被訪問,不能被修改,所以進行字符串拼接的時候,golang都需要進行內(nèi)存拷貝,造成一定的性能消耗,這篇文章主要給大家介紹了關于go語言字符串的拼接和切片的相關資料,需要的朋友可以參考下
    2022-11-11

最新評論

定南县| 墨玉县| 通城县| 玉林市| 广水市| 南宁市| 保德县| 朝阳县| 大悟县| 彭阳县| 宁安市| 兖州市| 富平县| 如皋市| 龙胜| 莒南县| 文成县| 宝应县| 宁津县| 建湖县| 常德市| 隆昌县| 海南省| 湖南省| 嘉义市| 吉木萨尔县| 青神县| 芦溪县| 新干县| 焉耆| 花莲县| 澳门| 息烽县| 麟游县| 红河县| 沈阳市| 襄樊市| 图们市| 凤山县| 富阳市| 林州市|