参数为指针的函数

函数可以有指针类型的参数。ptrFun.go 的代码将说明指针作为函数参数的使用。

ptfFun.go 的第一部分如下:

  1. package main
  2. import (
  3. "fmt"
  4. )
  5. func getPtr(v *float64) float64 {
  6. return *v * *v
  7. }

getPrt() 函数接收一个指向 float64 值的指针。

第二段代码如下:

  1. func main() {
  2. x := 12.2
  3. fmt.Println(getPrt(&x))
  4. x = 12
  5. fmt.Println(getPtr(&x))
  6. }

这里您需要传递变量的地址给 getPtr() 函数,因为它需要一个指针参数,传地址需要在变量前放一个 & 符号(&x)。

执行 ptrFun.go 产生如下输出:

  1. $go run ptrFun.go
  2. 148.83999999999997
  3. 144

如果您直接传值如:12.2getPtr(),并调用它如:getPtr(12.12),那么程序编译失败,显示下面的错误信息:

  1. $go run ptrFun.go
  2. # command-line-arguments
  3. ./ptrFun.go:15:21: cannot use 12.12 (type float64) as type *float64 in argument to getPtr