我正在开发“Matrix”结构体和相关方法,目的是为了练习 Go。我做了很多方法,但我意识到所有这些方法都可以变成我习惯于C++的函数,而在C++中,如果我创建一个参数是类类型的函数,则该函数不能使用该类的私有变量(信息隐藏)但是,当我使用“Go”构建类似的代码时,函数可以访问结构体的变量。所以我不明白 Go 中的方法和函数有什么不同。使用方法而不是函数是否有任何利润,反之亦然?
第一个是我原来的“Matrix”代码(不是全部)它使用了一种方法“Tr”。它没有问题。
package main
import "fmt"
//definition of "Array"
type Array struct{
component [][]float32
row int
col int
}
//constructor of Array, "Ones"; making an array setting all component as one
func Ones(m int, n int) Array{
var a Array
a.component = make([][]float32, m)
a.row=m
a.col=n
for i:=0; i<m; i++{
a.component[i] = make([]float32, n)
for j:=0; j<n; j++{
a.component[i][j]=1
}
}
return a
}
//Tr function; find trace of an Array
func (a Array) Tr() float32{
var …Run Code Online (Sandbox Code Playgroud)