Go 语言概述 (下)

来源:互联网 发布:java反序列化漏洞 编辑:程序博客网 时间:2024/06/05 15:31

Go 语言概述 (下)

函数

定义函数

main.go

package mainimport (    "fmt")func main() {    fmt.Println(add(1, 2))}func add(a int, b int) (int) {    return a + b}

注: 前几个函数参数的类型可以省略, 最后一个不行. func add(a, b int)

函数是第一类型, 可以作为参数或返回值:
main.go

package mainimport (    "fmt")func main() {    f := add    fmt.Println(f(1, 2))}func add(a , b int) (int) {    return a + b}

defer

defer 定义延迟调用,无论函数是否出错,它都确保结束前被调用.
main.go

package mainimport (    "fmt")func main() {    test(1, 0)}func test(a, b int){    defer fmt.Println("dispose ... ") // 常用来释放资源等清理操作    fmt.Println(a / b)}

输出结果:
这里写图片描述

数组

main.go

package mainimport (    "fmt")func main() {    a := make([]int, 0, 5)    fmt.Println("before: ", a)    for i := 0; i < 10; i ++ {        a = append(a, i)    }    fmt.Println("after: ", a)}

运行结果:
这里写图片描述

注: 数组大小是固定的,append()函数原理是生成了一个新的数组.

字典

mian.go

package mainimport (    "fmt")func main() {    m := make(map[string]int)    m["a"] = 1    m["b"] = 2    x, ok := m["c"]  // 使用ok-idiom获取值, 可知道key/value是否存在    fmt.Println(x, ok)    b := m["b"]    fmt.Println(b)}

输出结果:
这里写图片描述
ok-idiom 模式,是指在多返回值中用一个名为ok的布尔值来标示操作是否成功,因为很多操作默认返回0,所以要用ok来说明0是原本应获得的值,还是默认的返回值.

注: x, ok := map["c"] 中 x 和 ok 的值类型似乎带有了 left 和 right属性. 具体为什么还不知道==
看下面代码:
main.go

package mainimport (    "fmt")func main() {    m := make(map[string]int)    m["a"] = 1    m["b"] = 2    x, ok := m["c"]    fmt.Println(x, ok)    x := m["b"]  // x 这里会报错 ???    fmt.Println(x)}

报错截图:
这里写图片描述

结构体

main.go

package mainimport (    "fmt")type user struct {  // 名为 user 的结构体    name string    age int}type user_account struct {    user  // 嵌套其他结构体    account string    password string}func main() {    u := user{"fenggese", 22}    a := user_account{u, "fenggese123", "123456"}    fmt.Println(u)    fmt.Println(a)}

运行结果:
这里写图片描述

接口

未完待续…

0 0
原创粉丝点击