2 回答

TA貢獻2011條經驗 獲得超2個贊
不,Go 不支持文字類型(a la TypeScript)。而且,它實際上不能,因為零值。
每個類型都有一個零值,它總是存在并且總是可以分配給它。當聲明一個類型的變量時,它們被隱式分配給它們類型的零值。
對于整數 (
int
,uint
,int32
,uint32
,int64
,uin64
) 或浮點數 (float32
,float64
) 或復數 (complex64
或complex128
) 類型,這只是0
(0.0
分別)。對于字符串類型,這是空字符串
""
。對于切片、映射、指針、通道和接口,零值為
nil
.對于數組(不是切片:數組是具有靜態已知長度的值類型);它們的零值只是重復填充每個槽的元素類型的零值
結構類型的零值是其所有字段均為零值的結構
在任何情況下,因為任何類型總是可能有一個零值,所以創建一個只允許任何特定非零值的類型是不兼容的。
最好的字面量類型"foo"
可能代表的是該值要么是"foo"
零值""
(不,Go 無論如何都不支持這個)。
您能做的最接近的是const
ant 聲明,或者恰好返回固定值而不是實際字段的接收函數。

TA貢獻1786條經驗 獲得超13個贊
Go 是靜態類型語言,這意味著每個變量都需要用特定的數據類型聲明。
在 Go 中不可能在聲明中為結構中的每個字段設置默認值。它不受支持。
但也許你可以做這樣的事情。
type Foo struct {
one string
two int
}
func NewFoo() *Foo {
foo := new(Foo)
foo.one = "default value for one"
foo.two = 2
return foo
}
func main() {
objectWithDefaultValueForItsField := NewFoo()
}
我所做的基本上只是創建了一個名為 is 的函數
New<struct name>()。此函數為每個定義的字段返回一個具有默認值的新對象。
值得注意的例外,對于從匿名結構創建的對象,可以在聲明時指定字段的默認值。IE
obj := struct {
one string
two int
}{
"default value for one",
2,
}
- 2 回答
- 0 關注
- 141 瀏覽
添加回答
舉報