据我所知,golang不提供运算符重载,因为它认为它增加了复杂性.
所以我想直接为结构实现它.
package main
import "fmt"
type A struct {
value1 int
value2 int
}
func (a A) AddValue(v A) A {
a.value1 += v.value1
a.value2 += v.value2
return a
}
func main() {
x, z := A{1, 2}, A{1, 2}
y := A{3, 4}
x = x.AddValue(y)
z.value1 += y.value1
z.value2 += y.value2
fmt.Println(x)
fmt.Println(z)
}
Run Code Online (Sandbox Code Playgroud)
https://play.golang.org/p/1U8omyF8-V
从上面的代码中,AddValue按我的意愿工作.但是,我唯一担心的是它是一个值传递,因此我必须每次都返回新增加的值.
还有其他更好的方法,以避免返回总结变量.
Go 中的浮点运算是如何工作的
游乐场链接
package main
import "fmt"
func main() {
j := 1.021
fmt.Println(j)
k := j*1000
fmt.Println(k)
l := int(k)
fmt.Println(l)
}
Output:
1.021
1020.9999999999999
1020
Run Code Online (Sandbox Code Playgroud)
我原本以为会1021
被打印出来,但我得到了1020