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
- Go 语言概述 (下)
- go 语言概述
- Go 语言概述 ( 上 )
- Go并发编程之Go语言概述
- Go语言学习札记——第一章 Go语言概述
- Ubuntu下安装go语言
- Ubuntu下GO语言实践
- Ubuntu下安装go语言
- linux64下安装Go语言
- Ubuntu 下安装Go语言
- GO语言linux下环境变量
- Ubuntu 下安装Go语言
- Windows平台下GO语言编译器(GO-windows)
- Windows平台下GO语言编译器(GO-windows)
- win7下配置GO语言环境 + eclipse 配置GO开发
- [Go] --- Win7下搭建Go语言开发环境
- win7下配置GO语言环境 + eclipse 配置GO开发
- Go语言入门教程(一)Linux下安装Go
- 红宝书 第21章整理——Ajax与Comet
- T-SQL 批处理
- Jump Game
- C# 通过socket实现UDP 通信
- TouchableHighlight之坑 没有onPress方法不起作用
- Go 语言概述 (下)
- 小程序 判断
- Andorid 常见的内存泄露及解决办法
- document.onreadystatechange的认识
- ConcurrentLinkedQueue、AraayBlockingQueue、LinkedBlockingQueue 区别及使用场景
- centos 配置163yum源
- 网络层协议和传输层协议
- 7 MySQL的正则表达式
- 跨域JSONP原理及调用具体示例