class Array {
public static int MAX_SIZE = 42;
}
Array arr = new Array();
int size = Array.MAX_SIZE;
そこで、我々はクラスArray
のオブジェクトを作成することができますし、我々はまた、クラスArray
の性質を持っています。 Goでこのコードと同等のものは何ですか?等価のJavaの静的プロパティ
class Array {
public static int MAX_SIZE = 42;
}
Array arr = new Array();
int size = Array.MAX_SIZE;
そこで、我々はクラスArray
のオブジェクトを作成することができますし、我々はまた、クラスArray
の性質を持っています。 Goでこのコードと同等のものは何ですか?等価のJavaの静的プロパティ
Goにはクラスがありません。 Goには静的変数はありません。したがって同等物はありません。
Goには、パッケージ定数と構造フィールドがあります。どちらもあなたが探しているものとまったく同じです。別の場所で
package array
type Array struct {}
const MaxSize int = 42
:
私は同じ名前の構造体とパッケージを持つことができますか? – Axel
あなたは偶然、ある種のことができますが、それは有用ではありません。 [パッケージ名](https://blog.golang.org/package-names)は常に小文字でなければなりません。構造体も小文字の名前を持つことができますが、その構造体はエクスポートされず、その有用性が制限されます。とにかく名前を共有する必要があるという理由はありませんので、実際には関係ありません。 – Flimzy
@Axel: "同じ名前の構造体とパッケージを使用できますか?"はい、便利なことがあります。たとえば、 'package file;タイプファイルstruct {fd uintptr};ファイルstruct {file * file};をタイプします。 func New()* File {return&File {file:new(file)}}; '。 – peterSO
それは、プレーンと同等ではありませんあなたはJavaで、あなたのプログラムのような移動でプログラミングしようとすると
package main
import "./array"
fmt.Println(array.MaxSize)
、あなたのコードはひどいとなります。 Javaを忘れて、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)
}
。 – Flimzy
定数やクラス変数について質問していますか? –
クラス変数に関する@ cricket_007 – Axel