Go 语言类型 复数型

基本概念

复数(Complex-number)是指能写成 a + bi 形式的数,这里的 ab 是实数,i 是虚数单位(即 -1 开根)。

Go 语言提供两种复数类型,由两个浮点数来表示,一个表示实部(real),一个表示虚部(imag):

  • complex64:其中实部和虚部都是 float32 类型,占用空间为 8 字节。
  • complex128 :其中实部和虚部都是 float64 类型,占用空间为 16 字节。

创建复数

复数可以使用 complex 函数创建,或通过字面量直接定义。complex 函数接受两个参数,第一个是实部,第二个是虚部:

package main

import "fmt"

func main() {
	// 默认零值为 0+0i
	var a complex128

	// 虚部为 -12i
	var b = 5 - 12i

	// 使用字面量创建复数
	c := 2.3 + 7.4i

	// 使用 complex 函数创建复数
	d := complex(5.0, 12.0)

	fmt.Println(a, b, c, d)
}

操作复数

复数的实部和虚部可以通过内置函数 realimag 函数获取:

package main

import "fmt"

func main() {
	c := 2.3 - 7.4i
	fmt.Printf("实部为:%v\n虚部为:%v\n", real(c), imag(c))
}

复数运算

复数类型主要用于科学计算和工程领域,除了使用普通算术运算符,在 math/cmplx 包中有更多复数计算函数:

package main

import (
	"fmt"
	"math/cmplx"
)

func main() {
	a := 1.2 + 3.4i
	b := 5.6 - 1.2i

	// 基本运算
	fmt.Println("求和:", a+b)
	fmt.Println("求差:", a-b)
	fmt.Println("求积:", a*b)
	fmt.Println("求商:", a/b)

	// 高级运算
	fmt.Println("模(绝对值):", cmplx.Abs(a))
	fmt.Println("共轭:", cmplx.Conj(a))
	fmt.Println("指数:", cmplx.Exp(a))
	fmt.Println("自然对数:", cmplx.Log(a))
	fmt.Println("幂:", cmplx.Pow(a, b))
}