Golang real 函数
最后修改时间 2025 年 5 月 8 日
本教程将解释如何在 Go 中使用 `real` 内置函数。我们将通过提取实部的实际示例来介绍复数基础知识。
`real` 函数用于提取 Go 中复数的实部。它适用于 complex64 和 complex128 类型。该函数返回一个表示实部的浮点数值。
在 Go 中,`real` 对于复数运算至关重要。它经常与 `imag` 一起使用,将复数分解为各个部分。该函数内置于语言中,无需导入。
基本 real 函数示例
`real` 最简单的用法是提取复数的实部。此示例演示了基本的实部提取。
注意: 复数写成 (实部 + 虚部)i。
basic_real.go
package main import "fmt" func main() { c := complex(3.5, 2.1) r := real(c) fmt.Printf("Complex: %v\n", c) fmt.Printf("Real part: %.2f\n", r) // Alternative complex number syntax c2 := 4.2 + 7.9i fmt.Printf("\nComplex2: %v\n", c2) fmt.Printf("Real part: %.2f\n", real(c2)) }
`real` 函数从第一个复数中提取 3.5。第二个示例显示了替代的复数文字语法。
将 real 与 complex64 结合使用
`real` 函数适用于 complex64 和 complex128 类型。此示例演示了将 real 与较小的 complex64 类型结合使用。
complex64_real.go
package main import "fmt" func main() { var c complex64 = complex(1.2, 3.4) r := real(c) fmt.Printf("Type: %T\n", c) fmt.Printf("Value: %v\n", c) fmt.Printf("Real part: %v (type: %T)\n", r, r) // Operations with the real part scaled := r * 2 fmt.Printf("Scaled real part: %.2f\n", scaled) }
输出显示实部被提取为 complex64 的 float32。我们通过显示提取部分的类型来展示类型安全性。
数学运算中的实部
实部可用于数学计算。此示例展示了在计算中实际使用实部。
math_operations.go
package main import ( "fmt" "math" ) func main() { c := complex(5.0, 12.0) // Represents 5 + 12i r := real(c) i := imag(c) // Calculate magnitude using real and imaginary parts magnitude := math.Sqrt(r*r + i*i) fmt.Printf("Complex number: %v\n", c) fmt.Printf("Magnitude: %.2f\n", magnitude) // Use real part in comparison if r > 0 { fmt.Println("Real part is positive") } }
我们使用复数的实部和虚部来计算其模。实部也用于条件检查。
数组中的 Real 函数
`real` 函数可以处理复数数组。此示例演示了从多个复数值中提取实部。
array_processing.go
package main import "fmt" func main() { numbers := []complex128{ complex(1, 2), complex(3, 4), complex(5, 6), } // Extract all real parts reals := make([]float64, len(numbers)) for i, num := range numbers { reals[i] = real(num) } fmt.Println("Complex numbers:", numbers) fmt.Println("Real parts:", reals) // Calculate average of real parts sum := 0.0 for _, r := range reals { sum += r } fmt.Printf("Average real: %.2f\n", sum/float64(len(reals))) }
我们创建了一个实部复数切片。该示例还展示了对提取的实部进行统计计算。
函数返回值中的实部
函数可以返回复数,我们可以提取它们的实部。此示例演示了将 real 与函数返回值结合使用。
function_return.go
package main import ( "fmt" "math/cmplx" ) func rotate(c complex128, angle float64) complex128 { // Rotate complex number by angle (in radians) return c * cmplx.Rect(1, angle) } func main() { point := complex(1, 0) // Point on real axis // Rotate by 90 degrees (π/2 radians) rotated := rotate(point, 3.14159/2) fmt.Printf("Original: %.2f\n", point) fmt.Printf("Rotated: %.2f\n", rotated) fmt.Printf("New real part: %.2f\n", real(rotated)) // Check if real part is approximately zero if math.Abs(real(rotated)) < 1e-9 { fmt.Println("Rotation successful (real part ≈ 0)") } }
该示例旋转了一个复数并检查了它的实部。我们使用 `real` 函数来验证旋转的效果。
来源
本教程通过复数处理和实部提取的实际示例,涵盖了 Go 中的 `real` 函数。