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` 函数。