Go中Java静态属性的等价性

时间:2017-11-23 14:53:13

标签: java go static

class Array {
    public static int MAX_SIZE = 42;
}
Array arr = new Array();
int size = Array.MAX_SIZE;

因此,我们可以创建类Array的对象,并且我们还有类Array的属性。 Go中这段代码的等价性是什么?

3 个答案:

答案 0 :(得分:1)

Go没有课程。 Go没有静态变量。所以没有等价物。

Go最接近的概念是包常量和结构字段。这两者与你正在寻找的完全不同。

答案 1 :(得分:0)

这不是一个简单的等价物:

let x: { (): Array<string>; maz: Array<string>; };

x = (() => {
    var _x : any = function () { };
    _x.maz = [];
    return _x;
})();

let y: { (): void; maz: Array<string> } = (() => {
    let _y: any = function fake(): Array<string> {
        return ((cb: any): Array<string> => {
            return cb.maz;
        })(fake);
    }
    _y.maz = [];
    return _y;
})();

在另一个地方:

package array

type Array struct {}

const MaxSize int = 42

答案 2 :(得分:0)

如果您尝试使用Java进行编程,那么您的代码将非常糟糕。忘记Java,Go中的程序。 Go没有课程。

在Go中,您可能会看到类似的内容(它不是Java类):

package array

const MaxSize = 42

type Array struct {
    slice []byte
}

func New(size int) *Array {
    if size < 0 {
        return nil
    }
    if size > MaxSize {
        size = MaxSize
    }
    return &Array{slice: make([]byte, size)}
}

func (a *Array) Size(size int) int {
    if a == nil {
        return 0
    }
    return len(a.slice)
}