Maps,字符串

Maps

1.Map的定义

  map语法为:var a map [键值类型] value值类型

  map是指在Go中将值(value)与键(key)关联的内置函数,可通过相应的键可以获取到值。map的空值是nil类型。

package main

import "fmt"

func main() {
        var a map[int]string
        fmt.Println(a)          # 如果只是初始化不赋值,那么map便是nil类型
        if a==nil{
        fmt.Println("xxxx")     # 打印结果>>>:xxxx
    }
}

 2.Map的赋值和取值

  如果想添加元素到nil map中,必须使用 make 函数初始化。获取map 元素语法是 map[key]。

package main 

import "fmt"

func main() {
    var a map[int]string = make(map[int]string)   # 定义和初始化的第一种方式
    fmt.Println(a)     # >>>:map[] 
    a[1] = "10"
    a[2] = "20"
    a[3] = "30"
------------------------------------------------
    var a = map[int]string{1:"10",2:"20",3:"30"}   # 定义和初始化的第二种方式
    fmt.Println(a)       # >>>:map[1:10 2:20 3:30]
    fmt.Println(a[4])    # 如果取一个不存在的key值,返回的value是一个空值。
}

 3.字典删除元素

  删除 map 中 key的语法是:delete(map, key)。delete为内置函数。这个函数没有返回值。

package main 

import "fmt"

func main() {
    var a = map[int]string{1:"10",2:"20",3:"30"}   
    delete(a, 2)
    fmt.Println(a)       # >>>:map[1:10  3:30] ,key为2的值被删除。
}

4.获取Map的长度

  获取 map 的长度使用 len() 函数。

package main 

import "fmt"

func main() {
    var a = map[int]string{1:"10",2:"20",3:"30"}   
    delete(a, 2)
    fmt.Println(a)       # >>>:map[1:10  3:30] ,key为2的值被删除。
    fmt.Println(len(a))    # >>>:2         # 获取长度
}

5.Map的相等性

  map之间不能使用 == 操作符判断,==只能用来检查 map 是否为nil类型。

 6.Map循环出所有的元素

package main 

import "fmt"

func main() {
    var a = map[int]string{1:"10",2:"20",3:"30",4:"40",5:"50"}    # 这种方法取出来符map是有序的
    for i:=0; i<len(a)+1; i++ {
        fmt.Println(a[i])
    }
---------------------------------------------------
    for k,v := range a{    # 这种方法取出来符map是无序的
        fmt.Println(k,v)
    }
}

字符串

1.字符串的定义

  go语言中的字符串其实是一个字节切片,把内容放在双引号 " " 中,便成功创建了一个字符串(go语言中单引号' '是无法生成字符串的)。go中的字符串是兼容Unicode编码的,并且string类型都是utf-8编码。

  go语言的字符有以下两种:

    1)一种是 uint8 类型,或者叫 byte 型,代表了ASCII码的一个字符。

    2)另一种是 rune 类型,代表一个 UTF-8 字符,当需要处理中文、日文或者其他复合字符时,则需要用到 rune 类型。rune 类型等价于 int32 类型。

2.单独获取字符串的每一个字节

  len(s) 返回字符串中字节的数量。其中%X格式限定符用于指定 16 进制编码,此时打印得用 Printf( )。

3.rune

  rune 是 int32 的别称,可以通过rune获取字符串中字符的数量。

4.用 rune 切片构造字符串

package main

import  "fmt"

func main() {  
    runeSlice := []rune{0x0053, 0x0065, 0x00f1, 0x006f, 0x0072}
    str := string(runeSlice)
    fmt.Println(str)
}

  在上面的程序中 runeSlice 包含字符串 Señor的 16 进制的 Unicode 代码点。这个程序将会输出Señor

 

posted @ 2019-12-12 22:59  kuanglinfeng  阅读(307)  评论(0编辑  收藏  举报