Go学习笔记(五)

栏目: Go · 发布时间: 5年前

内容简介:本系列文章会参照函数是实现一些功能的代码块,可以提高应用的模块性和复用率。题外话,React的组件化也是为了代码复用,组件可以看作一个函数,Props是外部传参,state是函数内部状态或者内部变量。

本系列文章会参照 C语言中文网 的《Go语言教程》来写自己的心得体会

函数是实现一些功能的代码块,可以提高应用的模块性和复用率。

题外话,React的组件化也是为了代码复用,组件可以看作一个函数,Props是外部传参,state是函数内部状态或者内部变量。

普通函数需要先声明才能调用。同一个包内,函数不能同名。支持多返回值

包(package)是 Go 源码的一种组织方式,一个包可以认为是一个文件夹,在后续章节中将会详细讲解包的概念。

Go 语言的函数声明以 func 标识,后面紧接着函数名、参数列表、返回参数列表及函数体
func foo( a int, b string ){
    ... // 函数体
}
复制代码

参数列表中,如有多个参数变量,则以逗号分隔;如果相邻变量是同类型,则可以将类型省略

func add(a, b int) int {
    return a + b
}
// 函数可以有多个返回值
conn, err := connectToNetwork()
复制代码

闭包是引用了自由变量的函数,被引用的自由变量和函数一同存在,即使已经离开了自由变量的环境也不会被释放或者删除,在闭包中可以继续使用这个自由变量。

Go语言支持可变参数特性,函数声明和调用时没有固定数量的参数.

func 函数名(固定参数列表, v … T)(返回参数列表){
    函数体
}
复制代码

Go 语言的 defer 语句会将其后面跟随的语句进行延迟处理。在 defer 归属的函数即将返回时,将延迟处理的语句按 defer 的逆序进行执行,也就是说,先被 defer 的语句最后被执行,最后被 defer 的语句,最先被执行。压栈出栈的原因。

package main
import (
    "fmt"
)
func main() {
    fmt.Println("defer begin")
    // 将defer放入延迟调用栈
    defer fmt.Println(1)
    defer fmt.Println(2)
    // 最后一个放入, 位于栈顶, 最先调用
    defer fmt.Println(3)
    fmt.Println("defer end")
}
复制代码

Go语言函数处理思想

  • 一个可能造成错误的函数,需要返回值中返回一个错误接口(error)。如果调用是成功的,错误接口将返回 nil,否则返回错误
  • 在函数调用后需要检查错误,如果发生错误,进行必要的错误处理。

net.Dial() 是 Go 语言系统包 net 即中的一个函数,一般用于创建一个 Socket 连接。net.Dial 拥有两个返回值,即 Conn 和 error

func Dial(network, address string) (Conn, error) {
    var d Dialer
    return d.Dial(network, address)
}
复制代码

手动触发宕机

Go 语言可以在程序中手动触发宕机,让程序崩溃,这样开发者可以及时地发现错误,同时减少可能的损失

package main
func main() {
    panic("crash")
}

// 程序崩溃,输出内容如下
panic: crash

goroutine 1 [running]:
main.main()
    F:/src/tester/main.go:5 +0x6b

复制代码

Go语言提供宕机恢复功能,防止程序崩溃。Go 没有异常系统,其使用 panic 触发宕机类似于其他语言的抛出异常,那么 recover 的宕机恢复机制就对应 try/catch 机制


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Algorithms for Image Processing and Computer Vision

Algorithms for Image Processing and Computer Vision

Parker, J. R. / 2010-12 / 687.00元

A cookbook of algorithms for common image processing applications Thanks to advances in computer hardware and software, algorithms have been developed that support sophisticated image processing with......一起来看看 《Algorithms for Image Processing and Computer Vision》 这本书的介绍吧!

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具