GO地図の予備的使用

コレクション(地図)

1.1地図とは何ですか

ジョー・スミス:13910101201

ジョン・ドウ:13801010134

マップは、内蔵されたタイプ進み、値がキーに関連付けられます。あなたは適切なキー値を取得するために使用することができます。

地図は、キーと値のペアの乱れコレクションです。最も重要な点は、迅速キーでデータを取得することで、地図、キーインデックスは、データ値を指し、類似している
地図コレクションですので、我々は、反復配列とスライスのようにそれを反復処理することができます。しかし、地図が乱れている、我々はその戻り順序を決定することができない、地図を達成するために、ハッシュテーブルを使用することですので、これは、それが参照型であります

注意することは、いくつかのコースをマップする使用します。

  • マップが乱れる、印刷された各マップは異なるだろう、それはインデックスを介して取得することはできませんが、キーを介して取得しなければなりません
  • マップの長さは、参照型、また、固定されておらず、同じスライスであります
  • 内蔵lenの機能も、リターンキーマップが番号を持って、マップするために適用されます
  • キーマップは、ブール、整数、浮動小数点、複素数、文字列として全て同等のタイプであってもよい......接合してもよいです。

1.2地図の使用状況

makeを使用1.2.1()マップを作成するには

また、地図を定義するために使用マップキーワードを作ることができる組み込み関数を使用することができます。

/* 声明变量,默认 map 是 nil */
var map_variable map[key_data_type]value_data_type
 
/* 使用 make 函数 */
map_variable = make(map[key_data_type]value_data_type)
rating := map[string]float32 {"C":5, "Go":4.5, "Python":4.5, "C++":2 }

あなたがマップを初期化しない場合は、nilのマップを作成します。nilのマップは、キーと値のペアを格納するために使用することはできません

package main
 
import "fmt"
 
func main() {
   var countryCapitalMap map[string]string
   /* 创建集合 */
   countryCapitalMap = make(map[string]string)
    
   /* map 插入 key-value 对,各个国家对应的首都 */
   countryCapitalMap["France"] = "Paris"
   countryCapitalMap["Italy"] = "Rome"
   countryCapitalMap["Japan"] = "Tokyo"
   countryCapitalMap["India"] = "New Delhi"
    
   /* 使用 key 输出 map 值 */
   for country := range countryCapitalMap {
      fmt.Println("Capital of",country,"is",countryCapitalMap[country])
   }
    
   /* 查看元素在集合中是否存在 */
   captial, ok := countryCapitalMap["United States"]
   /* 如果 ok 是 true, 则存在,否则不存在 */
   if(ok){
      fmt.Println("Capital of United States is", captial)  
   }else {
      fmt.Println("Capital of United States is not present") 
   }
}

結果:

Capital of France is Paris
Capital of Italy is Rome
Capital of Japan is Tokyo
Capital of India is New Delhi
Capital of United States is not present

1.2.2()関数を削除します

削除(マップは、キー)関数は、集合の要素、マップのパラメータとそれに対応するキーを削除するために使用されます。削除機能は、任意の値を返しません。

package main
 
import "fmt"
 
func main() {   
   /* 创建 map */
   countryCapitalMap := map[string] string {"France":"Paris","Italy":"Rome","Japan":"Tokyo","India":"New Delhi"}
    
   fmt.Println("原始 map")   
    
   /* 打印 map */
   for country := range countryCapitalMap {
      fmt.Println("Capital of",country,"is",countryCapitalMap[country])
   }
    
   /* 删除元素 */
   delete(countryCapitalMap,"France");
   fmt.Println("Entry for France is deleted")  
    
   fmt.Println("删除元素后 map")   
    
   /* 打印 map */
   for country := range countryCapitalMap {
      fmt.Println("Capital of",country,"is",countryCapitalMap[country])
   }
}

結果:

原始 map
Capital of France is Paris
Capital of Italy is Rome
Capital of Japan is Tokyo
Capital of India is New Delhi
Entry for France is deleted
删除元素后 map
Capital of Italy is Rome
Capital of Japan is Tokyo
Capital of India is New Delhi

1.2.3 OK-イディオム

私たちは、対応するマップキーの値によって値を取得することができます。構文は次のとおりです。

map[key] 

そのような文字列型としてキーが存在しない場合、我々は値型の値のデフォルト値を取得するには、空の文字列を取得する場合でも、int型は0を取得します。しかし、プログラムはエラーはありません。

だから我々は、存在する場合、そのキー/値を知って、値OK-イディオムを取得するために使用することができます

value, ok := map[key] 

サンプルコード:

package main
 
import (
    "fmt"
)
 
func main() {
    m := make(map[string]int)
    m["a"] = 1
    x, ok := m["b"]
    fmt.Println(x, ok)
    x, ok = m["a"]
    fmt.Println(x, ok)
}
 

結果:

0 false
1 true

1.2.4マップの長さ

マップの長さを決定するために、LEN関数を使用します。

len(map)  // 可以得到map的长度

1.2.5地図は、参照型であります

そして、スライスされた同様のマッピングは、参照型です。マッピングが新しい変数に割り当てられている場合、それらは同じ内部データ構造を指します。したがって、変更が他方に反映されます。

サンプルコード:

package main
 
import (  
    "fmt"
)
 
func main() {  
    personSalary := map[string]int{
        "steve": 12000,
        "jamie": 15000,
    }
    personSalary["mike"] = 9000
    fmt.Println("Original person salary", personSalary)
    newPersonSalary := personSalary
    newPersonSalary["mike"] = 18000
    fmt.Println("Person salary changed", personSalary)
 
}

結果:

Original person salary map[steve:12000 jamie:15000 mike:9000]  
Person salary changed map[steve:12000 jamie:15000 mike:18000] 

==演算子は、比較のためにマップを使用することができます。==それだけのマップが空であるかどうかをチェックするために使用することができます。それ以外の場合はエラーになります:無効な操作:MAP1 == MAP2(マップのみcomparedtoすることができnilを)

おすすめ

転載: www.cnblogs.com/puqunzhu/p/11700742.html