响应式企业网站,数据库网站开发外文翻译,浙江网商银行,常州网站建设公司渠道一、函数
函数是基本的代码块#xff0c;用于执行一个任务。 Go 语言最少有个 main() 函数。 你可以通过函数来划分不同功能#xff0c;逻辑上每个函数执行的是指定的任务。
函数声明包括函数名﹑形式参数列表﹑返回值列表#xff08;可省略#xff09;以及函数体。
fun…一、函数
函数是基本的代码块用于执行一个任务。 Go 语言最少有个 main() 函数。 你可以通过函数来划分不同功能逻辑上每个函数执行的是指定的任务。
函数声明包括函数名﹑形式参数列表﹑返回值列表可省略以及函数体。
func name( parameter-list ) [result-list] {body
}
形式参数列表描逑了函数的参数名以及参数类型。这些参数作为局部变量被初始化为参数调用者提供的值或默认为参数类型的值(int 0;string )。当函数被调用时你可以将值传递给参数这个值被称为实际参数。参数列表指定的是参数类型、顺序、及参数个数。参数是可选的也就是说函数也可以不包含参数。函数使用参数可以通过两种方式传参
值传递值传递是指在调用函数时将实际参数复制一份传递到函数中这样在函数中如果对参数进行修改将不会影响到实际参数。引用传递引用传递是指在调用函数时将实际参数的地址传递到函数中那么在函数中对参数所进行的修改将影响到实际参数。
返回值列表描述了函数返回值的变量名以及类型。如果函数返回一个无名变量或者没有返回值返回值列表的括号是可以省略的。如果一个函数声明不包括返回值列表那么函数体执行完毕后不会返回任何值。
二、递归函数
函数是可以递归的在运行时直接或间接的自己调用自己。 我们在使用递归时程序员需要设置边界条件否则递归将陷入无限循环中。
实例
Go语言递归实现阶乘
package mainimport fmtfunc Factorial(n uint64)(result uint64) {if (n 0) {result n * Factorial(n-1)return result}return 1
}func main() { var i int 15fmt.Printf(%d 的阶乘是 %d\n, i, Factorial(uint64(i)))
}
Go语言递归实现斐波那契数列
package mainimport fmtfunc fibonacci(n int) int {if n 2 {return n}return fibonacci(n-2) fibonacci(n-1)
}func main() {var i intfor i 0; i 10; i {fmt.Printf(%d\t, fibonacci(i))}
}
三、指针
Go语言中的指针是一种特殊的数据类型用于存储变量的内存地址。指针变量可以指向任何数据类型包括基本类型、结构体、数组、函数等。
声明指针变量时需要使用*符号例如 var ptr *int //表示声明了一个指向整型变量的指针。 指针变量可以通过操作符取得变量的地址例如ptr num表示将整型变量num的地址赋值给指针变量ptr。
通过指针变量可以访问和修改指向的变量的值可以使用*操作符来解引用指针例如*ptr表示获取指针变量ptr所指向的变量的值。可以通过解引用操作符修改指向的变量的值例如*ptr 10表示将指针变量ptr所指向的变量的值修改为10。
指针也可以用于函数传参通过传递指针可以实现对变量的引用传递可以在函数内部修改变量的值对外部产生影响。
需要注意的是在Go语言中指针不能进行运算和比较也没有指针运算符-。此外Go语言的垃圾回收机制可以自动管理内存因此不需要手动释放指针所指向的内存。
四、错误处理
Go 语言通过内置的错误接口提供了非常简单的错误处理机制。 error 类型是一个接口类型这是它的定义
type error interface {Error() string
}
我们可以在编码中通过实现 error 接口类型来生成错误信息。
函数通常在最后的返回值中返回错误信息。使用 errors.New 可返回一个错误信息
func Sqrt(f float64) (float64, error) {if f 0 {return 0, errors.New(math: square root of negative number)}// 实现
}