golang

12-Go语言字典和结构体-指趣学院

2018-09-18  本文已影响217人  极客江南

map(字典、映射)


package main
import "fmt"
func main() {
    var dic map[int]int = map[int]int{0:1, 1:3, 2:5}
    fmt.Println(dic) // map[0:1 1:3 2:5]

    // 获取map中某个key对应的值
    fmt.Println(dic[0]) // 1
    
    // 修改map中某个key对应的值
    dic[1] = 666
    fmt.Println(dic) // map[0:1 1:666 2:5]
}
package main
import "fmt"
func main() {
    var dict map[string]string = map[string]string{"name":"lnj", "age":"33", "gender":"male"}
    fmt.Println(dict)// map[name:lnj age:33 gender:male]
}

package main
import "fmt"
func main() {
    dict  := map[string]string{"name":"lnj", "age":"33", "gender":"male"}
    fmt.Println(dict)// map[name:lnj age:33 gender:male]
}
package main
import "fmt"
func main() {
    var dict = make(map[string]string, 3)
    dict["name"] = "lnj"
    dict["age"] = "33"
    dict["gender"] = "male"
    fmt.Println(dict)// map[age:33 gender:male name:lnj]
}
package main
import "fmt"
func main() {
    var dict = make(map[string]string)
    dict["name"] = "lnj"
    dict["age"] = "33"
    dict["gender"] = "male"
    fmt.Println(dict)// map[age:33 gender:male name:lnj]
}
package main
import "fmt"
func main() {
    // map声明后不能直接使用, 只有通过make或语法糖创建之后才会开辟空间,才能使用
    var dict map[string]string
    dict["name"] = "lnj" // 编译报错
    dict["age"] = "33"
    dict["gender"] = "male"
    fmt.Println(dict)
}

package main
import "fmt"
func main() {
    var dict = make(map[string]string)
    fmt.Println("增加前:", dict) // map[]
    dict["name"] = "lnj"
    fmt.Println("增加后:", dict) // map[name:lnj]
}
package main
import "fmt"
func main() {
    var dict = map[string]string{"name":"lnj", "age":"33", "gender":"male"}
    fmt.Println("修改前:", dict) // map[name:lnj age:33 gender:male]
    dict["name"] = "zs"
    fmt.Println("修改后:", dict) // map[age:33 gender:male name:zs]
}
package main
import "fmt"
func main() {
    var dict = map[string]string{"name":"lnj", "age":"33", "gender":"male"}
    fmt.Println("删除前:", dict) // map[name:lnj age:33 gender:male]
    // 第一个参数: 被操作的字典
    // 第二个参数: 需要删除元素对应的key
    delete(dict, "name")
    fmt.Println("删除后:", dict) // map[age:33 gender:male]
}
package main
import "fmt"
func main() {
    var dict = map[string]string{"name":"lnj", "age":"33", "gender":"male"}
    //value, ok := dict["age"]
    //if(ok){
    //  fmt.Println("有age这个key,值为", value)
    //}else{
    //  fmt.Println("没有age这个key,值为", value)
    //}
    if value, ok := dict["age"]; ok{
        fmt.Println("有age这个key,值为", value)
    }
}
    var dict = map[string]string{"name":"lnj", "age":"33", "gender":"male"}
    for key, value := range dict{
        fmt.Println(key, value)
    }

结构体

type 类型名称 struct{
  属性名称 属性类型
  属性名称 属性类型
  ... ...
}
type Studentstruct {
    name string
    age int
}

  package main
  import "fmt"
  type Student struct {
      name string
      age int
  }
  func main() {
    var stu= Student{"lnj", 33}
    // 获取结构体中某个属性对应的值
    fmt.Println(stu.name)

    // 修改结构体中某个属性对应的值
    stu.name = "zs"
    fmt.Println(stu)
  }
  package main
  import "fmt"
  type Student struct {
      name string
      age int
  }
  func main() {
    var stu Student // 相当于 var stu = Student{}
    fmt.Println(stu) // { 0}
    stu.name = "lnj" // 不会报错
    stu.age = 33
    fmt.Println(stu) // {lnj 33}
  }


  package main
  import "fmt"
  func main() {
    type Person1 struct {
        name string
        age int
    }
    type Person2 struct {
        name string
        age int
    }
    type Person3 struct {
        age int
        name string
    }
    type Person4 struct {
        nm string
        age int
    }
    type Person5 struct {
        name string
        age string
    }
    type Person6 struct {
        age int
        name string
        gender string
    }

    var p1 Person1 = Person1{"lnj", 33}
    var p2 Person2
    // 类型名称不一样不能直接赋值(Person1、Person2)
    //p2 = p1

    // 虽然类型名称不一样, 但是两个类型中的`属性名称`、`属性类型`、`属性个数`、`排列顺序`都一样,所以可以强制转换
    p2 = Person2(p1)
    fmt.Println(p2)
    // 两个结构体类型中的`属性名称`、`属性类型`、`属性个数`都一样,但是`排列顺序`不一样,所以不能强制转换
    //var p3 Person3
    //p3 = Person3(p1)
    //fmt.Println(p3)

    // 两个结构体类型中的`属性类型`、`属性个数`、`排列顺序`都一样,但是`属性名称`不一样,所以不能强制转换
    //var p4 Person4
    //p4 = Person4(p1)
    //fmt.Println(p4)

    // 两个结构体类型中的`属性名称`、`属性个数`、`排列顺序`都一样,但是`属性类型`不一样,所以不能强制转换
    //var p5 Person5
    //p5 = Person5(p1)
    //fmt.Println(p5)

    // 两个结构体类型中的`属性名称`、`属性类型`、`排列顺序`都一样,但是`属性个数`不一样,所以不能强制转换
    //var p6 Person6
    //p6 = Person6(p1)
    //fmt.Println(p6)
  }

上一篇 下一篇

猜你喜欢

热点阅读