Golang程序 将哈希集合转换为字符串
Golang有json包,用于将哈希集合转换为字符串。hashmap属于hash集合,它以key:value对的形式存储数据,而字符串是一个字符序列,它是不可改变的。在这篇文章中,我们将使用两个例子来把哈希集合转换成字符串。在第一个例子中,Json包将被用来将地图转换为编码的字节数组,而在第二个例子中,sort包将沿着循环使用。
语法
json.Marshal()
这个函数属于JSON包,它将提供的值转换为JSON编码的字节数。
func make ([] type, size, capacity)
Go语言中的 make 函数是用来创建数组/映射的,它接受要创建的变量类型、其大小和容量作为参数。
func len(v Type) int
len() 函数是用来获取任何参数的长度的。它需要一个参数作为数据类型的变量,我们希望找到它的长度,并返回整数值,即该变量的长度。
方法1:使用json Pacakge
在这个例子中,将创建一个hashmap,由golang中的json包将其转换为编码的字节数组,然后使用string函数进一步转换为字符串。让我们看看代码和算法,以了解执行的过程。
算法
- 导入fmt包和encoding/json包,以满足程序的要求。
 - 
创建一个主函数,并在该函数中创建一个名为hashcollection的hashmap,其中键和值都是字符串类型。
 - 
然后,使用json包中的Marshal函数将这个map转换为一个json编码的字节数组。
 - 
如果在对地图进行编码时遇到任何错误,请打印该错误。
 - 
然后,使用string函数将字节数组转换为字符串。
 - 
在哈希集合转换为字符串后,打印该集合。
 - 
打印语句使用fmt包中的Println函数执行。
 
例子
在下面的例子中,我们将使用json包将哈希集合转换为字符串。
//Golang program to convert the hash collection into string
package main
import (
   "encoding/json"
   "fmt"
)
//create a main function
func main() {
   hashCollection := map[string]string{ //create hashmap using map literal
      "item1": "value1",
      "item2": "value2",
      "item3": "value3",
   }
   hashCollectionJson, err := json.Marshal(hashCollection)
   if err != nil {
      panic(err)  //print if any error encountered
   }
   hash_string := string(hashCollectionJson) //convert the byte array to string
   fmt.Println("The hash collection after its converted to string:")
   fmt.Println(hash_string) //print the hash string
}
输出
The hash collection after its converted to string:
{"item1":"value1","item2":"value2","item3":"value3"}
方法2:使用排序包
在这个例子中,我们将创建一个hashhmap和一个slice,它将被进一步迭代以获得字符串中的键:值对。整个字符串将被打印在控制台。让我们通过代码和算法来看看它是如何完成的。
算法
- 在程序中导入fmt和sort包以满足程序的要求。
 - 
在main中使用map literal创建一个hashhmap,其键和值都是字符串类型。
 - 
使用make内置函数创建一个名为slice的键,其长度与hashhmap相似。
 - 
将i变量初始化为0,然后迭代hashmap直到其范围。
 - 
在每次迭代中,在keys slice中添加hashmap的键,并在每次迭代中增加index变量。
 - 
然后,使用排序包的Strings方法对键进行排序。
 - 
在这一步,创建一个变量hashhmap_string,通过迭代keys slice将key:value对添加到这个字符串中。
 - 
使用Println函数将字符串打印到控制台,其中ln表示新行。
 
例子
在下面的例子中,我们将使用排序函数将哈希集合转换为字符串。
package main
import (
   "fmt"
   "sort"
)
//create a main function
func main() {
   hashmap := map[string]string{ //create a hashmap using map literal
      "key1": "value1",
      "key2": "value2",
      "key3": "value3",
   }
   keys := make([]string, len(hashmap)) //create keys slice to print the string 
   i := 0
   for k := range hashmap {
      keys[i] = k
      i++
   }
   sort.Strings(keys) //sort the keys slice
   var hashmap_string string
   for _, k := range keys {
      v := hashmap[k]
      hashmap_string += fmt.Sprintf("%s:%s,", k, v) //add the key:value pairs
   }
   hashmap_string = "{" + hashmap_string[:len(hashmap_string)-1] + "}"
   fmt.Println("The hash collection after converted to string is:")
   fmt.Println(hashmap_string)  //print the string
}
输出
The hash collection after converted to string is:
{key1:value1,key2:value2,key3:value3}
总结
我们用两个例子执行并编译了将哈希集合转换为字符串的程序。在第一个例子中,我们使用了json包,在第二个例子中,我们使用了sort包,并使用循环来获得所需的输出。
极客教程