ĺćĺăçšĺĽăŞç¨ŽéĄăŽtype
ă¨ăăŚGoăŤčż˝ĺ ăăăă¨ăććĄăăăă¨ćăăžăă 䝼ä¸ăŽäžăŻăprotobufăŽäžăăĺç¨ăăăăŽă§ăă
type SearchRequest int
var (
SearchRequestUNIVERSAL SearchRequest = 0 // UNIVERSAL
SearchRequestWEB SearchRequest = 1 // WEB
SearchRequestIMAGES SearchRequest = 2 // IMAGES
SearchRequestLOCAL SearchRequest = 3 // LOCAL
SearchRequestNEWS SearchRequest = 4 // NEWS
SearchRequestPRODUCTS SearchRequest = 5 // PRODUCTS
SearchRequestVIDEO SearchRequest = 6 // VIDEO
)
type SearchRequest string
var (
SearchRequestUNIVERSAL SearchRequest = "UNIVERSAL"
SearchRequestWEB SearchRequest = "WEB"
SearchRequestIMAGES SearchRequest = "IMAGES"
SearchRequestLOCAL SearchRequest = "LOCAL"
SearchRequestNEWS SearchRequest = "NEWS"
SearchRequestPRODUCTS SearchRequest = "PRODUCTS"
SearchRequestVIDEO SearchRequest = "VIDEO"
)
// IsValid has to be called everywhere input happens, or you risk bad data - no guarantees
func (sr SearchRequest) IsValid() bool {
switch sr {
case SearchRequestUNIVERSAL, SearchRequestWEB...:
return true
}
return false
}
enum SearchRequest int {
0 // UNIVERSAL
1 // WEB
2 // IMAGES
3 // LOCAL
4 // NEWS
5 // PRODUCTS
6 // VIDEO
}
enum SearchRequest string {
"UNIVERSAL"
"WEB"
"IMAGES"
"LOCAL"
"NEWS"
"PRODUCTS"
"VIDEO"
}
ăăŽăăżăźăłăŻĺĺăŤä¸čŹçă§ăăăăăçšĺĽăŞĺ¤§ćĺă¨ĺ°ćĺăĺşĺĽăăĺż čŚăăăăăłăźăăčŞăżăăăăŞăă¨ćăăžăă ĺŽčŁ 幤ă§ăŻă大é¨ĺăŽăąăźăšăăłăłăă¤ăŤćăŤăă§ăăŻă§ăăă¨ćăăžăăăăŽä¸ăŤăŻăäťćĽăă§ăŤçşçăăŚăăăăŽăăăă°ăăťăźä¸ĺŻč˝ă§ăăăăé大ăŞăăŹăźăăŞăăĺż čŚăŞăăŽăăăăžăă
SearchRequest(99)
ăžăăŻSearchRequest("MOBILEAPP")
ăĺŽčĄăăăă¨ă匨ăăăăŽăŻä˝ăăăăžăăă çžĺ¨ăŽĺéżçăŤăŻăăŞăăˇă§ăłă使ç¨ăăŚă¨ăŻăšăăźăăăăŚăăŞăĺăä˝ćăăăă¨ăĺŤăžăăžăăăăăăŤăăăçľćăŽăłăźăă使ç¨ăăŤăăăŞăăă¨ăăăăăăžăăenum
ăĺŽčŁ
ăăăă¨ă§ăăăăŤçšĺĽăŞăąăźăˇăłă°ăĺż
čŚăŤăŞăă¨ăŻćăăŞăă 誰ăănil
ăćĺšăŤăăăĺ ´ĺăŻăĺćĺăăă¤ăłăżăźă¨ăăŚĺŽçžŠăăĺż
čŚăăăăžăăć§ćăŤă¤ăăŚăŻĺźˇăćčŚăŻăăăžăăă ăăăŻăăžăăăĺŻč˝ć§ăăăăçć çłťăŤăăŠăšăŽĺ˝ąéżăä¸ăăă¨ç§ăŻäżĄăăŚăăžăă
@ derekparker ďź19412ă§Go2ććĄăčĄăăăăŽč°čŤăăăăžă
äťćĽăŽĺăăŤăăăčŞăżăžăăăăăăăŻćĺšăŞĺăŤçŚçšăĺ˝ăŚăŚăăăăă§ăăăăŻćĺšăŞĺăŽĺ¤ăŤçŚçšăĺ˝ăŚăŚăăžăă ăăśăăăăŻăăŽććĄăŽăľăăťăăă§ăăăäťćĽGoăŤĺ Ľăăăă¨ăă§ăăĺăˇăšăă ă¸ăŽăăăťăŠĺşçŻĺ˛ăŞĺ¤ć´ă§ăăăăžăăă
ĺćĺăŻăăăšăŚăŽĺăĺăă§ăăăăĄă˝ăăăŤăăŁăŚăăăăăŤé˘éŁäťăăăăĺ¤ăăăĺč¨ĺăŽçšćŽăŞăąăźăšă§ăă 確ăăŤăăăŁă¨ăżă¤ăăăăăĺăĺšćă ă¨ăŤăăăăăăŻăŠăĄăăä¸ćšă§ăăăĺč¨ăżă¤ăăŻăăĺ¤ăăŽć šć ăăŤăăźăăĺč¨ăżă¤ăă§ăăăăăăăŤăăăžăăă ăăăăŤăăăGo1äşćć§ĺĽç´ăŽăăăGo2ăžă§ä˝ă辡ăăăžăăăăăăăŽććĄăŻăĺ°ăŞăă¨ăăć°ăăăăźăŻăźăăĺż čŚăŤăŞăăăăăăăăăĺăĺ Ľăăăăĺ ´ĺă§ăă
ĺĺăŤĺ Źĺšłă§ăăăăăăăŽććĄăŻăŠăĄăăäşćć§ăŽĺćăŤéĺăăŚăăžăăă ĺč¨ăżă¤ăăŻGo1ăŤčż˝ĺ ăăăŤăŻă大ăăăăăă¨ăăćčŚăăăăžăăă ăăŽĺ ´ĺăăăŽććĄăŻăGo2ăŽĺ ¨éĄĺă¸ăŽčśłăăăă¨ăŞăĺŻč˝ć§ăŽăă貴éăŞä¸éçšă§ăă
ăăăăŻä¸Ąćšă¨ăăčĺĽĺă¨ăăŚăăă使ç¨ăăŚćĺšăŞGo1ăłăźăăĺŁăć°ăăăăźăŻăźăăĺż čŚă¨ăăžă
ç§ăŻăăăĺéżă§ăăă¨ćăăžă
ć°ăăč¨čŞćŠč˝ăŤăŻă誏ĺžĺăŽăăăŚăźăšăąăźăšăĺż čŚă§ăă ăăšăŚăŽč¨čŞćŠč˝ăäžżĺŠă§ăăăă誰ăăăăăććĄăăžăăă ĺéĄăŻăč¨čŞăč¤éăŤăăăăšăŚăŽäşşăŤć°ăăćŚĺżľăĺŚăśăă¨ăčŚćąăăăă¨ăćŁĺ˝ĺăăăŽăŤĺĺăŤĺ˝šçŤă¤ăăŠăăă§ăă ăăă§ăŽčŞŹĺžĺăŽăăăŚăźăšăąăźăšăŻä˝ă§ăăďź äşşă ăŻăăăăăŠăŽăăăŤä˝żç¨ăăžăăďź ăă¨ăă°ăäşşă ăŻćĺšăŞĺćĺ¤ăŽăťăăăĺ垊ĺŚçă§ăăăă¨ăćĺž ăăžăăďźăăăăăŞăăăŠăŽăăăŤăăăĺŽčĄăăžăăďź ăăŽććĄăŻăä¸é¨ăŽăšă¤ăăăŤăăăŠăŤăăŽăąăźăšăčż˝ĺ ăăăă¨ăĺéżă§ăă䝼ä¸ăŽăă¨ăăăžăăďź
çžĺ¨ăŽGoă§ĺćăć¸ăć Łç¨çăŞćšćłăŻćŹĄăŽă¨ăăă§ăă
type SearchRequest int
const (
Universal SearchRequest = iota
Web
Images
Local
News
Products
Video
)
ăăăŤăŻăORďźedďźćźçŽĺ|
ă使ç¨ďźă§ăăăăŠă°ăç°ĄĺăŤä˝ćă§ăăă¨ăăĺŠçšăăăăžăă
type SearchRequest int
const (
Universal SearchRequest = 1 << iota
Web
Images
Local
News
Products
Video
)
ăăźăŻăźăenum
ăĺ°ĺ
Ľăăă¨ăăăźăŻăźăă大ĺš
ăŤçăăŞăăă¨ăŻăăăăžăăă
ĺćĺă§ăŻăŞă@ md2perpe ă
`` `čĄă
ăăăąăźă¸ăĄă¤ăł
蟸ĺ
Ľ ďź
ăfmtă
ďźă
func mainďźďź{
SearchRequestintă¨ĺ
Ľĺăăžă
constďź
Universal SearchRequest = iota
ăŚă§ă
ďźă
const (
Another SearchRequest = iota
Foo
)
fmt.Println("Should be false: ", (Web == Foo))
// Prints: "Should be false: true"
}
`` ``
ç§ăŻ@derekperkinsăŤĺŽĺ ¨ăŤĺćăăžăăGoăŤăŻä¸ç´ĺ¸ć°ă¨ăăŚĺćĺăĺż čŚă§ăă ăăăăŠăŽăăăŤčŚăăăăŻăăăăžăăăăGo1ăŽăŹăŠăšăŽĺŽśăĺŁăăăŤăăăčĄăăă¨ăă§ăăăŽă§ăŻăŞăăă¨ćăăžăă
@ md2perpe iota
ăŻăĺćĺăŤă˘ăăăźăăăăăăŽé常ăŤéăăăćšćłă§ăăăéăăăçśćłă§ăăžăćŠč˝ăăžăă
int
ăĺż
čŚă§ăćĺĺăžăăŻĺĽăŽĺă襨ăĺż
čŚăăăă¨ăăăŤăăăăŻĺ¤é¨ăăŠă°ă§é常ăŤä¸čŹçă§ăăă iota
ăŻćŠč˝ăăžăăă ĺ¤é¨/ăăźăżăăźăščĄ¨çžă¨ç
§ĺăăĺ ´ĺăŻă iota
ăŻä˝żç¨ăăžăăăăăăŻăă˝ăźăšăłăźăă§ăŽé ĺşäťăăéčŚă§ăăă丌ăšćżăăă¨ăăźăżăŽć´ĺć§ăŽĺéĄăçşçăăăăă§ăă
ăăăŻăăłăźăăçăăăăăăŽäžżĺŠăŞĺéĄă ăă§ăŻăăăžăăă ăăăŻăäťćĽăŽč¨čŞă§ăŻĺźˇĺśă§ăăŞăćšćłă§ăăźăżăŽć´ĺć§ăĺŻč˝ăŤăăććĄă§ăă
@ianlancetaylor
ăă¨ăă°ăäşşă ăŻćĺšăŞĺćĺ¤ăŽăťăăăĺ垊ĺŚçă§ăăăă¨ăćĺž ăăžăăďźăăăăăŞăăăŠăŽăăăŤăăăĺŽčĄăăžăăďź
@bepăčż°ăšăăăăŤăăăăŻç˘şăăŞăŚăźăšăąăźăšă ă¨ćăăžăă ĺ垊ăŻć¨ćşăŽGoăŤăźăăŽăăăŤčŚăăĺŽçžŠăăăé ĺşă§ăŤăźăăăă¨ćăăžăă
for i, val := range SearchRequest {
...
}
Goăiota䝼ĺ¤ăŽăăŽăčż˝ĺ ăăĺ ´ĺăăăŽćçšă§äťŁć°çăăźăżĺăčż˝ĺ ăăŚăżăžăăăďź
ĺŽçžŠé ĺşăŤĺžăŁăŚé ĺşäťăăćĄĺźľăăprotobufăŽäžăŤĺžăă¨ăăăŁăźăŤăăŽăăăŠăŤăĺ¤ăŻćĺăŤĺŽçžŠăăăăăŁăźăŤăăŤăŞăă¨ćăăžăă
@bepăăăťăŠäžżĺŠă§ăŻăăăžăăăă揥ăŽăăšăŚăŽăăăăăŁăĺĺžă§ăăžăă
package main
var SearchRequests []SearchRequest
type SearchRequest struct{ name string }
func (req SearchRequest) String() string { return req.name }
func Request(name string) SearchRequest {
req := SearchRequest{name}
SearchRequests = append(SearchRequests, req)
return req
}
var (
Universal = Request("Universal")
Web = Request("Web")
Another = Request("Another")
Foo = Request("Foo")
)
func main() {
fmt.Println("Should be false: ", (Web == Foo))
fmt.Println("Should be true: ", (Web == Web))
for i, req := range SearchRequests {
fmt.Println(i, req)
}
}
ăłăłăă¤ăŤćăŤăă§ăăŻăăăĺćĺăŻčŻăčăă§ăŻăŞăă¨ćăăžăă ç§ăŻäťăăăăăťă¨ăăŠăăă¨äżĄăăŚăăžăă ç§ăŽć¨čŤăŻ
ĺ ¨ä˝ă¨ăăŚăç§ăŤă¨ăŁăŚăŻĺˇ¨ĺ¤§ăŞ-1ă§ăă ä˝ăčż˝ĺ ăăŞăă ăă§ăŻăăăžăăă ăăăŻçŠćĽľçăŤçăă
Goă§ăŽçžĺ¨ăŽĺćĺăŽĺŽčŁ ăŻé常ăŤç°Ąĺă§ăĺĺăŞăłăłăă¤ăŤćăŽăă§ăăŻăćäžăăŚăăă¨ćăăžăă ĺŽéăŤăŻăĺşćŹçăŞăăżăźăłăăăăłă°ăĺăăăă税ăŽRustĺćĺăćĺž ăăŚăăžăăăGo1ăŽäżč¨źăç ´ăăăĺŻč˝ć§ăăăăžăă
ĺćĺăŻĺč¨ĺăŽçšćŽăŞăąăźăšă§ăăăä¸čŹçăŞçĽćľăŻăă¤ăłăżăźăă§ă¤ăšă使ç¨ăăŚĺč¨ĺăăˇăăĽăŹăźăăăĺż čŚăăăăăăçăăŻćăăăŤhttps://play.golang.org/p/1BvOakvbj2ă§ăă
ďźć確ă§ăŞăĺ ´ĺďźăŻăăăăăŻĺčŤă§ăăĺ¤ĺ ¸çăŞăăă°ăŠăăźăŽăăćšă§ăŻăç§ăŻ1ă¤é˘ăăŚăăžăďźă
çé˘çŽăŞčŠąă§ăăăăăŽăšăŹăăă§čŞŹćăăăŚăăćŠč˝ăŤă¤ăăŚăŻăăăă¤ăăŽčż˝ĺ ăŽăăźăŤă彚çŤăĄăžăă
ăšăăŞăłăŹăźăăźăŤă¨ĺć§ăŤăăăŹăłă¸ăŁăźăăăźăŤăŻăä¸č¨ă§ăŞăłăŻăăăłăźăă§Iter
é˘ć°ăŤç¸ĺ˝ăăăăŽăçćă§ăăžăă
{BinaryăText} {MarshalerăUnmarshaler}ăŽĺŽčŁ ăçćăăŚăăăăăŻăźăŻçľçąă§ăŽé俥ă厚ćăŤăăăă¨ăă§ăăžăă
ăăžăŤă¨ăŚă彚çŤă¤ăăŽăăăŞĺ°ăăŞăăŽăăăăăăăă¨ç˘şäżĄăăŚăăžăă
ă¤ăłăżăźăă§ă¤ăšă§ăˇăăĽăŹăźăăăăĺč¨ăżă¤ăăŽĺžšĺşçăŞăă§ăăŻăŽăăăŽăăă¤ăăŽć¤ćť/ăŞăłăżăźăăźăŤăăăăžăă ăąăźăšăćŹ č˝ăăŚăăĺ ´ĺăăĺćĺŽăăăŚăăŞăçĄĺšăŞĺŽć°ă使ç¨ăăăŚăăĺ ´ĺăŤéçĽăăiotaĺćĺăăŞăççąăŻăăăžăăďźăăăăă0䝼ĺ¤ăŽăăŽăĺ ąĺăăĺż čŚăăăăžăăďźďźă
č¨čŞăĺ¤ć´ăăŞăăŚăăăăŽé˘ă§ăŻç˘şăăŤćšĺăŽä˝ĺ°ăăăăžăă
ĺćĺăŻăăă§ăŤç˘şçŤăăăŚăăĺăˇăšăă ăčŁĺŽăăžăă ăăŽĺˇăŽĺ¤ăăŽäžă示ăăŚăăăăăŤăĺćĺăŽć§ćčŚç´ ăŻăă§ăŤĺĺ¨ăăŚăăžăă ăăŁăăŤăăăĺ¤ăăŽăăŞăăăŁăăżă¤ăăŤĺşăĽăăŚć§çŻăăăéŤăŹăăŤăŽć˝čąĄĺă§ăăăăăŤăĺćĺăĺăćšćłă§ć§çŻăăĺż čŚăăăăžăă äşşéăŻĺ˛ć ˘ă§ä¸ĺ¨ç¨ă§çŠĺżăăĺ¤ăăŽă§ăĺćĺăŽăăăŞăĄăŤăăşă ăŻäşşéăŽăăă°ăŠăăźăăăă°ăŠăăłă°ă¨ăŠăźăć¸ăăăŽăŤĺ˝šçŤăĄăžăă
@bepç§ăŻăăŞăăŽ3ă¤ăŽăă¤ăłăăăšăŚăŤĺ寞ăăŞăăă°ăŞăăžăăă GoăŽć Łç¨çăŞĺćĺăŻCăŽĺćĺăŤé常ăŤäźźăŚăăăćĺšăŞĺ¤ăŽĺ垊ăăŞăăćĺĺă¸ăŽčŞĺĺ¤ćăăŞăăĺż ăăăć確ăŞIDăăăăžăăă
ĺ垊ăŻäžżĺŠă§ăăăăťă¨ăăŠăŽĺ ´ĺăĺ垊ăĺż
čŚăŞĺ ´ĺăŻăćĺă¨ćĺžăŽĺ¤ăŽĺŽć°ăĺŽçžŠăăăŽăéŠĺă§ăă iota
ăŻčŞĺçăŤéĺť1ă¤ăŤăŞăăăăć°ăăĺ¤ăčż˝ĺ ăăă¨ăăŤć´ć°ăĺż
čŚă¨ăăŞăćšćłă§ăăăčĄăăă¨ăă§ăăžăă č¨čŞăľăăźăăćĺłăŽăăéăăçăçśćłăŻăĺćĺăŽĺ¤ăéŁçśăăŚăăŞăĺ ´ĺă§ăă
ćĺĺă¸ăŽčŞĺĺ¤ćăŻĺ°ăăŞĺ¤ăŤăăăžăăăçšăŤăăŽććĄă§ăŻăćĺĺĺ¤ăŻintĺ¤ăŤĺŻžĺżăăăăăŤč¨čż°ăăĺż čŚăăăăăăćĺĺĺ¤ăŽé ĺăčŞĺă§ć示çăŤć¸ăčžźăăă¨ă§ĺžăăăăĄăŞăăăŻăťă¨ăăŠăăăžăăă ĺĽăŽććĄă§ăŻăăă䝼ä¸ăŽäžĄĺ¤ăăăăăăăăžăăăăĺ¤ć°ĺăćĺĺ襨çžăŤĺŻžĺżăăăăă¨ăŤăŻćŹ çšăăăăžăă
ćĺžăŤăăŻăŁăăă¨ăăă˘ă¤ăăłăăŁăăŁăŻăăžăŁăăäžżĺŠăŞćŠč˝ă§ăăăăŠăăăăăăăăžăăă ĺćĺăŻăăă¨ăă°HaskellăŽăăăŤĺč¨ĺă§ăŻăăăžăăă ăăăăŻĺĺäťăăŽć°ĺă§ăă ăă¨ăă°ăĺćĺăăăŠă°ĺ¤ă¨ăăŚä˝żç¨ăăăŽăä¸čŹçă§ăă ăă¨ăă°ă ReadWriteMode = ReadMode | WriteMode
ăćă¤ăă¨ăă§ăăăăăŻäžżĺŠăŞăă¨ă§ăă äťăŽĺ¤ă使ç¨ăăăă¨ăĺŻč˝ă§ăăăă¨ăă°ă DefaultMode = ReadMode
ă使ç¨ăăĺ ´ĺăăăăžăă ăăăăŤăăă誰ăăconst DefaultMode = ReadMode
ăć¸ăăŽăéťć˘ă§ăăăăăŞćšćłăŻăăăžăăă ĺĽăŽĺŽŁč¨ă§ăăăçşçăăăă¨ăčŚćąăăăă¨ăŻăăŠăŽăăăŞçŽçăŤĺ˝šçŤăĄăžăăďź
@bepç§ăŻăăŞăăŽ3ă¤ăŽăă¤ăłăăăšăŚăŤĺ寞ăăŞăăă°ăŞăăžăăă GoăŽć Łç¨çăŞĺćĺăŻCăŽĺćĺăŤé常ăŤäźźăŚăăăćĺšăŞĺ¤ăŽĺ垊ăăŞăăćĺĺă¸ăŽčŞĺĺ¤ćăăŞăăĺż ăăăć確ăŞIDăăăăžăăă
@alercah ăăăŽidomatic Go
ăăăăăăăĺĺŠăŽč°čŤăă¨ăăŚč°čŤăŤĺźăčžźăžăŞăă§ăă ăăă GoăŤăŻçľăżčžźăżăŽĺćĺăăŞăăăăĺĺ¨ăăŞăidomăŤă¤ăăŚčŠąăăă¨ăŻăťă¨ăăŠćĺłăăăăžăăă
GoăŻăăăĺŞăăC / C ++ăžăăŻăăĺéˇć§ăŽä˝ăJavaăŤăŞăăăăŤć§çŻăăăŚăăăăăĺžč
ă¨ćŻčźăăćšăçăŤăăŞăŁăŚăăžăă ăžăăJavaăŤăŻEnum type
ăçľăżčžźăžăăŚăăžăďźăJavaăăă°ăŠăăłă°č¨čŞăŽĺćĺăŻăäťăŽč¨čŞăŽĺćĺăăăăŻăăăŤĺźˇĺă§ăăăďźďź https ďź//docs.oracle.com/javase/tutorial/java
ăăăŚăăăŻăăăŤĺźˇĺăŞé¨ĺăăŤĺćă§ăăŞăăăăăăžăăăăJava Enum
ăżă¤ăăŤăŻăç§ăčż°ăšă3ă¤ăŽćŠč˝ăăšăŚăăăăžăă
GoăŻăăăšăŞă ă§ăˇăłăăŤăŞăŠă§ăăăăăŽćšćłăçśćăăăŤăŻăăç¨ĺşŚăŽĺŚĽĺăĺż
čŚă§ăăă¨ăăč°čŤăç解ă§ăăžăăăăŽăšăŹăăă§ăŻăăăŽç¨ŽăŽĺä˝ăŽăăăăźăŞĺéżçăăăă¤ăčŚăžăăăă iota
ăŽăťăăă§ăă
ĺćă¨čŞĺćĺĺĺ¤ćăŻăăçćăăăćŠč˝ăŽčŻăĺčŁă§ăă ăă§ăŤăăă¤ăăŽč§Łćąşçăăăăžăă JavaĺćĺăŻăĺžćĽăŽĺćĺă¨ĺč¨ĺăŽä¸éăŤăăăăŽă§ăă ă§ăăăăç§ăŽćčŚă§ăŻăăăŻćŞăč¨čŞăăśă¤ăłă§ăă
ć
Łç¨çăŞGoăŤă¤ăăŚăŽăă¨ăéčŚă§ăăă誰ăă粞éăăŚăăă¨ăăççąă ăă§ăč¨čŞXăăč¨čŞYăŤăăšăŚăŽćŠč˝ăăłăăźăă埡ăççąăŻăăăăžăăă
Javaăăă°ăŠăăłă°č¨čŞăŽĺćĺăŻăäťăŽč¨čŞăŽĺćĺăăăăŻăăăŤĺźˇĺă§ă
ăăăŻ10ĺš´ĺăŤçĺŽă§ăăă ĺč¨ăżă¤ăă¨ăăżăźăłăăăăłă°ăĺŠç¨ăăRustăŽOptionăŽćć°ăŽăźăăłăšăĺŽčŁ ăĺç §ăăŚăă ăăă
ć Łç¨çăŞGoăŤă¤ăăŚăŽăă¨ăéčŚă§ăăă誰ăă粞éăăŚăăă¨ăăççąă ăă§ăč¨čŞXăăč¨čŞYăŤăăšăŚăŽćŠč˝ăăłăăźăă埡ăççąăŻăăăăžăăă
ăăă§ä¸ăăăăçľčŤăŤăăžăĺćăăŞăăă¨ăŤćł¨ćăăŚăă ăăăăăăă_ć Łç¨çăŞGo_ă使ç¨ăăă¨ăGoăŻč¸čĄçăŞĺ°ĺş§ăŤăŞăăžăă ăťă¨ăăŠăŽă˝ăăăŚă§ă˘ăăă°ăŠăăłă°ăŻăăŞăéĺąă§ĺŽç¨çă§ăă ăăăŚăĺ¤ăăŽĺ ´ĺăăăăăăăŚăłăăăŻăšăŤĺćĺăĺ Ľĺăăĺż čŚăăăăžă...
//go:generate enumerator Foo,Bar
ä¸ĺşŚć¸ăăăăŠăă§ăĺŠç¨ă§ăăžăă äžăŻć˝čąĄçă§ăăăă¨ăŤćł¨ćăăŚăă ăăă
@bepĺ ăŽăłăĄăłăăčŞăżééăăă¨ćăăžăă ăGoidiomaticenumsăăŻăăżă¤ăFoo int + const-decl + iotaă使ç¨ăăçžĺ¨ăŽć§é ăćăăŻăă§ăăăăăććĄăăŚăăăăŽăŻăăšăŚć Łç¨çă§ăŻăŞăăă¨ăŻč¨ăăžăăă
@rsc Go2
ăŠăăŤăŤé˘ăăŚăŻăăăăŻăăŽććĄăćĺşăăç§ăŽççąăŤĺăăŚăăžăă ďź19412ăŻăĺŽĺ
¨ăŞĺč¨ĺăŽććĄă§ăăăăăŻăăăă§ăŽĺç´ăŞĺćĺăŽććĄăăă埡ĺăŞăšăźăăźăťăăă§ăăăGo2ă§ăăă確čŞăăăă¨ćăăžăă ç§ăŽčŚč§Łă§ăŻăäťĺž5ĺš´éă§Go2ăçşçăăĺŻč˝ć§ăŻé常ăŤä˝ăăăăçăćéć ă§ä˝ăăçşçăăăă¨ăćăă§ăăžăă
ć°ăăäşç´ăăźăŻăźăenum
ăŽććĄăBCăŤă¨ăŁăŚä¸ĺŻč˝ăŞĺ ´ĺăăăăĺŽĺ
¨ăŞč¨čŞçľąĺă§ăăăă¨go vet
ăŤçľăżčžźăžăăăăźăŤă§ăăăă¨ăăăăĺŽčŁ
ăăäťăŽćšćłăăăăžăă ćĺăŤčż°ăšăăăăŤăç§ăŻć§ćăŤăă ăăŁăŚăăžăăăăć°ăăăŚăźăśăźăŤĺ¤§ăăŞčŞçĽçč˛ ć
ăĺ ăăăă¨ăŞăăäťćĽăŽGoăŤäžĄĺ¤ăŽăăčż˝ĺ ăŤăŞăă¨ĺźˇă俥ăăŚăăžăă
Go 2ăăĺă§ăŻăć°ăăăăźăŻăźăă使ç¨ăăăă¨ăŻă§ăăžăăăăăăŻăGo1ăŽäşćć§äżč¨źăŤćăăăŤéĺăăăă¨ăŤăŞăăžăă
ĺäşşçăŤăŻăĺćĺăăăăŤč¨ăă°ăĺč¨ĺăGo 2ăŤă¤ăăŚăă誏ĺžĺăŽăăč°čŤăŻăžă čŚăŚăăžăăăç§ăŻăăăăă辡ăăĺžăŞăă¨č¨ăŁăŚăăăăă§ăŻăăăžăăă ăăăăGoč¨čŞăŽçŽć¨ăŽ1ă¤ăŻăč¨čŞăŽĺç´ăă§ăă č¨čŞćŠč˝ă彚çŤă¤ă ăă§ăŻĺĺă§ăŻăăăžăăă ăăšăŚăŽč¨čŞćŠč˝ăŻäžżĺŠă§ă-ăăăă彚ăŤçŤăăŞăăŁăĺ ´ĺă誰ăăăăăććĄăăžăăă§ăăă GoăŤćŠč˝ăčż˝ĺ ăăăŤăŻăăăŽćŠč˝ăŤăč¨čŞăč¤éăŤăă䞥ĺ¤ăŽăăĺĺăŞčŞŹĺžĺăŽăăăŚăźăšăąăźăšăĺż čŚă§ăă ćă誏ĺžĺăŽăăăŚăźăšăąăźăšăŻăăăŽćŠč˝ăŞăă§ăŻč¨čż°ă§ăăŞăăłăźăă§ăăĺ°ăŞăă¨ăäťă§ăŻăé常ăŤĺäťăŞăă¨ăŻăăăžăăă
Goă§ĺćĺăčŚăŚăżăăă§ăă ćĺšăŞĺ ĽĺăŽć°ăéăăăŚăăĺ ŹéAPIăĺśéăăăďźăžăăŻă˘ăăŞăŽĺ¤é¨ă§ĺśéăăăAPIă使ç¨ăăăďźă¨ĺ¸¸ăŤćăŁăŚăăžăă ç§ăŤă¨ăŁăŚăăăăŻĺćĺăŤćéŠăŞĺ ´ćă§ăă
ăă¨ăă°ăăă税ăŽRPCăšăżă¤ăŤăŽAPIăŤćĽçśăăćĺŽăăăä¸éŁăŽă˘ăŻăˇă§ăł/ăŞăăłăźăăćă¤ăŻăŠă¤ă˘ăłăă˘ăăŞăä˝ćăăăă¨ăă§ăăžăă ăăăŤăŻconst
ă使ç¨ă§ăăžăăăçĄĺšăŞăłăźăăé俥ăăăă¨ă匨ăăăăŽăŻä˝ăăăăžăăă
ăăŽĺ寞ĺ´ă§ăĺăAPIăŽăľăźăăźĺ´ăč¨čż°ăăŚăăĺ ´ĺăŻăĺćĺăŤswitchăšăăźăăĄăłăăč¨čż°ă§ăăă¨äžżĺŠă§ăăăăăŤăăăăłăłăă¤ăŠă¨ăŠăźďźăžăăŻĺ°ăŞăă¨ăăăă¤ăăŽgo vet
ďźăăšăăźăăăžăă default:
ăĺĺ¨ăăĺ ´ĺďźă
ăăďźĺćĺďźăŻăSwiftăćŹĺ˝ăŤćŁăăăŁăé ĺă ă¨ćăăžăă
ăă税ăŽRPCăšăżă¤ăŤăŽAPIăŤćĽçśăăćĺŽăăăä¸éŁăŽă˘ăŻăˇă§ăł/ăŞăăłăźăăćă¤ăŻăŠă¤ă˘ăłăă˘ăăŞăä˝ćăăŚăăĺŻč˝ć§ăăăăžăă ăăăŤăŻconstsă使ç¨ă§ăăžăăăçĄĺšăŞăłăźăăé俥ăăăă¨ă匨ăăăăŽăŻä˝ăăăăžăăă
ăăăŻăĺćĺă§č§ŁćąşăăăăăŽćăăăă˘ă¤ăă˘ă§ăă ăăăŻăRPCăçŞçśĺ¤ąćăăăăăăźăŤăăăŻćăŤăăźăżăčŞăżĺăăŞăăŞăŁăăăăĺŻč˝ć§ăăăăăăć°ăăĺćĺ¤ăčż˝ĺ ă§ăăŞăăă¨ăćĺłăăžăă proto3ăçćăăăĺćĺăłăźăăăä¸ćăŞăłăźăăĺ¤ăăľăăźăăăăă¨ăčŚćąăăççąăŻăăăăčŚçăŤăăŁăŚĺŚăă ćč¨ă§ăăăăă§ăďź proto2ăăăăăŠăŽăăăŤč§Łćąşăăăă¨ćŻčźăăŚăă ăăă ă˘ăăŞăąăźăˇă§ăłăăăŽăąăźăšăéŠĺăŤĺŚçă§ăăăăăŤăăĺż čŚăăăăžăă
@Meroviusç§ăŻăăŞăăŽćčŚăĺ°éăăžăăăä¸ĺŻ§ăŤĺ寞ăăžăă ćĺšăŞĺ¤ăŽăżă使ç¨ăăăŚăăăă¨ă確čŞăăăă¨ăŻăĺćĺăŽä¸ťăŞç¨éăŽ1ă¤ă§ăă
ĺćĺăŻăăšăŚăŽçśćłăŤéŠăăŚăăăăă§ăŻăăăžăăăăä¸é¨ăŽçśćłăŤăŻćéŠă§ăă éŠĺăŞăăźă¸ă§ăłçŽĄçă¨ă¨ăŠăźĺŚçăŤăăăăťă¨ăăŠăŽçśćłă§ć°ăăĺ¤ăĺŚçă§ăăăŻăă§ăă
uh-ohçść ăŽĺ¤é¨ăăăťăšăĺŚçăăăŤăŻă確ăăŤĺż é ă§ăă
ĺćĺďźăžăăŻăăä¸čŹçă§äžżĺŠăŞĺč¨ĺďźă使ç¨ăăă¨ăăłăłăă¤ăŠăźă埡ĺśçăŤĺŚçăăĺč¨/ĺćĺăŤć示çăŞăä¸ćăŞăăłăźăăčż˝ĺ ă§ăăžăďźăžăăŻăĺŽčĄă§ăăăŽăăăšăŚăŽĺ ´ĺăŻăă¨ăłăăă¤ăłăă§ăăŽçśćłăĺŽĺ ¨ăŤĺŚçăăžăďźăă°ăŤč¨é˛ăăŚă揥ăŽăŞăŻă¨ăšăăŤé˛ăżăžăďźă
寞ĺŚăăŞăăă°ăŞăăŞăXăŽăąăźăšăăăăă¨ăăăăŁăŚăăĺ ´ĺăăăăťăšĺ ă§ĺč¨ăżă¤ăăŽćšăäžżĺŠă§ăă ĺ°ăăXăŽĺ ´ĺă玥çăŻéŁăăăăăžăăăă大ăăXăŽĺ ´ĺăçšăŤăŞăăĄăŻăżăŞăłă°ăŽéăŤăăłăłăă¤ăŠăç§ăŤćéł´ăă¤ăăŚăăăăă¨ăŤćčŹăăžăă
APIăŽĺ˘çăčśăăŚä˝żç¨ăăăąăźăšăŻĺ°ăŞăăćĄĺźľć§ăŽĺ´é˘ă§ĺ¸¸ăŤčޤăăçŻăĺż čŚăăăăžăăăASTăŽăăăŤăćŹĺ˝ăŤXăŽ1ă¤ăŤăăăŞăĺžăŞăăăŽăăăăăŽćçšă§çŻĺ˛ăăťăźç˘şĺŽăăŚăăăéąăăŽĺ¤ďźăŤăŹăłăăźăˇăšăă ăŽé¸ćăžă§ďźă
@jimmyfrascheç§ăŻăăŞăăŤććĽăä¸ăăăăăăăžăăăăASTăŻä¸ăăžăăă ććłăŻé˛ĺăăžăă äťćĽăŻçĄĺšă§ăăĺŻč˝ć§ăăăăććĽăŻĺŽĺ ¨ăŤćĺšă§ăăĺŻč˝ć§ăăăăASTăŤć°ăăăăźăăżă¤ăăčż˝ĺ ăăĺż čŚăăăĺŻč˝ć§ăăăăžăă ăłăłăă¤ăŠăźă§ăă§ăăŻăăăsum-typeă使ç¨ăăă¨ăăăăŻç ´ćăŞăă§ăŻä¸ĺŻč˝ă§ăă
ăăăŚăăŞăăăăçŁĺťăă§ăăŻăŤăăŁăŚč§Łćąşă§ăăŞăăŽăăăăăžăăă ĺžšĺşçăŞăąăźăšăŽĺŽĺ ¨ăŤéŠĺăŞéçăă§ăăŻăćäžăă掾éçăŞäżŽĺžŠăŽĺŻč˝ć§ăç§ăŤä¸ăăžăă
ăľăźăăźAPIç¨ăŽăŻăŠă¤ă˘ăłăăŽĺŽčŁ ă§éăă§ăăžăă ä¸é¨ăŽĺźć°ă¨ćťăĺ¤ăŻăAPIăŽĺćĺă§ăă ĺč¨45ăŽĺćĺăăăăžăă
ç§ăŽĺ ´ĺăç°ăŞăĺćĺăŽĺ¤ăŽä¸é¨ăĺăĺĺăĺ
ąćăăŚăăăăăGoă§ĺćĺŽć°ă使ç¨ăăăă¨ăŻă§ăăžăăă 䝼ä¸ăŽäžă§ăŻă Destroy
ă2ĺ襨示ăăăăăăăłăłăă¤ăŠăźăŻă¨ăŠăźDestroy redeclared in this block
ăçşčĄăăžăă
type TaskAllowedOperations int
const (
_ TaskAllowedOperations = iota
Cancel
Destroy
)
type OnNormalExit int
const (
_ OnNormalExit = iota
Destroy
Restart
)
ăăăăŁăŚăç§ăŻĺĽăŽčĄ¨çžăčăĺşăĺż čŚăăăăžăă çćłçăŤăŻăIDEăçšĺŽăŽăżă¤ăăŽĺŻč˝ăŞĺ¤ă襨示ă§ăăăăăŤăăŚăăŻăŠă¤ă˘ăłăăŽăŚăźăśăźăăăăăăç°ĄĺăŤä˝żç¨ă§ăăăăăŤăăăăŽă§ăă Goă§ä¸ç´ĺ¸ć°ă¨ăăŚĺćĺăćăŁăŚăăăă¨ăŻăăăćşčśłăăăă§ăăăă
@kongslundĺŽĺ ¨ăŞĺŽčŁ ă§ăŻăŞăăă¨ăŻăăăŁăŚăăžăăăčĺłăŽăăăłăźăă¸ă§ăăŹăźăżăźăä˝ćăăžăăă ĺ厣č¨ăŽä¸ăŽăłăĄăłăă§ĺćĺă厣č¨ăăă ăă§ăćŽăăŻçćăăăžăă
// ENUM(_, Cancel, Destroy)
type TaskAllowedOperations int
// ENUM(_, Destroy, Restart)
type OnNormalExit int
çćăăžă
const(
_ TaskAllowedOperations = iota
TaskAllowedOperationsCancel
TaskAllowedOperationsDestroy
)
const(
_ OnNormalExit = iota
OnNormalExitDestroy
OnNormalExitRestart
)
ăăčŻăé¨ĺăŻăăăŹăăŁăăŻăšăé¤ĺ¤ăăString()
ăĄă˝ăăăçćăă "Destroy"
ăTaskAllowedOperations
ăžăăŻOnNormalExit
$ă¨ăăŚč§Łćă§ăăăă¨ă§ăă
https://github.com/abice/go-enum
ăăŠă°ăéŞéăŤăŞăăŞăăăăŤăŞăăžăă...
ĺäşşçăŤăŻăĺćĺăgoč¨čŞăŽä¸é¨ă¨ăăŚĺŤăžăăŚăăŞăăă¨ăć°ăŤăăžăăăăăăŻăăăŽĺéĄăŤĺŻžăăç§ăŽćŹćĽăŽćčŚă§ăŻăăăžăăă§ăăă ćĺăŤčĄăŁăă¨ăăăŞăăăăŞăŤĺ¤ăăŽé¸ćăăŞăăăăŽăăŤă¤ăăŚăç§ăŻăă°ăă°ćˇˇäšąăăĺĺżăăăžăăă ăăăăăăŽč¨čŞă使ç¨ăăĺžăŻăăăăé ĺŽăăăˇăłăăŤăăăăăŽăŻç´ ć´ăăăăă¨ă§ăăä˝ăçšĺĽăŞăă¨ăĺż čŚăŞĺ ´ĺăŻăäťăŽčŞ°ăăăăăĺż čŚă¨ăăŚăăŚăăăŽçšĺŽăŽĺéĄă解湺ăăăăăŽç´ ć´ăăăăăăąăźă¸ăä˝ćăăĺŻč˝ć§ăăăăžăă ç§ăŽčŁéăŤćŽé ˇăŞéăäżă¤ă
ăăŽč°čŤă§ăŻĺ¤ăăŽćĺšăŞçšăć辡ăăăŚăăăĺćĺăŽăľăăźăăŤčłćăăăăŽăăăă°ăĺ寞ăăăăŽăăăăžăďźĺ°ăŞăă¨ăăććĄăăĺćĺăă¨ăŻä˝ăăŤă¤ăăŚä˝ăăčż°ăšăŚăăéăďźă ç§ăŽăăăŤçŞăĺşăăăă¤ăăŽăă¨ďź
ĺ°ĺ ĽäžďźäťćĽăŽGoăŽĺćĺďźăŻčŞ¤č§ŁăćăĺŻč˝ć§ăăăăžăăăăŽăłăźăăŻçćăăăăăŽăăăŞGoăłăźăăćä˝ćĽă§ä˝ćăăäşşăŻăťă¨ăăŠăăžăăă ĺŽéăććĄďźč¨čŞăľăăźăă§ăŠăŽăăăŤčŚăăăďźăŻăGoă§ĺŽéăŤčĄăŁăŚăăăă¨ăŤăŻăăăŤčżăăăŽă§ăă
@jediorangeăŻăSwiftăăćŹĺ˝ăŤćŁăăďźĺćĺďźăă¨čż°ăšăŚăăžăăăăă§ăăSwiftăŽĺćĺăŻéŠăăťăŠč¤éăŞçŁă§ăăăăăăă税éĄăŽćŚĺżľă桡ĺ¨ăăŚăăžăă Goă§ăŻăäťăŽč¨čŞćŠč˝ă¨éč¤ăăăĄăŤăăşă ăćĺłçăŤĺéżăăăăŽčŚčżăă¨ăăŚăăăĺ¤ăăŽç´äş¤ć§ăĺĺžăăžăă ăăă°ăŠăăźăŤă¨ăŁăŚăŽçľćăŻă使ç¨ăăćŠč˝ďźĺćĺăžăăŻăŻăŠăšăĺč¨ĺďźĺĺ¨ăăĺ ´ĺďźăăžăăŻă¤ăłăżăźăă§ăźăšďźăćąşĺŽăăĺż čŚăăŞăăă¨ă§ăă
č¨čŞćŠč˝ăŽćç¨ć§ăŤé˘ăă@ianlancetaylorăŽććăŻăčť˝čŚăăŚăŻăŞăăžăăă č¨ĺ¤§ăŞć°ăŽäžżĺŠăŞćŠč˝ăăăăžăă ĺéĄăŻăăŠăăćŹĺ˝ăŤčŞŹĺžĺăăăăăłăšăăŤčŚĺă䞥ĺ¤ăăăăă¨ăăăă¨ă§ăďźč¨čŞăé常ăŤč¤éă§ăčŞăżăăăăăăăŚĺŽčŁ ăé常ăŤč¤éă§ăďźă
ăă¤ăăźăŞçšă¨ăăŚăGoăŽiotaĺŽçžŠĺŽć°ăŻăăăĄăăintăŤĺśéăăăŚăăžăăă ăăăăĺŽć°ă§ăăéăăăăăăŻďźăăăăĺĺăäťăăăăďźĺşćŹĺďźfloatăbooleansăstringsăĺŤăďźhttpsďź//play.golang.org/p/lhd3jqqg5zďźăŤĺśéăăăžăă
@meroviusăŻăďźéçďźďźăłăłăă¤ăŤćăă§ăăŻăŽĺśéăŤă¤ăăŚčŻăçšă示ăăŚăăžăă ćĄĺźľă§ăăŞăĺćăăćĄĺźľăćăžăăăăžăăŻćĺž ăăăďźéˇĺŻżĺ˝ăŽAPIăľăźăă§ăšăŻćéăŽçľéă¨ă¨ăăŤé˛ĺăăďźçśćłăŤéŠăăŚăăăăŠăăăŻé常ăŤçăăăă§ăă
ăăăŻăăăŽććĄăŤé˘ăăăăă¤ăăŽčłŞĺăŤç§ăăăăăăžăăćĺłăŽăăé˛ćŠăéăăĺăŤăçăăĺż čŚăăăă¨ç§ăŻäżĄăăŚăăžăă
1ďźććĄăăăĺćĺăŽĺŽéăŽćĺž ăŻä˝ă§ăăďź @bepăŻăĺćĺŻč˝ć§ăĺ垊ĺŻč˝ć§ăćĺĺ襨çžăă˘ă¤ăăłăăŁăăŁăŤă¤ăăŚč¨ĺăăŚăăžăă ăăŁă¨ăăăžăăďź ĺ°ăŞăă§ăăďź
2ďź1ďźăŽăŞăšăăćłĺŽăăă¨ăĺćĺăćĄĺźľă§ăăžăăďź ăăăăăŞăăăŠăŽăăăŤďź ďźĺăăăăąăźă¸ă§ăăďźĺĽăŽăăăąăźă¸ă§ăăďźďźćĄĺźľă§ăăŞăĺ ´ĺăŻăăŠăăăŚă§ăăďź ăŞăăăăĺŽéăŤăŻĺéĄăŤăŞăăŞăăŽă§ăăďź
3ďźĺĺ犺éďźSwiftă§ăŻăĺćĺăŤăăŁăŚć°ăăĺĺ犺éăĺ°ĺ Ľăăăžăă ĺĺ犺éĺăăŠăă§ăçš°ăčżăĺż čŚăăŞăăăăŤăéčŚăŞćŠć§ďźć§ćçłčĄŁć§ćăĺć¨čŤďźăăăăžăă ăă¨ăă°ăĺćĺćăŽĺćĺ¤ăŽĺ ´ĺăéŠĺăŞăłăłăăăšăă§ăŻăMonth.JanuaryďźăăăŤćŞăăă¨ăŤMyPackage.Month.Januaryďźă§ăŻăŞă.Januaryă¨ć¸ăăă¨ăă§ăăžăă ĺćĺĺĺ犺éăĺż čŚă§ăăďź ăăăăăŞăăĺćĺĺĺ犺éăŻăŠăŽăăăŤćĄĺźľăăăžăăďź ăăăĺŽéăŤćŠč˝ăăăăŤăŻăăŠăŽăăăŞçłčĄŁć§ćăĺż čŚă§ăăďź
4ďźĺćĺ¤ăŻĺŽć°ă§ăăďź ä¸ĺ¤ăŽĺ¤ďź
5ďźĺćĺ¤ăŤĺŻžăăŚăŠăŽăăăŞćä˝ăĺŻč˝ă§ăăďźăă¨ăă°ăĺ垊䝼ĺ¤ďźďź1ă¤ăĺăŤăăă1ă¤ăĺžăăŤç§ťĺă§ăăžăăďź čż˝ĺ ăŽçľăżčžźăżé˘ć°ăžăăŻćźçŽĺăĺż čŚă§ăăďź ďźăăšăŚăŽĺ垊ăé çŞăŤčĄăăăă¨ăŻéăăžăăďźă ćĺžăŽĺćĺ¤ăčś ăăŚĺé˛ăăă¨ăŠăăŞăăžăăďź ăăăŻăŠăłăżă¤ă ă¨ăŠăźă§ăăďź
ďźhttps://github.com/golang/go/issues/19814#issuecomment-322771922ăŽćŹĄăŽćŽľč˝ăŽč¨ăĺăă俎ćŁăăžăăă䝼ä¸ăŽĺčŞăŽä¸ćł¨ćăŞé¸ćăŤă¤ăăŚă芍ăłăăžăăďź
ăăăăŽčłŞĺăŤĺŽéăŤçăăăă¨ăăŞăéăăăăŽććĄăŻçĄćĺłă§ăďźăčŞĺăăăăăăă¨ăĺŽčĄăăĺćĺă揲ăăăăŻććĄă§ăŻăăăžăăďźă
ăăăăŽčłŞĺăŤĺŽéăŤçăăăă¨ăăŞăéăăăăŽććĄăŻçĄćĺłă§ă
@griesemerăăŞăăŤăŻç´ ć´ăăăăă¤ăłă/質ĺăăăăžăăăăăăăŽčłŞĺăŤçăăŞăăă¨ă§ăăŽććĄăŤçĄćĺłăŞăŠăăŤăäťăăăă¨ăŻăťă¨ăăŠćĺłăăăăžăăă ăăŽăăă¸ă§ăŻăă§ăŻč˛˘çŽăŽĺşćşăéŤăč¨ĺŽăăăŚăăžăăăăłăłăă¤ăŠăźă§ĺ壍ĺˇăĺĺžăăăŤăä˝ăăććĄăă§ăăăăăŤăăĺż čŚăăăăžăăăžăăććĄăŻăĺŽčŁ ăŽćşĺăă§ăăŚăăăč¨č¨ă§ăăĺż čŚăŻăăăžăăă
ĺ°ĺ ĽäžďźäťćĽăŽGoăŽĺćĺďźăŻčŞ¤č§ŁăćăĺŻč˝ć§ăăăăžăăăăŽăłăźăăŻçćăăăăăŽăăăŞGoăłăźăăćä˝ćĽă§ä˝ćăăäşşăŻăťă¨ăăŠăăžăăă ĺŽéăććĄďźč¨čŞăľăăźăă§ăŠăŽăăăŤčŚăăăďźăŻăGoă§ĺŽéăŤčĄăŁăŚăăăă¨ăŤăŻăăăŤčżăăăŽă§ăă
@griesemerç§ăŻĺ寞ăăŞăăă°ăŞăăžăăă Goĺ¤ć°ĺă大ćĺăŽăžăžăŤăăăšăă§ăŻăăăžăăă§ăăăăGoăłăăĽăăăŁă§ĺ°ćŹăăŚăăGoogle礞ĺĄăć¸ăăăç§ăŽććĄă¨ăťăźĺăăăăŤčŚăăćć¸ăăŽăłăźăăăăăăăăăžăă ăłăźăăăźăšă§ăĺăăăżăźăłăŤĺžăăă¨ăăăăăăžăă ăăăŻăGoogle CloudGoăŠă¤ăăŠăŞăăćç˛ăăäžă§ăă
// ACLRole is the level of access to grant.
type ACLRole string
const (
RoleOwner ACLRole = "OWNER"
RoleReader ACLRole = "READER"
RoleWriter ACLRole = "WRITER"
)
ăăăăŻč¤ć°ăŽĺ ´ćă§ĺăć§ćă使ç¨ăăžăă
https://github.com/GoogleCloudPlatform/google-cloud-go/blob/master/bigquery/table.go#L78 -L116
https://github.com/GoogleCloudPlatform/google-cloud-go/blob/master/storage/acl.go#L27 -L49
iota
ă使ç¨ăăŚăĺéĄăăŞăĺ ´ĺăŤăçŠäşăăăç°Ąć˝ăŤăăćšćłăŤă¤ăăŚăŻăĺžă§ăăă¤ăăŽč°čŤăăăăžăăăăăăŻăăăčŞä˝ă§ĺ˝šçŤă¤ĺŻč˝ć§ăăăăžăăăăŚăźăšăąăźăšăŻéăăăŚăăžăă 芳細ăŤă¤ăăŚăŻă䝼ĺăŽăłăĄăłăăĺç
§ăăŚăă ăăă https://github.com/golang/go/issues/19814#issuecomment -290948187
@bepăă§ă˘ăă¤ăłă; ä¸ćł¨ćăŞč¨čăŽé¸ćăă芍ăłăăžăă ăăä¸ĺşŚčŠŚăăŚăżăžăăăăäťĺăŻăä¸č¨ăŽćĺžăŽćŽľč˝ăăăä¸ĺŻ§ăă¤ć確ăŤčĄ¨çžăăŚăă ăăă
ćć瞊ăŞé˛ćŠăéăăăăăăăŤăăăăăŤăăăŽććĄăŽććĄč ăŻăĺćĺăŽéčŚăŞćŠč˝ă§ăăă¨ĺ˝źăă俥ăăŚăăăă¨ăŤă¤ăăŚăăĺ°ăćŁç˘şăŤăăăă¨ăăĺż čŚăăăă¨ćăăžăďźăă¨ăă°ăhttpsďź// githubăŽăăă¤ăăŽčłŞĺăŤçăăăă¨ăŤăăŁăŚďźă com / golang / go / issues / 19814ďźissuecomment-322752526ďźă ăăăžă§ăŽč°čŤăăăćăžăăćŠč˝ăŻăăŞăćź çśă¨ăă誏ćăăăŚăăžăăă
ăăăăćĺăŽăšăăăă¨ăăŚăć˘ĺăŽGoăďźĺ¤§ĺš ăŤďźä¸čśłăăĺćĺăĺéĄăăăčŻă/ăăéă/ăăć確ăŤč§ŁćąşăăćšćłăŞăŠă示ăăąăźăšăšăżăăŁăăăă¨é常ăŤäžżĺŠă§ăăGopherconă§ăŽ@rscăŽĺŞăăčŹćźăĺç §ăăŚăă ăăă Go2č¨čŞăŽĺ¤ć´ăŤé˘ăăŚă
@derekperkinsĺćĺă§ăŻăŞăăăăăăŽďźĺćĺŽăăăďźĺŽć°ĺŽçžŠă¨ĺźăłăžăă ç§ăăĄăŽćčŚăŽç¸éăŻăăĺćĺăăä˝ă§ăăăăŤă¤ăăŚăŽç°ăŞăç解ăŤăăăăŽă ă¨ćăăžăăăăăăŁăŚăä¸č¨ăŽç§ăŽčłŞĺă§ăă
ďźç§ăŽäťĽĺăŽhttps://github.com/golang/go/issues/19814#issuecomment-322774830ăŻăăăĄăă@derekparkeră§ăŻăŞă@derekperkinsăŤčĄăĺż čŚăăăăžăăăăŞăźăăłăłăăŞăźăăŻç§ăćăĄč˛ ăăăžăăăďź
@derekperkinsăŽăłăĄăłăăăĺ¤ćăăç§čŞčşŤăŽčłŞĺăŤé¨ĺçăŤçăăă¨ăGoăŽăĺćĺăăŤăŻĺ°ăŞăă¨ă揥ăŽĺ質ăĺż čŚă§ăăăă¨ăăăăăžăă
ăăăŻćŁăăă§ăăďź ăăăăăŞăăăăŽăŞăšăăŤäťăŤä˝ăčż˝ĺ ăăĺż čŚăăăăžăăďź
ăăŞăăŽčłŞĺăŻăăšăŚčŻăăăŽă§ăă
ććĄăăăĺćĺăŽĺŽéăŽćĺž ăŻä˝ă§ăăďź @bepăŻăĺćĺŻč˝ć§ăĺ垊ĺŻč˝ć§ăćĺĺ襨çžăă˘ă¤ăăłăăŁăăŁăŤă¤ăăŚč¨ĺăăŚăăžăă ăăŁă¨ăăăžăăďź ĺ°ăŞăă§ăăďź
1ďźăŽăŞăšăăćłĺŽăăă¨ăĺćĺăćĄĺźľă§ăăžăăďź ăăăăăŞăăăŠăŽăăăŤďź ďźĺăăăăąăźă¸ă§ăăďźĺĽăŽăăăąăźă¸ă§ăăďźďźćĄĺźľă§ăăŞăĺ ´ĺăŻăăŠăăăŚă§ăăďź ăŞăăăăĺŽéăŤăŻĺéĄăŤăŞăăŞăăŽă§ăăďź
揥ăŽ2ă¤ăŽççąăăăĺćĺăćĄĺźľă§ăăă¨ăŻćăăžăăă
ĺĺ犺éďźSwiftă§ăŻăĺćĺăŤăăŁăŚć°ăăĺĺ犺éăĺ°ĺ Ľăăăžăă ĺĺ犺éĺăăŠăă§ăçš°ăčżăĺż čŚăăŞăăăăŤăéčŚăŞćŠć§ďźć§ćçłčĄŁć§ćăĺć¨čŤďźăăăăžăă ăă¨ăă°ăĺćĺćăŽĺćĺ¤ăŽĺ ´ĺăéŠĺăŞăłăłăăăšăă§ăŻăMonth.JanuaryďźăăăŤćŞăăă¨ăŤMyPackage.Month.Januaryďźă§ăŻăŞă.Januaryă¨ć¸ăăă¨ăă§ăăžăă ĺćĺĺĺ犺éăĺż čŚă§ăăďź ăăăăăŞăăĺćĺĺĺ犺éăŻăŠăŽăăăŤćĄĺźľăăăžăăďź ăăăĺŽéăŤćŠč˝ăăăăŤăŻăăŠăŽăăăŞçłčĄŁć§ćăĺż čŚă§ăăďź
ç§ăč¨ĺăăăăšăŚăŽäžăŻĺĺăŽćĽé čžă§ăăăăăĺĺ犺éăăŠăŽăăăŤçşçăăăăç解ăăŚăăžăă 誰ăăĺĺ犺éăčż˝ĺ ăăăă¨ăŤă¤ăăŚĺźˇăćăăŚăĺ寞ăŻăăžăăăăăăăŻăăŽććĄăŽçŻĺ˛ĺ¤ă ă¨ćăăžăă ăăŹăăŁăăŻăšăŻçžĺ¨ăŽăˇăšăă ăŤăăžăéŠĺăăžăă
ĺćĺ¤ăŻĺŽć°ă§ăăďź ä¸ĺ¤ăŽĺ¤ďź
ç§ăŻĺŽć°ă ă¨ćăăžăă
ĺćĺ¤ăŤĺŻžăăŚăŠăŽăăăŞç¨ŽéĄăŽćä˝ăĺŻč˝ă§ăďźăă¨ăă°ăĺ垊䝼ĺ¤ăŤďźďź1ă¤ăĺăŤăăă1ă¤ăĺžăăŤç§ťĺă§ăăžăăďź čż˝ĺ ăŽçľăżčžźăżé˘ć°ăžăăŻćźçŽĺăĺż čŚă§ăăďź ďźăăšăŚăŽĺ垊ăé çŞăŤčĄăăăă¨ăŻéăăžăăďźă ćĺžăŽĺćĺ¤ăčś ăăŚĺé˛ăăă¨ăŠăăŞăăžăăďź ăăăŻăŠăłăżă¤ă ă¨ăŠăźă§ăăďź
ăšăŠă¤ăš/é ĺďźăăăă§ăŻăŞăďźăŽć¨ćşăŽGoăăŠăŻăăŁăšăăăăŠăŤăăŤăăžăă ĺćĺ¤ăŻă厣č¨ăŽé ĺşăŤĺşăĽăăŚĺ垊ĺŻč˝ăŤăŞăăžăă ĺ°ăŞăă¨ăăçŻĺ˛ăŽăľăăźăăăăăžăă ă¤ăłăăăŻăšăäťăăŚĺćĺăŤă˘ăŻăťăšă§ăăăăăŤăăăă¨ăŻéżăăŚăăžăăăăăăŤă¤ăăŚăŻĺźˇăćăăŚăăžăăă ăăăăľăăźăăăŞăă¨ăć˝ĺ¨çăŞăŠăłăżă¤ă ă¨ăŠăźăăŞăăŞăăŻăă§ăă
ĺćĺăŤçĄĺšăŞĺ¤ăĺ˛ăĺ˝ăŚăă¨ăç´ćĽĺ˛ăĺ˝ăŚă§ăăăă¨ĺăăŁăšăă§ăăăă¨ăć°ăăăŠăłăżă¤ă ă¨ăŠăźďźăăăăŻďźďźăçşçăăžăă
ăăăćŁăăčŚç´ăăă¨ăććĄăăĺćĺ¤ăŻĺäťăĺŽć°ăŽăăăŤăŞăăžăďźĺŽć°ăŽăăăŤăăŚăźăśăźĺŽçžŠăŽĺŽć°ĺ¤ăćă¤ĺ ´ĺăăăăžăďźăă揥ăŽăăăŤăŞăăžăă
ăăăŻćŁăăă¨ćăăžăăďź ďźăăăŻăč¨čŞăĺćĺăŤĺŻžăăŚćĄç¨ăăăç´45ĺš´ĺăŤPascalăŤăăŁăŚéćăăăĺ¤ĺ ¸çăŞă˘ăăăźăă¨ä¸č´ăăžăďźă
ăŻăăăžăăŤăăăç§ăććĄăăŚăăăă¨ă§ăă
switchăšăăźăăĄăłăăŻăŠăă§ăăďź ććĄăŽä¸ťăŞć¨é˛ĺăŽ1ă¤ă§ăăAIUIă
ĺşćŹçăŤä˝ă§ăăŞăłăŤă§ăăăŽă§ăĺćĺăăŞăłăŤă§ăăăă¨ăćĺłăăŚăăă¨ćăăžăă ăšă¤ăăăŽĺćĺăĺŽĺ ¨ăŤćşăăăŚăăŞăĺ ´ĺăswiftăŤă¨ăŠăźăçşçăăăŽăŻĺĽ˝ăă§ăăăçŁĺťăĺŚçă§ăăžăă
@jediorangeç§ăŻçšăŤăďźććĄăĺŽĺ ¨ăŞçść ăŤäżă¤ăăăŤďźĺžšĺşçăŞăă§ăăŻăĺż čŚăăŠăăă¨ăăăăăŽćĺžăŽé¨ĺăŽčłŞĺăŤč¨ĺăăŚăăžăăă ăăĄăăăăăăăăăŻĺŽĺ ¨ăŤčŻăçăă§ăă
ăăŽĺéĄăŽĺ
ăŽăĄăăťăźă¸ăŻăĺćŠă¨ăăŚprotobufsăŤč¨ĺăăŚăăžăă ăăă§ç¤şăăăťăăłăăŁăŻăšă§ăŻăprotobuf-compilerăäťťćăŽĺćĺăŤĺŻžăăŚčż˝ĺ ăŽăčŞčăăăŞăăăąăźăšăä˝ćăăĺż
čŚăăăăă¨ăć示çăŤĺźˇčŞżăăăă¨ćăăžăďźčĄçŞăé˛ăăăăŽĺĺăăłă°ăŞăłă°ăšăăźă ăćĺłăăžăďźă ăžăăăăłăźăăăăenum-valueăăłăłăă¤ăŤăăăçŻĺ˛ĺ
ăŤăŞăĺ ´ĺăŻăenumă使ç¨ăăŚçćăăăć§é ä˝ăŤăăŁăźăŤăăčż˝ĺ ăăĺż
čŚăăăăžăďźăăă§ăăä˝ăăăŽćšćłă§ĺĺăăăłă°ăŞăłă°ăăžăďźă çžĺ¨javaă§čĄăăăŚăăăŽă¨ĺăă§ăă ăžăăŻăăăăăă int
ăĺźăçśă使ç¨ăăžăă
@Meroviusç§ăŽćĺăŽććĄă§ăŻăććĄăŽä¸ťăŞĺćŠă¨ăăŚă§ăŻăŞăăäžă¨ăăŚprotobufsăŤă¤ăăŚč¨ĺăăŚăăžăăă ăăŞăăŻăăŽçľąĺăŤă¤ăăŚčŻăçšăćăĄĺşăăžăă ăăăăç´äş¤ăăć¸ĺżľă¨ăăŚćąăăăăšăă ă¨ćăăžăă ç§ăčŚăăťă¨ăăŠăŽăłăźăăŻăçćăăăprotobufăżă¤ăăăă˘ăăŞăŹăăŤăŽć§é ä˝ăŤĺ¤ćăăăăăăĺ é¨ă§ä˝żç¨ăăăă¨ă弽ăżăžăă protobufăŻĺ¤ć´ăăăŤçśčĄă§ăăă˘ăăŞăŽä˝ćč ăăăăăGoĺćĺăŤĺ¤ćăăăĺ ´ĺăŻăĺ¤ćăăăťăšă§çşçăăă¨ăă¸ăąăźăšăĺŚçă§ăăăă¨ăŻç§ăŤăŻçăŤăăŞăŁăŚăăžăă
@derekperkinsăăŽäťăŽčłŞĺďź
ć示çăŤĺćĺăăăŚăăŞăĺćĺăŽĺ¤ć°ăŽăźăĺ¤ăŻä˝ă§ăăďź ä¸čŹçăŤăźăăŤăăăă¨ăŻă§ăăŞăă¨ćăăžăďźăăăŤăăăăĄă˘ăŞăŽĺ˛ăĺ˝ăŚ/ĺćĺăč¤éăŤăŞăăžăďźă
ĺćĺ¤ă使ç¨ăăŚéĺŽçăŞćźçŽăĺŽčĄă§ăăžăăďź ăă¨ăă°ăPascalďźç§ăä¸ĺşŚăăă°ăŠă ăăă¨ăăŽăă¨ă§ăăďźă§ăŻăéŠăăšăăă¨ăŤă1ăčś ăăăšăăăă§ĺ垊ăăĺż čŚăăăăžăăăăžăăĺćĺ¤ăč¨çŽăăăĺ ´ĺăăăăžăăă
ĺ垊ăŤé˘ăăŚăgo generateăçćăăăĺ垊ďźăăăłstringifyďźăŽăľăăźăăĺĺă§ăŞăăŽăŻăŞăă§ăăďź
ć示çăŤĺćĺăăăŚăăŞăĺćĺăŽĺ¤ć°ăŽăźăĺ¤ăŻä˝ă§ăăďź ä¸čŹçăŤăźăăŤăăăă¨ăŻă§ăăŞăă¨ćăăžăďźăăăŤăăăăĄă˘ăŞăŽĺ˛ăĺ˝ăŚ/ĺćĺăč¤éăŤăŞăăžăďźă
ćĺăŽććĄă§čż°ăšăăăăŤăăăăŻéŁăăćąşćăŽ1ă¤ă§ăă ĺŽçžŠăŽé ĺşăĺ垊ăŤă¨ăŁăŚéčŚă§ăăĺ ´ĺăćĺăŤĺŽçžŠăăăĺ¤ăăăăŠăŤăăŤăăăă¨ăĺć§ăŤçăŤăăŞăŁăŚăăă¨ćăăžăă
ĺćĺ¤ă使ç¨ăăŚéĺŽçăŞćźçŽăĺŽčĄă§ăăžăăďź ăă¨ăă°ăPascalďźç§ăä¸ĺşŚăăă°ăŠă ăăă¨ăăŽăă¨ă§ăăďźă§ăŻăéŠăăšăăă¨ăŤă1ăčś ăăăšăăăă§ĺ垊ăăĺż čŚăăăăžăăăăžăăĺćĺ¤ăč¨çŽăăăĺ ´ĺăăăăžăăă
ć°ĺ¤ăăźăšăŽĺćĺă¨ćĺĺăăźăšăŽĺćĺăŽăŠăĄăă使ç¨ăăŚăăĺ ´ĺă§ăăăăšăŚăŽĺćĺăŤćéťăŽăźăăăźăšăŽă¤ăłăăăŻăšăăăăă¨ăćĺłăăžăăďź ç§ăăľăăźăăăăŚăărange
ăŽĺ垊ăŽăżăŤĺžĺăăă¤ăłăăăŻăšăăźăšă§ăŻăŞăăă¨ăĺăŤčż°ăšăççąăŻăé
ĺăăăăăŞăŠă使ç¨ă§ăăĺşç¤ă¨ăŞăĺŽčŁ
ăĺ
ŹéăăŞăăăă§ăă ă¤ăłăăăŻăšăäťăăŚĺćĺăŤă˘ăŻăťăšăăĺż
čŚăăăă¨ăŻćăăžăăăăăăăćçă§ăăççąăăăĺ ´ĺăŻăăăăçŚć˘ăăççąăŻăŞăă¨ćăăžăă
ĺ垊ăŤé˘ăăŚăgo generateăçćăăăĺ垊ďźăăăłstringifyďźăŽăľăăźăăĺĺă§ăŞăăŽăŻăŞăă§ăăďź
ĺ垊ăŻĺäşşçăŤăŻç§ăŽä¸ťăŞăŚăźăšăąăźăšă§ăŻăăăžăăăăććĄăŤäťĺ 䞥ĺ¤ăä¸ăăă¨ćăăžăă ăăăć¨é˛čŚĺ ă§ăăĺ ´ĺăăăăăgo generate
ă§ĺĺă§ăăăă ăăăŻäžĄĺ¤ăŽĺŽĺ
¨ć§ăäżč¨źăăăŽăŤĺ˝šçŤăĄăžăăă Stringer()
ĺźć°ăŻăçăŽĺ¤ăiota
ăžăăŻint
ăăăăăŻăĺŽéăŽăĺ¤ă襨ăäťăŽăżă¤ăăŤăŞăăă¨ăĺćă¨ăăŚăăžăă ăžăă (Un)MarshalJSON
ă (Un)MarshalBinary
ă Scanner/Valuer
ăăăăłStringer
ĺ¤ăé俥ăŤä˝żç¨ăăăăă¨ă確čŞăăăăăŤä˝żç¨ăăĺŻč˝ć§ăŽăăăăŽäťăŽăˇăŞă˘ăŤĺćšćłăçćăăĺż
čŚăăăăžăă Goăĺ
é¨ă§ä˝żç¨ăăăăŽăŻä˝ă§ăă
@griesemerĺ°ăŞăă¨ăĺ¤ăŽčż˝ĺ /ĺé¤ăŤé˘ăăŚăĺćĺăŽćĄĺźľć§ăŤă¤ăăŚăŽăăŞăăŽčłŞĺăŤĺŽĺ ¨ăŤăŻçăăŚăăŞăăŁăă¨ćăăžăă ăăăă硨éăăč˝ĺăćă¤ăă¨ăŻăăăŽććĄăŽéčŚăŞé¨ĺă§ăă
@Meroviusăăhttps://github.com/golang/go/issues/19814#issuecomment-290969864
ĺćĺăŽăťăăăĺ¤ć´ăăăăăăąăźă¸ăŻăăăšăŚăŽă¤ăłăăźăżăźăčŞĺçăă¤ĺźˇĺśçăŤç ´ĺŁăăžă
ăăăäťăŽç ´ĺŁçăŞAPIăŽĺ¤ć´ă¨ăŠăŽăăăŤéăăŽăăăăăžăăă ăżă¤ăăé˘ć°ăăžăăŻé˘ć°ăŽăˇă°ăăăŁăĺ¤ć´ăăăĺ ´ĺă¨ĺăăăăŤăBCăéŠĺăŤĺŚçăăăŽăŻăăăąăźă¸ăŽä˝ćč 揥珏ă§ăă
ĺŽčŁ ăŽčŚłçšăăăŻăăăăŠăŤăĺ¤ăall-bits-zeroă§ăŻăŞăĺăăľăăźăăăăă¨ăŻé常ăŤč¤éă§ăă äťćĽăăăŽăăăŞăżă¤ăăŻăăăžăăă ăăŽăăăŞćŠč˝ăčŚćąăăăă¨ăŻăăăŽčăăŤĺŻžăăĺ°ă¨ăăŚć°ăăăăŞăăă°ăŞăăŞăă§ăăăă
č¨čŞăăăŁăăŤăä˝ćăăăăăŤmake
ăĺż
čŚă¨ăăĺŻä¸ăŽççąăŻăăăŁăăŤăżă¤ăăŤĺŻžăăŚăăŽćŠč˝ăäżćăăăăă§ăă ăă䝼ĺ¤ăŽĺ ´ĺă make
ăŻăŞăăˇă§ăłă§ăăăăăŁăăŤăăăăĄăľă¤ăşăč¨ĺŽăăăăć˘ĺăŽĺ¤ć°ăŤć°ăăăăŁăăŤăĺ˛ăĺ˝ăŚăăăăŤăŽăżä˝żç¨ăăăžăă
@derekperkinsäťăŽăťă¨ăăŠăŽAPIăŽĺ¤ć´ăŻă掾éçăŞäżŽĺžŠăŽăăăŤčŞżć´ă§ăăžăă Russ CoxăŽčŞŹćăčŞăăă¨ă埡ăăĺ§ăăăžăăăăăŤăăăĺ¤ăăŽăă¨ăé常ăŤć確ăŤăŞăăžăă
ăŞăźăăłĺćĺďźçžĺ¨ăŽconst + iotaăłăłăšăăŠăŻăăŞăŠďźăŻăďźăă¨ăă°ďźaďźć°ăăĺ¤ă使ç¨ăăăŤĺŽçžŠăăăbďźć°ăăĺ¤ăĺŚçăăăăăŤéäžĺé˘äżăć´ć°ăăăcďźĺ¤ăŽä˝żç¨ăéĺ§ăăăă¨ăŤăăă掾éçăŞäżŽĺžŠăĺŻč˝ăŤăăžăă ăžăăŻăĺ¤ăĺé¤ăăĺ ´ĺăŻăaďźĺ¤ăŽä˝żç¨ăĺć˘ăăbďźĺé¤ăăĺ¤ăŤč¨ĺăăŞăăăăŤéäžĺé˘äżăć´ć°ăăcďźĺ¤ăĺé¤ăăžăă
éăăďźăłăłăă¤ăŠăźăçś˛çž ć§ăăă§ăăŻăăďźĺćĺă§ăŻăăăăŻä¸ĺŻč˝ă§ăă ĺ¤ăŽĺŚçăĺé¤ăăăăć°ăăĺ¤ăĺŽçžŠăăă¨ăăłăłăă¤ăŠăźăŻăšă¤ăăăąăźăšăŽćŹ č˝ăŤă¤ăăŚăăăŤćĺĽăč¨ăăžăă ăžăăĺ¤ăĺŽçžŠăăĺăŤĺ¤ăŽĺŚçăčż˝ĺ ăăăă¨ăŻă§ăăžăăă
ĺéĄăŻăĺă ăŽĺ¤ć´ăĺŁăăŚăăă¨čŚăŞăăă¨ăă§ăăăăŠăăă§ăŻăŞăďźăăăăŻĺçŹă§ă§ăăďźăĺŁăăŞăĺćŁăłăźăăăźăšä¸ă§ĺŁăăŞăä¸éŁăŽăłăăăăăăăăŠăăăŤă¤ăăŚă§ăă
ĺŽčŁ ăŽčŚłçšăăăŻăăăăŠăŤăĺ¤ăall-bits-zeroă§ăŻăŞăĺăăľăăźăăăăă¨ăŻé常ăŤč¤éă§ăă äťćĽăăăŽăăăŞăżă¤ăăŻăăăžăăă ăăŽăăăŞćŠč˝ăčŚćąăăăă¨ăŻăăăŽčăăŤĺŻžăăĺ°ă¨ăăŚć°ăăăăŞăăă°ăŞăăŞăă§ăăăă
@ianlancetaylorĺŽĺ ¨ăŞĺŽčŁ ăŤă¤ăăŚčŠąăăă¨ăŻçľśĺŻžăŤă§ăăžăăăăĺćĺă0ăăźăšăŽé ĺă¨ăăŚĺŽčŁ ăăăŚăăĺ ´ĺďź @griesemerăćŻćăăŚăăăăăŤčăăăžăďźăă¤ăłăăăŻăšă¨ăăŚăŽ0ăŻćŹĄăŽăăăŤăŞăăžăă ăall-bits-zeroăăĺ źăăăă¨ăă§ăăžăă
éăăďźăłăłăă¤ăŠăźăçś˛çž ć§ăăă§ăăŻăăďźĺćĺă§ăŻăăăăŻä¸ĺŻč˝ă§ăă
@Merovius go vet
ăžăăŻ@jediorangeăŤăăŁăŚććĄăăăăăŽă¨ăłăłăă¤ăŠăŤăăŁăŚĺźˇĺśăăăăăŽă¨ĺć§ăŽăăźăŤăŤăăŁăŚçś˛çž
ć§ăăă§ăăŻăăăĺ ´ĺăăăăŻăăŞăăŽć¸ĺżľăčť˝ć¸ăăžăăďź
@derekperkins彟ăăŽć厳ć§ăŤă¤ăăŚăŻăăă§ăă 彟ăăŽćç¨ć§ăŽćŹ ĺŚăŤă¤ăăŚă§ăŻăăăžăăă ăăźă¸ă§ăłăšăăĽăźăŽĺăĺéĄăŻăé常čć Žăăăăťă¨ăăŠăŽăŚăźăšăąăźăšďźăˇăšăă ăłăźăŤăăăăăŻăźăŻăăăăłăŤăăăĄă¤ăŤĺ˝˘ĺźăĺ ąćăŞăă¸ă§ăŻăăŞăŠďźă§ăçşçăăžăă proto3ăăŞăźăăłĺćĺăĺż čŚă¨ăăproto2ăĺż čŚă¨ăăŞăăŽăŤăŻççąăăăăžăăăăăŻăĺ¤ăăŽĺć˘ă¨ăăźăżç ´ćăŽă¤ăłăˇăăłăăăĺŚăă ćč¨ă§ăă ă°ăźă°ăŤăŻăă§ăŤăăźă¸ă§ăłăšăăĽăźăéżăăăăăŤăăŞă注ćăćăŁăŚăăžăăă ç§ăŽčŚč§Łă§ăŻăăăăŠăŤăăŽăąăźăšă使ç¨ăăăŞăźăăłĺćĺăćŁăă解湺çă§ăă ăăăŚăçĄĺšăŞĺ¤ăŤĺŻžăăĺŽĺ ¨ć§ăŽä¸ťĺźľăé¤ăă°ăç§ăč¨ăăăă¨ăăăăăăăŻĺŽéăŤăŻĺ¤ăăăăźăăŤăŤăăăăăžăăă
ăăăŻč¨ăŁăŚăăç§ăŻćąşĺŽč ă§ăŻăăăžăăă
@derekperkins https://github.com/golang/go/issues/19814#issuecomment -322818206ă§ăďźăăŞăăŽčŚłçšăăďźćŹĄăŽăă¨ă確čŞăăŚăăžăă
https://github.com/golang/go/issues/19814#issuecomment -322895247ă§ă揥ăŽăăăŤč¨ăŁăŚăăžăă
ăăăŚhttps://github.com/golang/go/issues/19814#issuecomment-322903714ă§ăăăăăă硨éăăćŠč˝ăŻăăŽććĄăŽéčŚăŞé¨ĺă§ăăă¨č¨ăŁăŚăăžăă
ç§ăŻćˇˇäšąăăŚăăžăăă¤ăžăăĺ垊ăŻä¸ťčŚăŞĺćŠă§ăŻăăăžăăă ăăăŤăăăĺ°ăŞăă¨ăĺŽć°ă§ăăĺćĺ¤ăŽĺć厣č¨ăćŽăă厣č¨ăŽĺ¤ăŤćĄĺźľăăăă¨ăŻă§ăăžăăă ăăăäťăăăŞăăŻăăăă硨éăăč˝ĺăéčŚă§ăăă¨č¨ăŁăŚăăžăă ăŠăăăćĺłă§ăăďź ç˘şăăŤăăăăćĄĺźľă§ăăă¨ăăăăă§ăŻăăăžăăďźăăăŻççžă§ăďźă ăăăăŻĺ¤ć°ă§ăăďź ďźăăăăăăăăŻĺŽć°ă§ăŻăăăžăăďźă
https://github.com/golang/go/issues/19814#issuecomment -322903714ă§ăŻăĺćĺă0ăăźăšăŽé ĺă¨ăăŚĺŽčŁ ă§ăăă¨č¨ăŁăŚăăžăă ăăăŻăĺćĺ厣č¨ăă0ăăźăšăŽĺŽć°ă¤ăłăăăŻăšă§ăăĺćĺĺăŽé ĺşäťăăŞăšăă¨ă¨ăăŤć°ăăĺăĺćĺ¤ăŽé ĺďźăšăăźăšăčŞĺçăŤäşç´ăăăďźăŤĺ°ĺ Ľăăăă¨ă示ĺăăŚăăžăă ăăăŻăăŞăăćĺłăăăă¨ă§ăăďź ăăăăăŞăăăŞăĺşĺŽăľă¤ăşăŽé ĺă¨ăăăŤäź´ăĺŽć°ă¤ăłăăăŻăšăŽăŞăšăă厣č¨ăăă ăă§ĺĺă§ăŻăŞăăŽă§ăăăăďź é ĺĺ˘çăă§ăăŻăŻăĺćĺăŽçŻĺ˛ăăćĄĺźľăă§ăăŞăăă¨ăčŞĺçăŤç˘şčŞăăĺ垊ăŻăă§ăŤĺŻč˝ă§ăă
ç§ăŻä˝ăćŹ ăăŚăăžăăďź
ç§ăŻćˇˇäšąăăŚăăžăăă¤ăžăăĺ垊ăŻä¸ťčŚăŞĺćŠă§ăŻăăăžăăă
ĺćĺăĺż čŚăŞççąăŻç§čŞčşŤăŤăăăžăăă @ bepăŞăŠăăăŽăšăŹăăăŽäťăŽăŚăźăśăźăććĄăŽĺż čŚăŞé¨ĺă¨ăăŚčĄ¨çžăăŚăăăă¨ăčć ŽăŤĺ Ľăăăă¨ăăŚăăžăă
ăăăŤăăăĺ°ăŞăă¨ăĺŽć°ă§ăăĺćĺ¤ăŽĺć厣č¨ăćŽăă厣č¨ăŽĺ¤ăŤćĄĺźľăăăă¨ăŻă§ăăžăăă ăăăäťăăăŞăăŻăăăă硨éăăč˝ĺăéčŚă§ăăă¨č¨ăŁăŚăăžăă ăŠăăăćĺłă§ăăďź ç˘şăăŤăăăăćĄĺźľă§ăăă¨ăăăăă§ăŻăăăžăăďźăăăŻççžă§ăďźă ăăăăŻĺ¤ć°ă§ăăďź ďźăăăăăăăăŻĺŽć°ă§ăŻăăăžăăďźă
ç§ăăăăă硨éăăă¨č¨ăă¨ăăăăăăăŞăźăăłĺćĺă§ăăăŽăŻ@MeroviusăŽăă¤ăłăă§ăă ăăŤăćăŽĺŽć°ă§ăăăć°¸äš ăŤăăăŻăăŚăłăăăăă¨ăŻăăăžăăă
ďź19814ďźăłăĄăłăďźă§ăŻăĺćĺăŻ0ăăźăšăŽé ĺă¨ăăŚĺŽčŁ ă§ăăă¨č¨ăŁăŚăăžăă
ăăăŻă httpsďź //github.com/golang/go/issues/19814#issuecomment -322884746ă¨@ianlancetaylorăŽhttpsăŤĺşăĽăăŚăăă¤ă°ăŹăźăăčś ăăŚăčĺ°čŁă§ĺŽčŁ ăăăĺŻč˝ć§ăăăăă¨ăć¨ć¸ŹăăŚăăă ăă§ăă //github.com/golang/go/issues/19814#issuecomment -322899668
ăĺćĺ¤ă使ç¨ăăŚéĺŽçăŞćźçŽăĺŽčĄă§ăăžăăďźăă¨ăă°ăPascalďź1ĺăăă°ăŠă ăăă¨ăăćăŽăă¨ă§ăďźă§ăŻăéŠăăšăăă¨ăŤă1ăčś ăăăšăăăă§ĺ垊ăăĺż čŚăăăăžăăăăžăăĺćĺ¤ăč¨çŽăăăĺ ´ĺăăăăžăăăă
ć´ć°äťĽĺ¤ăŽĺćĺăŤĺŻžăăŚăŠăŽăăăŤč¨çťăăăăŻăăăăžăăăăăăăŁăŚăăăŽçŽčĄćźçŽă§ăĺćĺăŽĺăĄăłăăźăŤĺŽŁč¨ăŽé ĺşăŤĺşăĽăăŚćéťçăŤă¤ăłăăăŻăšăĺ˛ăĺ˝ăŚăĺż čŚăăăăăŠăăăŤă¤ăăŚăŽčłŞĺă§ăă
ĺŽčŁ ăŽčŚłçšăăăŻăăăăŠăŤăĺ¤ăall-bits-zeroă§ăŻăŞăĺăăľăăźăăăăă¨ăŻé常ăŤč¤éă§ăă äťćĽăăăŽăăăŞăżă¤ăăŻăăăžăăă ăăŽăăăŞćŠč˝ăčŚćąăăăă¨ăŻăăăŽčăăŤĺŻžăăĺ°ă¨ăăŚć°ăăăăŞăăă°ăŞăăŞăă§ăăăă
çš°ăčżăăŤăŞăăžăăăăłăłăă¤ăŠăăŠăŽăăăŤćŠč˝ăăăăăăăŞăăŽă§ăäźčŠąăçśăăăă¨ăăŚăăžăăă çľĺąăŽă¨ăăăç§ăŻćĽé˛çăŞăăŽăććĄăăăă¨ăŻăăŚăăžăăă ĺăŤčż°ăšăăăăŤăăăăăŻăč¨čŞăĺćĺăŤĺŻžăăŚćĄç¨ăăăç´45ĺš´ĺăŤPascalăŤăăŁăŚéćăăăĺ¤ĺ ¸çăŞă˘ăăăźăă¨ä¸č´ăăžăăăăăăŚăăăŻćłćĄăŤéŠĺăăžăă
čĺłă示ăăŚăă ăăŁăćšăŻăăć°čť˝ăŤăĺĺ ăă ăăă
ăă1ă¤ăŽčłŞĺăŻăăăăăŽĺćĺă使ç¨ăăŚé ĺăžăăŻăšăŠă¤ăšăŤă¤ăłăăăŻăšăäťăăăă¨ăă§ăăăăŠăăă§ăă ăšăŠă¤ăšăŻăĺćĺ->ĺ¤ăŽăăăăłă°ă襨ăé常ăŤĺšççă§ăłăłăăŻăăŞćšćłă§ăăăă¨ăĺ¤ăăăăăăčŚćąăăăă¨ăŻćŽĺżľăŞăă¨ă ă¨ćăăžăă
@derekperkinsăăăăžăăăăăăç§ăăĄďźăžăăŻĺ°ăŞăă¨ăç§ďźăćŁćšăŤćťăăŽă§ăŻăŞăăă¨ĺżé ăăŚăăžăďźăăŞăă解湺ăăăă¨ăăŚăăĺéĄăŻä˝ă§ăăďź ĺŽć°ă¨ăăăăiotaďźăăăŚćĺĺ襨çžăĺĺžăăăăăŤgo generateă使ç¨ăăďźă§çžĺ¨čĄăŁăŚăăăă¨ăăăčŻăćšćłă§č¨čż°ăăăă§ăăďź ă¤ăžăăďźăăăăďźé庌ăŤč˛ ć ă大ăăă¨ćăă襨č¨ćłăŽć§ćçłčĄŁă§ăăďź ďźăăăŻčŻăçăă§ăăăă ç解ăăăă¨ăăŚăăžăăďź
ăăŞăăŻăăăă揲ăăăăŞăčŞčşŤăŽççąăăăă¨č¨ăăžăăăăăăăăăŞăăŻăăăăŽççąăä˝ă§ăăăăăăĺ°ă誏ćăăăă¨ăă§ăăžăă ăăŞăăćĺăŤç¤şăăäžăŻç§ăŤăŻăăžăćĺłăăăăžăăăăăăăăä˝ăăćŹ ăăŚăăžăă
çžçśă§ăŻăăăžăăžăŞĺçăăćăăăŞăăăŤăăăŽććĄďźăĺćĺăďźăä˝ăćĺłăăăŽăăŤă¤ăăŚă誰ăăĺ°ăç°ăŞăç解ăćăŁăŚăăžăăăăšăŤăŤĺćĺă¨ăšăŚăŁăăĺćĺăŽéăŤăŻé常ăŤĺš ĺşăĺŻč˝ć§ăăăăžăă ăăŞăďźăžăăŻäťăŽčŞ°ăďźăććĄăăăăăŽăé常ăŤć確ăŤčŞŹćăăŞăéăďźç§ăŻĺŽčŁ ăćąăăŚăăžăăăć°ăŤçăăŚăă ăăďźăćĺłăŽăăé˛ćŠăéăăăă¨ăŻĺ°éŁă§ăăăăăŽććĄăŽăĄăŞăăăŤă¤ăăŚč°čŤăăăă¨ăăĺ°éŁă§ăă
ăăăŻçăŤăăŞăŁăŚăăžăăďź
@griesemerăăăŻĺŽĺ
¨ăŤçăŤăăŞăŁăŚăăă@ rscăGopherconă§čŠąăăŚăăééăăĺşćşăç解ăăŚăăžăă ăăŞăăŻćăăăŤç§ăăăăžă§ăăăăŻăăăŤćˇąăç解ăćăŁăŚăăžăă ďź21473ă§ăĺ˝ćăŻčŞŹĺžĺăŽăăăŚăźăšăąăźăšăăŞăăŁăăăăvarsăŽiotaăŻĺŽčŁ
ăăăŚăăŞăă¨ăăŁăăăăžăăă enum
ăćĺăăĺŤăžăăŚăăŞăăŁăăŽă¨ĺăççąă§ăăďź ăăăGoăŤäťĺ 䞥ĺ¤ăăăăăăăŠăăăŤă¤ăăŚăŽăăŞăăŽćčŚăçĽăăăă¨ćăăžăăăăăăăŞăăăŠăăăăăăťăšăéĺ§ăăžăăďź
@derekperkins https://github.com/golang/go/issues/19814#issuecomment -323144075ă§ăŽčłŞĺăŤă¤ăăŚďźĺ˝ćďźGoăŽč¨č¨ă§ăŻďźăćŻčźçĺç´ăŞďźăă¨ăă°ăPascalăžăăŻCăšăżă¤ăŤăŽďźĺćĺăŽăżăć¤č¨ăăŚăăžăăă 芳細ăăăšăŚčŚăăŚăăăăă§ăŻăăăžăăăăĺćĺăŤĺż čŚăŞčż˝ĺ ăŽćŠć˘°ăŤăŻĺĺăŞăĄăŞăăăăŞăă¨ăăćčŚăŻç˘şăăŤăăăžăăă ç§ăăĄăŻăăăăăćŹčłŞçăŤć ĺ ăŤćşăĄăä¸ĺŽăŽĺŽŁč¨ă§ăăă¨ćăăžăăă
ăăăăŽĺžćĽăŽĺćĺăŤăĺéĄăăăăžăăăăăă使ç¨ăăŚçŽčĄćźçŽăĺŽčĄăăăă¨ăŻĺŻč˝ă§ăďźăăăăŻĺăŞăć´ć°ă§ăďźăăăďźĺćĺďźçŻĺ˛ĺ¤ăăŤăŞăă¨ăŻăŠăăăćĺłă§ăăďź Goă§ăŻăăăăăŻĺăŞăĺŽć°ă§ăăăăçŻĺ˛ĺ¤ăăŻĺĺ¨ăăžăăă ăă1ă¤ăŻĺ垊ă§ăăPascalăŤăŻăĺćĺăŽĺ¤ć°ăŽĺ¤ăĺĺžăŤé˛ăăăăăŽçšĺĽăŞçľăżčžźăżé˘ć°ďźSUCCă¨PREDă ă¨ćăăžăďźăăăăžăăďźCă§ăŻ++ăžăăŻ-ăĺŽčĄăăžăďźă ăă ăăăăă§ăĺăĺéĄăçşçăăžăăćĺžăčś ăăă¨ăŠăăŞăăžăăďź++ăžăăŻPascalăŽĺçăŽSUCCă使ç¨ăăŚĺćĺ¤ăŤăžăăăforăŤăźăă§é常ăŤä¸čŹçăŞĺéĄďźă ćĺžăŤăenum厣č¨ăŻć°ăăĺăĺ°ĺ ĽăăăăŽčŚç´ ăŻenumĺ¤ă§ăă ăăăăŽĺ¤ăŤăŻĺĺďźenum厣č¨ă§ĺŽçžŠăăăŚăăĺĺďźăăăăžăăăăăăăŽĺĺăŻďźPascalăCă§ăŻďźĺă¨ĺăăšăłăźăăŤăăăžăă ăăăŻĺ°ăä¸ćşă§ăă2ă¤ăŽç°ăŞăĺćĺă厣č¨ăăĺ ´ĺă獜ĺăăăă¨ăŞăĺĺćĺăŤĺăĺćĺ¤ĺă使ç¨ă§ăăăă¨ăćĺž ăăžăăăăăăŻä¸ĺŻč˝ă§ăă ăăĄăăăGoăăăă解湺ăăžăăăăĺŽć°ĺŽŁč¨ăć°ăăĺĺ犺éăĺ°ĺ ĽăăŚăăăăăŤăŻčŚăăžăăă ăăčŻă解湺çăŻăĺćăă¨ăŤĺĺ犺éăĺ°ĺ Ľăăăă¨ă§ăăăĺćĺ¤ă使ç¨ăăăăłăŤăĺćĺĺă§äżŽéŁžăăĺż čŚăăăăăăăŻç Šăăăăă¨ă§ăă SwiftăŻăĺŻč˝ăŞĺ ´ĺăŻĺćĺăć¨ć¸Źăăăă¨ă§ăăă解湺ăăžăăăăŽĺžăăăăăĺăŤäťăăĺćĺ¤ĺă使ç¨ă§ăăžăă ăăăăăăăŻăăŞăăŽćŠć˘°ă§ăă ăăăŚćĺžăŤăćă ďźĺ¤ăăŽĺ ´ĺăăăăŞăăŻAPIă§ďźăĺćĺ厣č¨ăćĄĺźľăăĺż čŚăăăăžăă ăăăä¸ĺŻč˝ăŞĺ ´ĺďźăłăźăăććăăŚăăŞăĺ ´ĺďźăĺéĄăăăăžăă ĺŽć°ă使ç¨ăăă¨ăăăăăŽĺéĄăŻĺĺ¨ăăžăăă
ăăăăăă䝼ä¸ăŽăăŽăăăăžăă ăăăé ăŤćľŽăăśăă¨ă§ăă ćçľçăŤăăă§ăŤćăŁăŚăăç´äş¤ăăźăŤă使ç¨ăăŚGoă§ĺćĺăă¨ăăĽăŹăźăăăćšăăăă¨ĺ¤ćăăžăăă誤ăŁăĺ˛ăĺ˝ăŚăŽĺŻč˝ć§ăä˝ăăăăŤăšăżă ć´ć°ĺă¨ăć§ćçłčĄŁăŽiotaăĄăŤăăşă ďźăăăłçš°ăčżăăŽĺćĺĺźăé¤ĺ¤ăăćŠč˝ďźă§ăă
ăăăăŁăŚăç§ăŽčłŞĺďźć§ćä¸ăŽăŞăźăăźăăăăăťă¨ăăŠăŞăGoă§ăŻéŠĺăŤă¨ăăĽăŹăźăă§ăăŞăçšćŽăŞĺćĺ厣č¨ăăä˝ăĺžăăă¨ăăŚăăžăăďź ĺćĺă¨ă厣č¨ăŽĺ¤ăŤćĄĺźľă§ăăŞăĺćĺăčăăăă¨ăă§ăăžăă SwiftăŽăăăŤăĺćĺ¤ăŽč˝ĺăăăŁă¨čăăăă¨ăă§ăăžăă
ĺćăŻăGoăŽgoă¸ă§ăăŹăźăżăźă使ç¨ăăŚç°ĄĺăŤč§Łćąşă§ăăžăă ăă§ăŤăšăăŞăłăŹăźăăăăžăă ćĄĺźľăĺśéăăă¨ăAPIăŽĺ˘çăčśăăŚĺéĄăçşçăăžăă ĺćĺ¤ăŽăăĺ¤ăăŽč˝ĺďźăă¨ăă°SwiftăŽăăăŤďźăŻăĺ¤ăăŽç´äş¤ăăćŚĺżľă桡ĺăăŚăăăăăé常ăŤăăžăăăăŞăăăă§ăă Goă§ăŻăĺşćŹçăŞăăŤăăŁăłă°ăăăăŻă使ç¨ăăăă¨ă§ăăăéćă§ăăă§ăăăă
@griesemerćăăăăŽăăčżäżĄăăăă¨ăăăăăžăă ç§ăŻăăăăĺşćŹçăŤć ĺ
ăŽĺŽć°ĺŽŁč¨ă§ăăăă¨ăŤĺćăăžăăă Goă§ĺĺŽĺ
¨ć§ăćă¤ăă¨ăŻç´ ć´ăăăăă¨ă§ăăă enum
ăĺäşşçăŤç§ăŤćäžăă丝ăŞäžĄĺ¤ăŻäžĄĺ¤ăŽĺŽĺ
¨ć§ă§ăă äťćĽăŽGoă§ăăă樥ĺŁăăćšćłăŻăăăŽĺ¤ć°ăŽăăšăŚăŽă¨ăłăăŞăă¤ăłăă§ć¤č¨źé˘ć°ăĺŽčĄăăăă¨ă§ăă ăăăŻĺéˇă§ééăăçŻăăăăă§ăăăäťćĽăŽăăăŤč¨čŞă§ĺŻč˝ă§ăă ĺćĺăŽĺăŤĺĺăćĽé čžă¨ăăŚäťăăăă¨ă§ăăă§ăŤĺĺ犺éăä˝ćăăŚăăžăăăăăŻăĺéˇă§ăŻăăăžăăă大ăăăă¨ă§ăŻăăăžăăă
ç§ăŻĺäşşçăŤiota
ăŽăťă¨ăăŠăŽç¨éăĺŤăă§ăă ăăŁăăăă§ăăăăťă¨ăăŠăŽĺ ´ĺăç§ăŽenum
ăŽăăăŞĺ¤ăŻădbăĺ¤é¨APIăŞăŠăŽĺ¤é¨ăŞă˝ăźăšăŤăăăăăăžăăăžăă丌ăšćżăăĺ ´ĺăŤĺ¤ăĺ¤ć´ăăŞăăăăŤăăăć確ăŤăăăă¨ćăăžăă iota
ăŻăćĺĺĺ¤ăŽăŞăšăă使ç¨ăăăăă enum
ă使ç¨ăăăťă¨ăăŠăŽĺ ´ćă§ă彚ăŤçŤăĄăžăăă
çľĺąăŽă¨ăăăăăŽććĄăăŠăă ăć確ăŤă§ăăăăăăăžăăă GoăŤă¨ăŁăŚćĺłăŽăăćšćłă§ăľăăźăăăăŚăăă°ă¨ćăăžăă ćŁç˘şăŞĺŽčŁ ăŤé˘äżăŞăăç§ăŻăăăă使ç¨ăăăă¨ăă§ăăăăăăŻç§ăŽăłăźăăăăĺŽĺ ¨ăŤăăă§ăăăă
GoăäťćĽĺćăăć¨ćşçăŞćšćłďźhttps://github.com/golang/go/issues/19814#issuecomment-290909885ăŤčŚăăăăăăŤďźăŻăăŞăćŁăăă¨ćăăžăă
ăăă¤ăăŽćŹ çšăăăăžăă
ďź1ăăŞăăŚă大ä¸ĺ¤Ťă§ăă
goďźgenerate + stringerăŻďź2ăŤä˝żç¨ă§ăăžăă ăăăăŚăźăšăąăźăšăĺŚçăăŞăĺ ´ĺăŻăăĺćĺăăŽĺşćŹĺăintă§ăŻăŞăćĺĺăŤăăćĺĺĺŽć°ĺ¤ă使ç¨ăăžăă
ĺĺŽçžŠăŤexplicit
ăăźăŻăźăăčż˝ĺ ăăžăă ăăŽăăźăŻăźăăŻăăăŽăżă¤ăăĺŽçžŠăăăŚăăăăăąăźă¸ăŽconstăăăăŻă§ăŽĺ¤ćăé¤ăăŚăăăŽăżă¤ăă¸ăŽĺ¤ćăçŚć˘ăăžăă ďźăžăăŻrestricted
ďźăžăăŻenum
ăŻexplicit type
$ăćĺłăăžăăďźďź
ä¸ă§ĺç §ăăäžăĺĺŠç¨ăăŚă
//go:generate stringer -type=SearchRequest
explicit type SearchRequest int
const (
Universal SearchRequest = iota
Web
Images
Local
News
Products
Video
)
const
ăăăăŻĺ
ă§int
ăăSearchRequest
ă¸ăŽĺ¤ćăăăăžăă ăă ăăăăăąăźă¸ăŽä˝ćč
ă ăăć°ăăSearchRequestĺ¤ăĺ°ĺ
Ľă§ăă誤ăŁăŚĺ°ĺ
Ľăăăă¨ăŻăťă¨ăăŠăăăžăăďźăă¨ăă°ă SearchRequest
ăćĺž
ăăé˘ć°ăŤint
ă渥ăăă¨ăŤăăŁăŚďźă
ç§ăŻăăŽă˝ăŞăĽăźăˇă§ăłăĺŽéăŤçŠćĽľçăŤććĄăăŚăăăăă§ăŻăăăžăăăăçĄĺšăŞăăŽă誤ăŁăŚć§çŻăăŞăăă¨ăŻăäťćĽăŽGoă§ăăŁăăăŁă§ăăŞăĺćĺăŽéĄčăŞçšć§ă§ăăă¨ćăăžăďźćŞă¨ăŻăšăăźăăŽăăŁăźăŤăăŤăźăďźă
ĺćĺăŽčĺłćˇąăăŞăšăŻăŻăĺćĺŽăăăŚăăŞăĺŽć°ăŽĺ ´ĺă ă¨ćăăžăă ć示çăŞĺĺ¤ćăä˝ćăăäşşăŻăčŞĺăä˝ăăăŚăăăŽăăçĽăŁăŚăăžăă çšĺŽăŽçśćłä¸ă§Goăć示çăŞĺĺ¤ćăçŚć˘ăăćšćłăć¤č¨ăăăă¨ćăăžăăăăăăŻĺćĺăŽćŚĺżľă¨ĺŽĺ ¨ăŤç´äş¤ăăŚăăă¨ćăăžăă ăăăŻăăăăă税éĄăŽăżă¤ăăŤéŠç¨ăăăă˘ă¤ăă˘ă§ăă
ăă ăăĺćĺŽăăăŚăăŞăĺŽć°ăŻăć示çăŞĺĺ¤ćăŤăŻĺ˝ăŚăŻăžăăŞăćšćłă§ă誤ăŁăŚäşćăăăŤĺăŽĺ¤ăä˝ćăăĺŻč˝ć§ăăăăžăă ăăăăŁăŚă @ randall77ăŽexplicit
ăŽććĄăŻĺç´ĺăăŚăĺăŞăĺŽć°ăćéťçăŤĺăŤĺ¤ćăăăŞăĺŻč˝ć§ăăăăă¨ăćĺłăăă¨ćăăžăă ć示çăŞĺĺ¤ćăŻĺ¸¸ăŤĺż
čŚă§ăă
çšĺŽăŽçśćłä¸ă§Goăć示çăŞĺĺ¤ćăçŚć˘ăăćšćłăć¤č¨ăăăă¨ćăăžă
@ianlancetaylorĺż
čŚăŤĺżăăŚăć示çăćéťçăăĺăăăĺĺ¤ćăçŚć˘ăăăă¨ă§ăćĺăŤăăŽććĄăä˝ćăăĺĺ ă¨ăŞăŁăĺéĄă解湺ă§ăăžăă ăăŽĺ ´ĺăĺ
ăŽăăăąăźă¸ăŽăżăä˝ćă§ăăăăăäťťćăŽăżă¤ăăćşăăăă¨ăă§ăăžăă ăăăŻă const
厣č¨ă ăă§ăŞăăäťťćăŽĺăăľăăźăăăăăăăăă¤ăăŽçšă§enum
ă˝ăŞăĽăźăˇă§ăłăăăĺŞăăŚăăžăă
@ randall77 ă@ ianlancetaylor explicit
ăŽććĄăăăăŽăżă¤ăăŽăźăĺ¤ă¨ăŠăŽăăăŤéŁćşăăăăŽă§ăăăăă
@derekperkinsĺĺ¤ćăĺŽĺ
¨ăŤçŚć˘ăăă¨ă encoding/*
ăăăąăźă¸ăŞăŠăŽćąç¨ă¨ăłăłăźăăź/ăăłăźăăźă§ăăăăŽĺă使ç¨ă§ăăŞăăŞăăžăă
@Merovius @ianlancetaylorăŻăćéťçăŞĺ¤ćďźăă¨ăă°ăĺăŞăĺŽć°ăŽĺśéäťăĺă¸ăŽĺ˛ăĺ˝ăŚďźăŤĺŻžăăŚăŽăżĺśéăććĄăăŚăăă¨ćăăžăă ć示çăŞĺ¤ćăŻĺźăçśăĺŻč˝ă§ăă
@griesemerç§ăŻçĽăŁăŚăăžă:)ăăăăç§ăŻ@derekperkinsăĺĽăŽćšćłă§ććĄăăăă¨ăç解ăăžăăă
ć示çăŞĺ¤ćă訹ĺŻăăă¨ăăăŽăć示çăŞă俎飞ĺăŤă¤ăăŚčăăŚăăççąăăŽăăŽăćăŞăăăžăăăďź čŞ°ăăäťťćăŽĺ¤ăăć示çăŞăăżă¤ăăŤĺ¤ćăăăă¨ăćąşĺŽă§ăăĺ ´ĺăćĺŽăăăĺ¤ăçžĺ¨ăăăĺćĺĺŽć°ăŽ1ă¤ă§ăăă¨ăăäżč¨źăŻăăăžăăă
ăăăŻăĺćĺŽăăăŚăăŞăĺŽć°ăŽăŤă¸ăĽă˘ăŤăŞä˝żç¨ăćĺłăăŞă使ç¨ăŤĺ˝šçŤă¤ă¨ćăăžăăăăăŻăăăăćăéčŚăŞăă¨ă§ăă
ć示çăŞĺ¤ćăçŚć˘ăăăă¨ăăGoăŽç˛žçĽăăŤăăăŽăăŠăăçĺăŤćăŁăŚăăă¨ćăăžăă ć示çăŞĺ¤ćăçŚć˘ăăăă¨ăŻăăłăźăăŽč¨čż°ăŤĺşăĽăăăă°ăŠăăłă°ă§ăŻăŞăăĺăŤĺşăĽăăăă°ăŠăăłă°ăŤĺăăŚĺ¤§ăăŞä¸ćŠăč¸ăżĺşăăžăă ĺ˛ç˘ăŻĺžč ăćŻćăăć確ăŞçŤĺ ´ăĺăŁăŚăăă¨ćăăžăă
@griesemer @Merovius @ianlancetaylorăăăŽĺźç¨ăăăä¸ĺşŚć稿ăăžăăăăăŻăç§ăŽććĄă§ăŻăŞăă彟ăŽććĄă ăŁăăăă§ăă
çšĺŽăŽçśćłä¸ă§Goăć示çăŞĺĺ¤ćăçŚć˘ăăćšćłăć¤č¨ăăăă¨ćăăžă
@rogpeppeă¨@MeroviusăŻăŠăĄăăăăăŽĺ˝ąéżăŤă¤ăăŚčŻăçšă示ăăŚăăžăă ć示çăŞĺ¤ćă訹ĺŻăăăćéťçăŞĺ¤ćă訹ĺŻăăŞăăă¨ăŻăćĺšăŞĺăäżč¨źăăĺéĄă解湺ăăžăăăăćąç¨ă¨ăłăłăźăăŁăłă°ă夹ăăă¨ăŻăăŞă大ăăŞćŹ çšăŤăŞăăžăă
ăăăŤăŻăăăăăŽčĄăćĽăăăăžăăăăčŻăă˘ă¤ăă˘ăăăă¤ăăăŁăă¨ćăăžăă ăăăç§ăčŚăăăăŽďźăžăăŻĺć§ăŽăăŽďźăŽčŚç´ă§ăăăäťăŽäşşăč¨ăŁăăă¨ă¨ä¸č´ăăŚăăăăă§ăă ç§ăŻč¨čŞăăśă¤ăăźă§ăăłăłăă¤ăŠăźăăă°ăŠăăźă§ăăŞăăă¨ăĺ Źçśă¨čŞăăŚăăăŽă§ăăăăăŠăăťăŠăăžăćŠč˝ăăăăŻăăăăžăăă
go vet
ďźăäťăăŚďź default
ăŽăąăźăšăć¨ĺĽ¨ăăžăănil
ăŤăăăă¨ćăăžăăăăŽćĺžăŽăăŽăŻĺ°ăçŠč°ăăăăăŚăăăăăăăžăăă ăăăŚăăăăćŠč˝ăăăăŠăăăŻăăăăžăăăăćĺłçăŤăŻéŠĺăăă¨ćăăžă- nil
ăšăŠă¤ăšăăă§ăăŻăăăŽă¨ĺăăăăŤă nil
ăăă§ăăŻăăăă¨ăă§ăăžă
ă¤ăăŹăźăˇă§ăłăŤé˘ăăŚăŻăĺŽéăŤä˝żç¨ăăăă¨ăŻăŞăă¨ćăăžăăă厳ăŻčŚăăăžăăă
ăăă厣č¨ăăćšćłăŽäžă¨ăăŚďź
type MetadataBlockType enum[uint] {
StreamInfo: 0
Padding: 1
Application: 2
SeekTable: 3
VorbisComment: 4
CueSheet: 5
Picture: 6
}
ăžăăăżă¤ăăć¨ć¸ŹăăŚăăăăć§ćăă使ç¨ăăSwiftăšăżă¤ăŤăŻ_nice_ă§ăăă羜寞ăŤĺż čŚă¨ăăăăă§ăŻăăăžăăă
ăżă¤ăEnumAint
constďź
ä¸ćăŞEnumA = iota
AAA
ďźă
ăżă¤ăEnumBint
constďź
ä¸ćăŞEnumB = iota
BBB
ďźă
1ă¤ăŽGoăăĄă¤ăŤăŤ2ă¤ăŽăłăźăăĺŤăăăă¨ăăĺăăăăąăźă¸ăŤĺŤăăăă¨ăă1ă¤ăĺĽăŽăăăąăźă¸ăăă¤ăłăăźăăăăă¨ăă§ăăžăăă
ĺćĺăĺŽčŁ
ăăCďźăŽćšćłăĺŽčŁ
ăăŚăă ăăďź
ăżă¤ăDaysenum {ĺăćĽăćăçŤăć°´ăć¨ăé}
ăżă¤ăDaysenum [int] { Satďź1 ăSunăTueăWedăThuăFri}
ăżă¤ăDaysenum [string] {Satďź "Saturay"ăSunďź "Sunday"ăŞăŠ}
@KamyarMăăăŻăŠăŽăăăŤĺŞăăŚăăžă
type Days int
const (
Sat Days = 1+iota
Sun
...
)
ă¨
type Days string
const (
Sat Days = "Saturday"
Sun = "Sunday"
...
)
ăłăĄăłăăć°ăăă˘ăăăźă/č°čŤăŤéĺŽăăăăăéĄăăăăă¨ćăăžăă ĺ¤ăăŽäşşăăăŽăšăŹăăăŤçťé˛ăăŚăăăăă¤ăş/çš°ăčżăăčż˝ĺ ăăăă¨ăŻă彟ăăŽćéă¨ćł¨ćăčť˝čŚăăŚăăă¨čŚăŞăăăĺŻč˝ć§ăăăăžăă ĺăŽăłăĄăłăăŽä¸ĄćšăŤĺŻžăă芳細ăŞĺçăĺŤăăăăăŤăŻăăăăăŽč°čŤăăăăžăâă ăăŞăăŻč¨ăăăăă¨ăăšăŚăŤĺćăăăă¨ăŻăŞăăăăăžă§ăŽă¨ăăăăŽč°čŤăŽçľćă弽ăĺ´ăŻăăŞăăăăăăžăăăăăăăĺăŤçĄčŚăăăă¨ăççŁçăŞćšĺăŤé˛ăăŽăŤĺ˝šçŤăĄăžăăă
ĺĺăŽçŤśĺăŽĺéĄăăŞăăăăăăĺŞăăŚăăžăă ăłăłăă¤ăŠăŽĺăă§ăăŻăăľăăźăăăžăă ăăŞăăč¨ĺăăă˘ăăăźăăŻăä˝ăăŞăăăăăăžăçľçšĺăăăžăăăăăłăłăă¤ăŠăźăŻăăăŞăăăăăŤĺ˛ăĺ˝ăŚăăă¨ăă§ăăăăŽăŤăăŞăăĺśéăăžăăă ăăŽăżă¤ăăŽăŞăă¸ă§ăŻăăŤăŻăăŠăŽćĽă§ăăŞăć´ć°ăĺ˛ăĺ˝ăŚăăă¨ăă§ăăžăă
var a Days
a = 10
ăłăłăă¤ăŠăŻĺŽéăŤăŻä˝ăăăžăăă ăăăăŁăŚăăăŽç¨ŽăŽĺćĺăŤăŻăăžăćĺłăăăăžăăă ăă䝼ĺ¤ăŻăGoLandăŽăăăŞIDEă§ăăéŠĺăŤçˇ¨ćăăăŚăăžă
ăăăŞăăŽăčŚăă
type WeekDay enum string {
Monday "mon"
Tuesday "tue"
// etc...
}
ăžăăŻăčŞĺiota
使ç¨ăŽĺ ´ĺďź
// this assumes that iota automatically assigned to the first declared enum key
// and values have unsigned integer type
// value is positional, so if you decide to rename your key
// you don't have to change everything in db
// also it is easy to grow your lists
type WeekDay enum {
Monday
Tuesday
}
ăăăŤăăă使ăăăăă¨ăˇăłăăŤăăĺŽçžăăžăă
func makeItWorkOn(day WeekDay) {
// your implementation
}
ăžăăenumăŤăŻăăŚăźăśăźĺ Ľĺăăä˝ăăć¤č¨źă§ăăăăăŤăĺ¤ăć¤č¨źăăăăăŽçľăżčžźăżăĄă˝ăăăĺż čŚă§ăă
if day in WeekDay {
makeItWorkOn(day)
}
ăăăŚă揥ăŽăăăŞĺç´ăŞăăŽďź
if day == WeekDay.Monday {
// whatever
}
ćŁç´ăŞă¨ăăăç§ăŽăć°ăŤĺ ĽăăŽć§ćăŻćŹĄăŽăăăŤăŞăăžăďźKISSďźďź
// type automatically inferred from values or `iota`
enum WeekDay {
Monday "mon"
Tuesday "tue"
}
@zoonmanćĺžăŽäžăŻăGoăŽćŹĄăŽĺĺăŤĺžăŁăŚăăžăăăé˘ć°ĺŽŁč¨ăŻfunc
ă§ĺ§ăžăăĺ厣č¨ăŻtype
ă§ĺ§ăžăăĺ¤ć°ĺŽŁč¨ăŻvar
ă§ĺ§ăžăăžăă ă..ă
@ md2perpeç§ăŻGoăŽăăżă¤ăăăŽĺĺăŤĺžăăă¨ăŻăăŚăăžăăăćŻćĽăłăźăăć¸ăăŚăăžăăăç§ăĺžăĺŻä¸ăŽĺĺăŻăçŠäşăăˇăłăăŤăŤäżă¤ăă¨ă§ăă
_ĺĺăŤĺžăăăăŤ_č¨čż°ăăŞăăă°ăŞăăŞăăłăźăăăăĺ¤ăăŽćéăçĄé§ăŤăŞăăžăă
TBHç§ăŻĺĺżč
ă§ăăăćšĺ¤ă§ăăăă¨ăŻăăăăăăăžăă
äžăă°ďź
struct User {
Id uint
Email string
}
ć¸ăăăăç解ăăăă
type User struct {
Id uint
Email string
}
ăżă¤ăă使ç¨ăăĺ ´ćăŽäžă示ăăžăă
// this is terrible because it blows your mind off
// especially if you Go newbie
// this should not be allowed by compiler/linter:
w := map[string]interface{}{"type": 0, "connected": true}
// it has to be splitted into type definition
type WeirdJSON map[string]interface{}
// and used like
w := WeirdJSON{"type": 0, "connected": true}
䝼ĺăŻAsmăCăC ++ăPascalăPerlăPHPăRubyăPythonăJavaScriptăTypeScriptă§ăłăźăăč¨čż°ăăŚăăžăăăăçžĺ¨ăŻGoă§ăă ç§ăŻăăŽăăšăŚăčŚăžăăă ăăŽçľé¨ăăăăłăźăăŻç°Ąć˝ă§ăčŞăżăăăăç解ăăăăăăŽă§ăŞăăă°ăŞăăŞăăă¨ăăăăăžăă
ćŠć˘°ĺŚçżăăă¸ă§ăŻăăä˝ćăăMIDIăăĄă¤ăŤă解ćăăĺż
čŚăăăăžăă
ăăă§ăSMPTEăżă¤ă ăłăźăă解ćăăĺż
čŚăăăăžăă iotaă§ć
Łç¨çăŞćšćłă使ç¨ăăăŽăŻé常ăŤéŁăăă¨ćăăžăăăăăăŻç§ăć˘ăăžăăďź
const (
SMTPE0 int8 = ((-24 - (1 + (iota - 1) * 3) % 6 * (iota - 1) / ((iota - 1) | 0x01)) - 10 * ((iota - 1) % 2) - 5 * (iota / 3 - iota / 4) ) * iota / (iota | 0x01)
SMTPE24
SMTPE25
SMTPE29
SMTPE30
)
const (
_SMTPE0 int8 = 0
_SMTPE24 int8 = -24
_SMTPE25 int8 = -25
_SMTPE29 int8 = -29
_SMTPE30 int8 = -30
)
ăăĄăăăé˛ĺžĄçăŞăăă°ăŠăăłă°ă§ăŠăłăżă¤ă ăă§ăăŻăĺż čŚăŤăŞăăăăăăžăă...
func IsSMTPE(status int8) bool {
j := 4
for i:= 0; i >= -30; i -= j % 6{
if i == int(status){
return true
}
j+=3
}
return status == 0
}
ĺćĺăŻăĺ ´ĺăŤăăŁăŚăŻăăă°ăŠăăźăŽăŠă¤ăăăăç°ĄĺăŤăăžăă ĺćĺăŻĺăŞăć掾ă§ăăăéŠĺăŤä˝żç¨ăăă¨ăćéăçŻç´ăăççŁć§ăĺä¸ăăăăă¨ăă§ăăžăă C ++ăCďźăăăŽäťăŽč¨čŞăŽăăăŤăGo2ă§ăăăĺŽčŁ ăăăŽăŤĺéĄăŻăŞăă¨ćăăžăă ăăŽäžăŻĺăŞăĺčŤă§ăăăĺéĄăć確ăŤç¤şăăŚăăžăă
@ streeter12ăăŞăăŽäžăăŠăŽăăăŤăĺéĄăć確ăŤç¤şăăŚăăăăŽăăăăăžăăă ĺćĺăŻăŠăŽăăăŤăăŚăăŽăłăźăăăăčŻăăžăăŻăăĺŽĺ ¨ăŤăăăŽă§ăăăăďź
ĺćĺă¨ĺăăă¸ăăŻăĺŽčŁ ăăCďźăŻăŠăšăăăăžăă
public enum SMTPE : sbyte
{
SMTPE0 = 0,
SMTPE24 = -24,
SMTPE25 = -25,
SMTPE29 = -29,
SMTPE30 = -30
}
public class TestClass
{
public readonly SMTPE smtpe;
public TestClass(SMTPE smtpe)
{
this.smtpe = smtpe;
}
}
ăłăłăă¤ăŤćăŽĺćĺă使ç¨ăăă¨ă揥ăŽăă¨ăă§ăăžăă
çľĺąăŽă¨ăăăăăăŻä¸čŹçăŞäşşçşçă¨ăŠăźăé˛ăăăăăŠăźăăłăšăçŻç´ăăăăăŽĺăŞăăăźăŤă§ăă
@ streeter12ćĺłăć確ăŤăăŚăăăŚăăăă¨ăă ăăă§ăŽGoĺŽć°ăŤĺŻžăăĺŻä¸ăŽĺŠçšăŻăĺăˇăšăă ăäťăŽĺ¤ăĺăĺ Ľăăăĺćĺ¤ăŽ1ă¤ăĺăĺ ĽăăăăăçĄĺšăŞĺ¤ăĺ°ĺ Ľă§ăăŞăăă¨ă§ăă ăăăŻç˘şăăŤç´ ć´ăăăăă¨ă§ăăă䝣ĺăäź´ăăžăăăăŽĺćĺăăăŽăłăźăăŽĺ¤ăŤćĄĺźľăăćšćłăŻăăăžăăă ĺ¤é¨ĺćĺćĄĺźľăŻăGoă§ć¨ćşĺćĺăŤĺ寞ăăăă¨ăćąşĺŽăă丝ăŞççąăŽ1ă¤ă§ăă
ä¸é¨ăŽćĄĺźľćŠč˝ă§ĺćĺă使ç¨ăăŞăăăăŤăăă¨ăăĺç´ăŞĺż
čŚć§ăŤçăăŚăă ăăă
FEăŻăăšăăźăăăˇăłăŤĺćĺă§ăŻăŞăăšăăźăăăżăźăłă使ç¨ăăăĺż
čŚăăăăžăă
ĺćĺăŤăŻçŹčŞăŽăšăłăźăăăăăžăă ç§ăŻĺćĺăŞăă§ăăă¤ăăŽĺ¤§ăăŞăăă¸ă§ăŻăăĺŽäşăăžăă ĺćĺăĺŽçžŠăłăźăăŽĺ¤ăŤćĄĺźľăăăă¨ăŻăă˘ăźăăăŻăăŁăŽćąşĺŽăă˛ăŠăăă¨ă ă¨ćăăžăă ăăŞăăŻăăŞăăŽĺĺăăăŚăăăă¨ăĺśĺžĄăăăă¨ăă§ăăăăăăŻăăă¤ăăŽé˘ç˝ăă¨ăŠăźăĺźă辡ăăăžăďź
ăžăăĺ¤ăăŽĺ ´ĺă大čŚć¨ĄăŞăăă¸ă§ăŻăă§ă¨ăŠăźăĺ¤§ĺš ăŤĺć¸ăăăăĽăźăăłăăĄăŻăżăźăŽĺćĺăĺżăăŚăăžăă
@ streeter12ćŽĺżľăŞăăăĺŽéăŤăŻăĺćĺăćĄĺźľăăĺż čŚăăăăă¨ăăăăăăžăă
@griesemerăenum / sumĺăćĄĺźľăăă¨ăĺĽăŽăĺ ´ĺăŤăăŁăŚăŻäşćć§ăŽăŞăĺăä˝ćăăăžăă
ĺćĺ/ĺč¨ăŽć示çăŞĺăăŞăĺ ´ĺă§ăăăăăŻGoă§ăĺ˝ăŚăŻăžăăžăă ăăăąăźă¸ăŤ{1ă2ă3}ăŽĺ¤ăćĺž ăăăĺćĺăăăăăăćĄĺźľĺćĺăăă4ă渥ăăĺ ´ĺă§ăăćéťăŽăĺăăŽăłăłăăŠăŻăăŤéĺăăŚăăžăă
ĺćĺ/ĺč¨ăćĄĺźľăăĺż čŚăăăĺ ´ĺăŻăäşćć§ăŽăŞăĺ ´ĺăć示çăŤĺŚçăăć示çăŞTo / Fromĺ¤ćé˘ć°ăä˝ćăăĺż čŚăăăăžăă
ăăŽććĄăžăăŻďź19412ăŽăăăŞĺć§ăŽććĄăŤĺŻžăăăăŽč°čŤă¨äşşă ă¨ăŽćçľśăŻăăăŹăźăăŞăăăćă ăăŞăăĺ¤ćé˘ć°ăć¸ăăăŽă§ăŻăŞăăăăłăłăă¤ăŠăĺŚçă§ăăĺşćŹçăŞć¤č¨źăłăźăă常ăŤć¸ăăăă¨ă§ăăă¨ăăăŽăŻĺĽĺŚă ă¨ćăăă¨ă ă¨ćăăžăă¨ăŤăăć¸ăĺż čŚăăăăăăăăžăăăă
ăăăŻăăŠăĄăăŽĺ´ăćŁăăăééăŁăŚăăăăăžăăŻăăăčć ŽăăšăĺŻä¸ăŽăăŹăźăăŞăă§ăăă¨ăăăă¨ă§ăŻăăăžăăăăç§ăć°äťăăĺ´ăŽéăŽăłăăĽăăąăźăˇă§ăłăŽăăăŤăăăŻăçšĺŽăăăăŁăăŽă§ăă
ăăŽććĄăžăăŻďź19412ăŽăăăŞĺć§ăŽććĄăŤĺŻžăăăăŽč°čŤă¨äşşă ă¨ăŽćçľśăŻăăăŹăźăăŞăăăćă ăăŞăăĺ¤ćé˘ć°ăć¸ăăăŽă§ăŻăŞăăăăłăłăă¤ăŠăĺŚçă§ăăĺşćŹçăŞć¤č¨źăłăźăă常ăŤć¸ăăăă¨ă§ăăă¨ăăăŽăŻĺĽĺŚă ă¨ćăăă¨ă ă¨ćăăžăă¨ăŤăăć¸ăĺż čŚăăăăăăăăžăăăă
é常ăŤăăčż°ăšăăăŚăă
@jimmyfrascheăăăŻç§ăĺäşşçăŤăăŹăźăăŞăă誏ćăăćšćłă§ăŻăăăžăăă ăăłăłăă¤ăŠăĺŚçă§ăăĺşćŹçăŞć¤č¨źăłăźăă常ăŤä˝ćăăă寞ăGoă使ç¨ăăăăšăŚăŽäşşăĺŚçżăăŚç解ăăĺż čŚăŽăăĺăˇăšăă ăŤăžăŁăăć°ăăćŚĺżľăčż˝ĺ ăăăă¨č¨ăăžăă
ăžăăŻăĺĽăŽč¨ăćšăăăžăă ç§ăçĽăéăăGoăŽĺćĺăŽăăźă¸ă§ăłăŤćŹ ăăŚăăĺŻä¸ăŽéčŚăŞćŠč˝ăŻăĺăŞăĺŽć°ăăăŽäťŁĺ ĽăŽć¤č¨źăăŞăăć示çăŞĺ¤ćăŽăă§ăăŻăăŞăăăăšăŚăŽĺ¤ăăšă¤ăăă ăăăăŽćŠč˝ăŻăăšăŚăĺćĺăŽćŚĺżľăăçŹçŤăăŚăăăăăŤćăăăžăă äťăŽč¨čŞăĺćĺăćăŁăŚăăă¨ăăäşĺŽăăGoăĺćĺăĺż čŚă¨ăăŚăăă¨ăăçľčŤăŤç§ăăĄăĺ°ăăšăă§ăŻăăăžăăă ăŻăăĺćĺăŻăăăăŽä¸čśłăăŚăăćŠč˝ăćäžăăžăă ăăăăăăăăĺĺžăăăŤăŻăăžăŁăăć°ăă税éĄăŽăżă¤ăăčż˝ĺ ăăĺż čŚăćŹĺ˝ăŤăăăžăăďź ăăăŚăč¨čŞăŽč¤éăăŽĺ˘ĺ ăŻĺŠçăŤĺ¤ăăăŽă§ăăăăďź
@ianlancetaylorč¨čŞăŤč¤éăăĺ ăăăă¨ăŻç˘şăăŤčć ŽăăšăćĺšăŞăă¨ă§ăăăăäťăŽč¨čŞăăăăćăŁăŚăăăăăăŻç˘şăăŤč°čŤă§ăŻăăăžăăă ç§ăŻĺäşşçăŤăĺćĺăŻăăčŞä˝ă§äžĄĺ¤ăăăă¨ăŻćăăžăăă ďźăă ăăăăăăŽä¸čŹĺăĺč¨ăżă¤ăă確ăăŤĺ¤ăăŽăăăŻăšăŤăă§ăăŻăăźăŻăäťăăŚăă ăăďźă
ăżă¤ăăĺ˛ăĺ˝ăŚĺŻč˝ć§ăăŞăăă˘ăŚăăăä¸čŹçăŞćšćłăŻäžżĺŠă§ăăăăăŞăăăŁăăŽĺ¤ă§ăŠăăťăŠĺşă彚çŤă¤ăăŻăăăăžăăă
ăłăłăă¤ăŠăŤćŁĺ˝ăŞĺ¤ăŽĺŽĺ ¨ăŞăŞăšăăçĽăăăćšćłăăŞăăă°ăăăšă¤ăăă§ĺŚçăăăăăšăŚăŽĺ¤ăăă§ăăŻăăăă¨ăăćŚĺżľăăŠăăťăŠä¸čŹĺă§ăăăăŻăăăăžăăă ĺćĺă¨ĺč¨ĺăé¤ăăŚăç§ăčăăăă¨ăă§ăăăŽăŻAdaăŽçŻĺ˛ĺăŽăăăŞăăŽă ăă§ăăăĺ¤ćăžăăŻĺć ăăăăăłăŤăŞăăťăăăĺŚçăăăăăŤçŻĺ˛ăžăăŻăłăźăăçćăăăĺż čŚăăŞăéăăăăăăŻăźăĺ¤ă¨čŞçśăŤäşćć§ăăăăžăăăăŽä¸ă ďźäťăŽč¨čŞăŤăĺć§ăŽăżă¤ăăŽăăĄăăŞăźăăăăä¸é¨ăŻăăšăŤăŤăăĄăăŞăźăŤăăăžăăăçžćçšă§é ăŤćľŽăăśăŽăŻAdaă ăă§ăďź
ă¨ăŤăăăç§ăŻĺ ˇä˝çăŤč¨ĺăăŚăăžăăďź
ăăă§ăŽGoĺŽć°ăŤĺŻžăăĺŻä¸ăŽĺŠçšăŻăĺăˇăšăă ăäťăŽĺ¤ăĺăĺ Ľăăăĺćĺ¤ăŽ1ă¤ăĺăĺ ĽăăăăăçĄĺšăŞĺ¤ăĺ°ĺ Ľă§ăăŞăăă¨ă§ăă ăăăŻç˘şăăŤç´ ć´ăăăăă¨ă§ăăă䝣ĺăäź´ăăžăăăăŽĺćĺăăăŽăłăźăăŽĺ¤ăŤćĄĺźľăăćšćłăŻăăăžăăă ĺ¤é¨ĺćĺćĄĺźľăŻăGoă§ć¨ćşĺćĺăŤĺ寞ăăăă¨ăćąşĺŽăă丝ăŞççąăŽ1ă¤ă§ăă
ă¨
ćŽĺżľăŞăăăçžĺŽăŤăŻăĺćĺăćĄĺźľăăĺż čŚăăăăă¨ăăăăăăžăă
ç§ăčż°ăšăççąăŤăăăăăŽč°čŤăŻç§ăŤăŻăăžăăăăžăăă
@jimmyfrascheç解ăăžăă; ăăăŻéŁăăĺéĄă§ăă ăăŽăăăGoă§ăŻăăă解湺ăăăă¨ăŻăăăĺŽć°ĺ¤ăçš°ăčżăĺż čŚăŞăăŤĺŽć°ăŽăˇăźăąăłăšăç°ĄĺăŤä˝ćăăăĄăŤăăşă ăćäžăăă ăă§ăăă
ďźé ĺťśé俥-httpsďź//github.com/golang/go/issues/19814#issuecomment-349158748ă¸ăŽĺżçă¨ăăŚćĺłăăăŚăăžăăďź
@griesemerăŻç˘şăăŤăăăăŻééăăŞăGo 1ăŽćŁăăĺźăłĺşăă§ăăăăăăŽä¸é¨ăŻGo2ă§ĺčŠäžĄăă䞥ĺ¤ăăăăžăă
č¨čŞăŤăŻăĺćĺăăĺż čŚăŞăăŽă_ăťăź_ăăšăŚĺĺžăăăŽăŤĺĺăŞăăŽăăăăžăă ăżă¤ăĺŽçžŠăăăĺ¤ăăŽăłăźăăĺż čŚă§ăăăă¸ă§ăăŹăźăżăźăŻăăŽăťă¨ăăŠăĺŚçă§ăăĺćĺăŤäťĺąăăăăŻăźăĺĺžăăă ăă§ăŞăăçśćłăŤĺăăăŚĺŽçžŠăăăă¨ăă§ăăžăă
ăăŽă˘ăăăźăhttps://play.golang.org/p/7ud_3lrGfxăŻă䝼ä¸ăé¤ăăăšăŚăĺĺžăăžă
ăăŽă˘ăăăźăăŻăĺ°ăăăŚĺç´ăŞĺč¨ăżă¤ăăŤă使ç¨ă§ăăžăâ ăă使ç¨ăăăŽăăăĺäťă§ăăăăŽăăă httpsďź //github.com/golang/go/issues/19412#issuecomment-323208336ăŽăăăŞăăŽăčż˝ĺ ăăă¨ćăăžăăč¨čŞă¨ăăăăłăźăă¸ă§ăăŹăźăżăźă§ä˝żç¨ăăŚăĺéĄ1ă¨2ăĺéżăăĺćĺăä˝ćă§ăăžăă
â ăăŽć§é ăŽjson.TokenăŽăšăąăăăŤă¤ăăŚăŻă httpsďź//play.golang.org/p/YFffpsvx5eăĺç §ăăŚăă ăă
ăăŹăźăăŞăăăăă¨ăŤăăä˝ćăăŞăăă°ăŞăăŞăĺŻč˝ć§ăŽăăĺ¤ćé˘ć°ăä˝ćăăăăŽă§ăŻăŞăăăăłăłăă¤ăŠăĺŚçă§ăăĺşćŹçăŞć¤č¨źăłăźăă常ăŤä˝ćăăăă¨ăăăŽăŻĺĽĺŚă ă¨ćăăžăă
ç§ďźćŽľéçăŞäżŽĺžŠăŽćżăăćŻćč ăŽéŁĺśăŽäťŁčĄ¨ďźăŤă¨ăŁăŚăăăăŻćŁăăďźăŁă˝ăďźăăŹăźăăŞăăŽăăăŤćăăžăă ćŁç´ăŞă¨ăăă掾éçăŞäżŽĺžŠăŤă¤ăăŚčŠąăăŚăăŞăăŚăăăăăŻăăčŻăăĄăłăżăŤă˘ăăŤă ă¨ćăăžăă
1ă¤ăŻăĺăă§ăăŻăăăĺćĺăŻăă¨ăŤăăă˝ăźăšăłăźăăŤćżĺ Ľăăăĺ¤ăŽăżăăă§ăăŻă§ăăăăăŤăŞăăă¨ă§ăă ĺćĺăăăăăŻăźăŻä¸ă秝ĺăăĺ ´ĺăăăŁăšăŻăŤäżćăăăĺ ´ĺăăžăăŻăăăťăšéă§äş¤ćăăăĺ ´ĺăăăšăŚăŽčłăăŻçĄĺšăŤăŞăăžăďźăăăŚăĺćĺăŽăťă¨ăăŠăŽććĄăăă使ç¨ćłăŻăăŽăŤăă´ăŞăŤĺéĄăăăžăďźă ăăăăŁăŚăĺŽčĄćăŤéäşćć§ăĺŚçăăĺéĄăĺéżăăăă¨ăŻă§ăăžăăă ăžăăçĄĺšăŞĺćĺ¤ăŤééăăĺ ´ĺăŽä¸čŹçăŞä¸č˝ăŽăăăŠăŤăăŽĺä˝ăŻăăăžăăă ĺ¤ăăŽĺ ´ĺăă¨ăŠăźăçşçăăĺŻč˝ć§ăăăăžăă ĺ ´ĺăŤăăŁăŚăŻăăăăăăăŠăŤăĺ¤ăŤĺźˇĺśăăăăă¨ăăăăžăă ăťă¨ăăŠăŽĺ ´ĺăĺăˇăŞă˘ăŤĺă§ĺ¤ąăăăŞăăăăŤăäżĺăăŚć¸Ąăĺż čŚăăăăžăă
ăăĄăăăćĺšć§ăăă§ăăŻăăăĺż čŚăŞĺä˝ăĺŽčŁ ăăăäżĄé źĺ˘çăăžă ĺĺ¨ăăĺż čŚăăăă¨ä¸ťĺźľăăăăăăăžăă-ăăăŚăăŽĺ˘çĺ ăŽăăšăŚăăăŽĺä˝ăäżĄé źă§ăăăŻăă§ăă ăăăŚăĄăłăżăŤă˘ăăŤăŻăăăŽäżĄé źăŽĺ˘çăŻăăăťăšă§ăăăšăă ă¨ăăăă¨ăŽăăă§ăă ăă¤ăăŞĺ ăŽăăšăŚăŽăłăźăăŻă˘ăăăăŻăŤĺ¤ć´ăăăĺ é¨çăŤä¸č˛Ťć§ăäżăăăăăă§ăă ăăăăăăŽăĄăłăżăŤă˘ăăŤăŻćŽľéçăŞäżŽĺžŠăŽă˘ă¤ăă˘ăŤăăŁăŚäžľéŁăăăžăă çŞçśăčŞçśăŞäżĄé źĺ˘çăŻăă˘ăăăăŻäżŽĺžŠăéŠç¨ăăăŚăăăăăăłčŞĺˇąçĄćçă§ăăă¨äżĄé źăăăŚăăăă¨ăăŚăŽăăăąăźă¸ďźăžăăŻăŞăă¸ăăŞďźăŤăŞăăžăă
ăăăŚăĺäşşçăŤăŻăé常ăŤčŞçśă§ç´ ć´ăăăčŞĺˇąä¸č˛Ťć§ăŽĺä˝ă§ăăăă¨ăăăăăžăăă ăăăąăźă¸ăŻăăăŽăťăăłăăŁăŻăšăăŤăźăŤăăăăłčŚĺăé ăŽä¸ă§çśćăăăŽăŤĺĺăŞĺ¤§ăăă§ăăĺż čŚăăăăžăă ăăăăă¨ăŻăšăăźăăăżă¤ăăŹăăŤă§ăŻăŞăăăăąăźă¸ăŹăăŤă§ćŠč˝ăăççąă§ăăăăăăăŹăăŤăŽĺŽŁč¨ăăăă°ăŠă ăŹăăŤă§ăŻăŞăăăăąăźă¸ăŹăăŤă§ăšăłăźăăăăççąă§ăăăăžăă ăăăąăźă¸ăŹăăŤă§ăä¸ćăŞĺćĺ¤ăŽćŁăăĺŚçăćąşĺŽăăăăăŤăĺéĄăŞăăĺĺăŤçŻç´ă§ăăăăă§ăă ă¨ăŻăšăăźăăăăŚăăŞăé˘ć°ăăăăăăăăă§ăăŻăăŚăĺ é¨çăŤćăžăăĺä˝ăçśćăăžăă
ç§ăŻăçś˛çž ć§ăă§ăăŻăĺŤăĺăă§ăăŻăăăĺćĺăćă¤ă¨ăăććĄăăăăăăšăŚăŽăšă¤ăăăŤăăăŠăŤăăŽăąăźăšăĺż čŚă§ăăă¨ăăććĄăŤăŻăăăŤčłćăăă§ăăăă
@MeroviusăăŞăăč¨ăăăăŤăăŞăăŹăźăăŁăłă°ăˇăšăă ăŽăăăťăšă¨ăăăąăźă¸ăŻăŠăĄăăäżĄé źăŽĺ˘çă§ăă
ăăăťăšĺ¤ăăăŽć ĺ ąăŻăăăŽĺ ĽĺŁă§ć¤č¨źăăăăăăťăšăŽéŠĺăŞčĄ¨çžăŤăăźăˇăŁăŞăłă°ăăăŚăăŞăĺż čŚăăăăăăăťăšă夹ćăăĺ ´ĺăŻéŠĺăŞćł¨ćăćăăăžăă ăăăŻćąşăăŚćśăăžăăă ĺč¨/ĺćĺăŤĺşćăŽăăŽăŻĺŽéăŤăŻčŚĺ˝ăăăžăăă ć§é ä˝ăŤă¤ăăŚăĺăăă¨ăč¨ăăžăăĺ ´ĺăŤăăŁăŚăŻăä˝ĺăŞăăŁăźăŤăăĺĺžăăăăăăŁăźăŤăăĺ°ăŞăăăăăăžăă ć§é ä˝ăŻăžă äžżĺŠă§ăă
ăăăŻč¨ăŁăŚăăĺćĺă使ç¨ăăă¨ăăăĄăăăăăăăŽă¨ăŠăźăŽă˘ăăŤĺăŤĺşćăŽăąăźăšăĺŤăăăă¨ăă§ăăžăă äžăă°
type FromTheNetwork enum {
// pretend all the "valid" values are listed here
Missing // the value was not included in the message
Unknown // the value was not in the set of the valid values
Error // there was an error attempting to read the value
}
ĺč¨ăżă¤ăă使ç¨ăăă¨ăăăăŤĺ ăŤé˛ăăă¨ăă§ăăžăă
type FromTheNetwork pick {
Missing struct{} // Not included in message
Valid somepkg.TheSumBeingReceived // Include valid states with composition
Unknown []byte // Raw bytes of unknown value received
Error error // The error from attempting to read the value
}
ďźĺč ăŻăă¨ăŠăźăąăźăšăŤĺşćăŽăăŁăźăŤăăćă¤ć§é ä˝ăŤäżćăăăŚăăŞăéăăăăăťăŠćç¨ă§ăŻăăăžăăăăăăăăŽăăŁăźăŤăăŽćĺšć§ăŻĺćĺăŽĺ¤ăŤäžĺăăžăăsumăżă¤ăăŻăćŹčłŞçăŤăŻăăăĺŚçăăžăăä¸ĺşŚăŤ1ă¤ăŽăăŁăźăŤăăăč¨ĺŽă§ăăŞăć§é ä˝ăďź
ăăăąăźă¸ăŹăăŤă§ăŻăéŤăŹăăŤăŽć¤č¨źăĺŚçăăĺż
čŚăăăăžăăăä˝ăŹăăŤăŽć¤č¨źăŻăżă¤ăăŤäťĺąăăŚăăžăă ăżă¤ăăŽăăĄă¤ăłăć¸ăăăă¨ăŻăăăăąăźă¸ăĺ°ăăăăŚé ăŽä¸ăŤäżă¤ăŽăŤĺ˝šçŤă¤ă¨ćăăžăă ăžăăă¨ăăŁăżăźăăăšăŚăŽcase X:
čĄăć¸ăĺşăăŚĺŽéăŽăłăźăăĺ
Ľĺă§ăăăăăŤăăăăăŞăłăżăźă使ç¨ăăŚăăšăŚăŽăłăźăăăăšăŚăŽăąăźăšăăă§ăăŻăăŚăăăă¨ă確čŞă§ăăăăăŤăăăźăŤăŽćĺłăć確ăŤăăžăďźäťĽĺăŤăłăłăă¤ăŠăźăŤçś˛çž
ć§ăăăăă¨ăŤă¤ăăŚç§ăŤčŠąăăžăăďźă
ĺč¨/ĺćĺăŤĺşćăŽăăŽăŻĺŽéăŤăŻčŚĺ˝ăăăžăăă ć§é ä˝ăŤă¤ăăŚăĺăăă¨ăč¨ăăžăăĺ ´ĺăŤăăŁăŚăŻăä˝ĺăŞăăŁăźăŤăăĺĺžăăăăăăŁăźăŤăăĺ°ăŞăăăăăăžăă ć§é ä˝ăŻăžă äžżĺŠă§ăă
ăŞăźăăłĺćĺďźçžĺ¨iotaăŤăăŁăŚć§çŻăăăŚăăăăŽăŞăŠďźăŤă¤ăăŚčŠąăăŚăăĺ ´ĺăŻă確ăăŤă éăăĺćĺďźäşşă ăĺćĺăŤă¤ăăŚčŠąăă¨ăăŤé常芹ăăŚăăăăŽďźăžăăŻçś˛çž ć§ăă§ăăŻäťăăŽĺćĺăŤă¤ăăŚčŠąăăŚăăĺ ´ĺăăăăăŻç˘şăăŤçšĺĽă§ăă ăăăăŻćĄĺźľĺŻč˝ă§ăŻăŞăăăă§ăă
ć§é ä˝ă¨ăŽéĄäźźć§ăŻăăăăăăŞăĺŽĺ ¨ăŤčŞŹćăăŚăăžăăGo1äşćć§ăŽç´ćăŻăăăźăŞăăŽć§é ä˝ăŞăăŠăŤăăăšăŚăŽç´ćăăé¤ĺ¤ăăžăăăăăăŁăŚăăăźäťăăŽć§é ä˝ăŞăăŠăŤă使ç¨ăăăă¨ăŻăăćčŻăă¨ĺźˇăčŚăŞăăăć ŁčĄă§ăăăçŁĺťăŻăăăăă§ăăŻăăžăă ççąăŻăžăŁăăĺăă§ăăăăźăŞăăŽć§é ä˝ăŞăăŠăŤă使ç¨ăăŚăăĺ ´ĺăć§é ä˝ăŻćĄĺźľă§ăăŞăăŞăăžăă
ăăăŻăă ć§é ä˝ăŻăăăŽçšă§ĺćĺă¨ăžăŁăăĺăă§ăă ăăăŚăç§ăăĄăŻăłăăĽăăăŁă¨ăăŚăăăăăćĄĺźľĺŻč˝ăŞćšćłă§ä˝żç¨ăăăă¨ăćăžăăă¨ăăăă¨ăŤĺćăăžăăă
ăăăŻč¨ăŁăŚăăĺćĺă使ç¨ăăă¨ăăăĄăăăăăăăŽă¨ăŠăźăŽă˘ăăŤĺăŤĺşćăŽăąăźăšăĺŤăăăă¨ăă§ăăžăă
ăăŞăăŽäžăŻăăăăąăźă¸ĺ˘çă§ăŻăŞăăăăăťăšĺ˘çďźăăăăŻăźăŻă¨ăŠăźăŤă¤ăăŚčŠąăăă¨ăŤăăďźăŽăżăăŤăăźăăŚăăžăă FromTheNetwork
ăŤďźä˝ăăć§ćăăăăăŤďźăInvalidInternalStateăăčż˝ĺ ăăĺ ´ĺăăăăąăźă¸ăŻăŠăŽăăăŤĺä˝ăăžăăďź ĺăłăłăă¤ăŤăăĺăŤăšă¤ăăă俎ćŁăăĺż
čŚăăăăžăăďź ăăŽĺ ´ĺă掾éç俎垊ă˘ăăŤă§ăŻćĄĺźľă§ăăžăăă ăăăăăłăłăă¤ăŤăăăŤăŻăăăŠăŤăăŽăąăźăšăĺż
čŚă§ăăďź ăăăăă¨ăĺćĺăŤăŻćĺłăăŞăăăă§ăă
çš°ăčżăăžăăăĺćĺăéăăă¨ăŻĺĽăŽčłŞĺă§ăă ç§ăŻćŹĄăŽăăăŞăăŽăŤäšăăžă
ăżă¤ăăŽăăĄă¤ăłăć¸ăăăă¨ăŻăăăăąăźă¸ăĺ°ăăăăŚé ăŽä¸ăŤäżă¤ăŽăŤĺ˝šçŤă¤ă¨ćăăžăă ăžăăă¨ăăŁăżăźăăăšăŚăŽăąăźăšXďźčĄăć¸ăĺşăăŚĺŽéăŽăłăźăăĺ Ľĺă§ăăăăăŤăăăăăŞăłăżăźă使ç¨ăăŚăăšăŚăŽăłăźăăăăšăŚăŽăąăźăšăăă§ăăŻăăŚăăăă¨ă確čŞă§ăăăăăŤăăăźăŤăŽćĺłăć確ăŤăăžăă
ăă ăăăăŽăăăŤăŻăĺă¨ăăŚĺŽéăŽĺćĺăŻĺż
čŚăăăžăăă ăăŽăăăŞăŞăłăăŁăłă°ăăźăŤăŻă iota
ă使ç¨ăăŚ$ const
厣č¨ăăăĽăźăŞăšăăŁăăŻăŤăă§ăăŻăăăă¨ăă§ăăžăăăăă§ăăăšăŚăŽăąăźăšăŻçšĺŽăŽăżă¤ăă§ăăăăĺćĺăă¨čŚăŞăăŚăĺż
čŚăŞăă§ăăŻăĺŽčĄăăžăă ăăăăŽăć
ŁäžăŤăăĺćĺăă使ç¨ăăŚăăăšăŚăŽăšă¤ăăăŤăăăŠăŤăăč¨ĺŽăăĺż
čŚăăăăă¨ăăžăăŻăăšăŚăŽďźć˘çĽăŽďźăąăźăšăăă§ăăŻăăĺż
čŚăăăăă¨ăăŞăźăăłăłăăŞăźăăžăăŻăŞăłăăŁăłă°ăăăŽăŤĺ˝šçŤă¤ăăźăŤăĺŽĺ
¨ăŤä˝żç¨ăăžăă ç§ăŻăăťă¨ăăŠăăŽăăăŤĺä˝ăăĺćĺăăźăŻăźăăčż˝ĺ ăăăă¨ăŤĺ寞ăăăă¨ăăăăăžăăă ă¤ăžăăĺćĺăŻéăăŚăăďźäťťćăŽć´ć°ĺ¤ăĺăăă¨ăă§ăăžăďźăčż˝ĺ ăŽăšăłăźăăćäžăăäťťćăŽăšă¤ăăăŤăăăŠăŤăăč¨ĺŽăăĺż
čŚăăăăžăďźčż˝ĺ ăŽăłăšăăŤĺŻžăăŚăiota-enumăĺĺăŤčż˝ĺ ăăă¨ăŻćăăžăăăăĺ°ăŞăă¨ă彟ăăŻç§ăŽč°éĄă厳ăăăă¨ăŻăăăžăăďźă ăăăććĄăăăŚăăăŽă§ăăă°ăĺéĄăăăžăăă ăăăăăăăŻăăŽććĄăŽćŻćč
ăŽĺ¤§ĺ¤ć°ďźç˘şăăŤćĺăŽăăăšăă§ăŻăŞăďźăćĺłăăăăŽă§ăŻăŞăăăă§ăă
掾éçăŞäżŽĺžŠă¨ćĄĺźľć§ăĺŻč˝ăŤäżă¤ăă¨ăŽéčŚć§ăŤă¤ăăŚăŻćčŚăĺăăăžăăăă¨ăă°ăĺ¤ăăŽäşşăŻăăťăăłăăŁăăŻăăźă¸ă§ăăłă°ă解湺ăăĺéĄăŽăăčŻă解湺çă§ăăă¨äżĄăăŚăăžăă ăăăăăăăăéčŚă§ăăă¨ćăăăĺ ´ĺăŻăĺćĺăć厳ăžăăŻçĄćĺłă¨čŚăŞăăă¨ăŻĺŽĺ ¨ăŤćĺšă§ĺççă§ăă ăăăŚăăăăŻç§ăçăăŚăă質ĺă§ăăăăłăłăă¤ăŠăźăŤăă§ăăŻăĺ Ľăă䝣ăăăŤăăŠăă§ăăă§ăăŻăčŚćąăăă¨ăăăăŹăźăăŞăăäşşă ăĺççăŤčĄăăă¨ăă§ăăćšćłă ĺçďźAPIăŽćĄĺźľć§ă¨é˛ĺăčŠäžĄăăăă¨ăŤăăăă¨ăŤăă使ç¨ăľă¤ăă§ăăăăŽăă§ăăŻăĺż čŚăŤăŞăăžăă
ĺćĺăŽĺ寞č ăŻćă ăćĄĺźľĺŻč˝ă§ăŻăŞăă¨č¨ăăžăăăăˇăŞă˘ăŤĺ/éˇç§ťĺžăăă§ăăŻăĺż čŚă§ăăäşćć§ăĺŁăăă¨ăă§ăăžăă
ăăăĺćĺăŽĺéĄă§ăŻăŞăă¨ăă丝ăŞĺéĄăŻăéçşă¨ă˘ăźăăŁăăĽăŹăźăˇă§ăłăŽĺéĄă§ăă
ĺćĺăŽä˝żç¨ăă°ăăăŚăăäžăćăăăă¨ăăžăăăăăă¤ăăŽçśćłăăă芳細ăŤć¤č¨ăăžăăăă
äž1.ç§ăŻä˝ăŹăăŤăŽéçşč
ă§ăăăä¸é¨ăŽăŹă¸ăšăżă˘ăăŹăšăŤconstăĺż
čŚă§ăăăä˝ăŹăăŤăŽăăăăłăŤĺ¤ă確çŤăăĺż
čŚăăăăžăăçžĺ¨ăGoă§ăŻ1ă¤ăŽč§Łćąşçăăăăăžăăă ă 1ă¤ăŽăăăąăźă¸ăŤĺŻžăăŚăăćźăăĺžăč¤ć°ăŽĺŽć°ăăăăŻăĺĺžă§ăăžăă ç§ăŻ20ĺăŽĺŽć°ăăăšăŚĺĺžăăžăăăăăăăăĺăăżă¤ăă§éĄäźźăăĺĺăćăŁăŚăăĺ ´ĺăă¨ăŠăźăçşçăăĺŻč˝ć§ăăăăžăă ăăă¸ă§ăŻăă大ăăĺ ´ĺăăăŽă¨ăŠăźăçşçăăžăă é˛ĺžĄçăŞăăă°ăŠăăłă°ăTDDă§ăăăé˛ăăŤăŻăéč¤ăăăă§ăăŻăłăźăăé ťçšăŤä˝żç¨ăăĺż
čŚăăăăžăďźéč¤ăăăłăźă=ăăăăŽĺ ´ĺăéč¤ăăă¨ăŠăź/ăăšăďźă 蝢éă使ç¨ăăă¨ăĺć§ăŽĺéĄăŻçşçăăăăăŽĺ ´ĺăĺ¤ăĺ¤ć´ăăăăă¨ăŻăăăžăăďźăŹă¸ăšăżăźă˘ăăŹăšăćŹçŞç°ĺ˘ă§ĺ¤ć´ăăăçśćłăčŚă¤ăăŚăă ăă:)ďźă ăăĄă¤ăŤ/ăăăăŞăŠăăĺĺžăăĺ¤ăçŻĺ˛ĺ
ăŤăăăăŠăăă確čŞăăăă¨ăăăăžăăăăăăéä¸ĺăăĺéĄăŻăăăžăăďźcďźEnum.TryParseăĺç
§ďź
äž2.çść /ă¨ăŠăźăă¸ăăŻăĺăăĺ°ăăŞă˘ă¸ăĽăźăŤăéçşăăŚăăžăă ç§ăĺćĺăăăŠă¤ăăźăăŤăăă¨ă誰ăăăŽĺćĺăŤă¤ăăŚçĽăăă¨ăă§ăăă1ăŽăăšăŚăŽĺŠçšăĺéĄăŞăĺ¤ć´/ćĄĺźľă§ăăžăăăłăźăăăăŠă¤ăăźăăă¸ăăŻăŤĺşăĽăăŚăăĺ ´ĺăéçşă§ĺéĄăçşçăăžăăă
äž3.ăăžăăžăŞă˘ăăŞăąăźăˇă§ăłĺăăŤé ťçšăŤĺ¤ć´ăăćĄĺźľĺŻč˝ăŞă˘ă¸ăĽăźăŤăéçşăăŚăăžăă ăăăŞăăŻăă¸ăăŻ/ă¤ăłăżăźăă§ă¤ăšăćąşĺŽăăăăăŤĺćĺăžăăŻăăŽäťăŽĺŽć°ă使ç¨ăăăŽăŻĺĽĺŚăŞč§Łćąşçă§ăă ăŻăŠă¤ă˘ăłă/ăľăźăăźă˘ăźăăăŻăăŁăŤć°ăăĺćĺçŞĺˇăčż˝ĺ ăăă¨ăăŻăŠăăˇăĽăăĺŻč˝ć§ăăăăžăăăĺŽć°ă使ç¨ăăă¨ăă˘ăăŤăŽäşć¸Źă§ăăŞăçść ăĺĺžăăăăŁăšăŻăŤäżĺăăăă¨ăă§ăăžăă ç§ăŻăă°ăă°ăäşć¸Źă§ăăŞăçść ăăăăŻăŠăăˇăĽă弽ăă ăăăŻăăăăŻăłăăźĺŻč˝ć§/ćĄĺźľăŽĺéĄăĺćĺă§ăŻăŞăéçşăŽĺéĄă§ăăăă¨ă示ăăŚăăžăă ăăŽĺ ´ĺăăŠăŽĺćĺăéŠĺă§ăŞăăăç解ăăŚăăĺ ´ĺăŻăăăăă使ç¨ăăŞăă§ăă ăăă ç§ăăĄăŻé¸ćăăăŽăŤĺĺăŞč˝ĺăćăŁăŚăăă¨ćăăžăă
ç§ăŽćčŚă§ăŻăconstsă¨ăłăłăă¤ăŤćenumăŽä¸ťăŞéăăŻăenumăŤăŻ2ă¤ăŽä¸ťčŚăŞăłăłăăŠăŻăăăăă¨ăăăă¨ă§ăă
äťăŤä¸ĺŠăŞçšăăăă¤ăăăăĺćăăžăă
ăăŹăźăăŽĺŻćŹć§ăăŞăăă°äş¤ćă§ăăžăăă ăăăăSOLIDăŽĺĺăăOăçĽăŁăŚăăĺ ´ĺăăăăŻĺćĺă ăă§ăŞăăéçşĺ
¨čŹăŤăĺ˝ăŚăŻăžăăžăă 誰ăăč¨ăăă¨ăă§ăăžăăç§ăŻä¸Śĺăă¸ăăŻă¨ĺŻĺ¤ć§é ä˝ă§ç§ăŽăăă°ăŠă ăéăăăžăă ĺŻĺ¤ć§é ăçŚć˘ăăžăăăă ăăăŽäťŁăăăŤăĺŻĺ¤/ĺŻĺ¤ăŞăăŽć§é ä˝ăčż˝ĺ ăăŚăéçşč
ăŤé¸ćăăăăă¨ăă§ăăžăă
çľĺąăŽă¨ăăăă¤ăŞăżăŤăćŹ çšăăăăă¨ăŤćł¨ćăăăă¨ćăăžăă
ĺćĺăŽä˝żç¨ăă°ăăăŚăăäžăćăăăă¨ăăžă
夹礟ă§ăăăăăŽăłăĄăłăăŽĺžăăăăŤçŤă¤ć šć ăŻăăžăăŞăă¨ćăăžăă
ăăăŚăç§ăŻăăŞăăč¨ăăă¨ăăăăŚăăžăăă§ăă-ă¤ăžăăĺćĺă使ç¨ăăăă¨ăă°ăăăŚăăĺ ´ćăŽäžă示ăăă¨ă§ăă ăăăăăŠăŽăăăŤĺż čŚă§ăăăă示ăăăăăăăŠăŽăăăŤĺˇă¤ăăă誏ćăăăă¨ăŤăŞăŁăŚăăäžăĺăä¸ăăžăăă
ç§ăăĄăŻĺççăŤĺ寞ăăăă¨ăă§ăăžăăăĺ°ăŞăă¨ăăăšăŚăŽäşşăčŞ ćăćăŁăŚč°čŤăăĺż čŚăăăăžăă
äž1
ăăŹă¸ăšăżăźĺăăŻćŹĺ˝ăŤĺ¤ć´ă§ăăŞăăăŽă¨ăăŚăäźăăăăăăăăžăăăăăăăăłăŤĺ¤ăŤé˘ăăŚăŻăćĄĺźľć§ă¨äşćć§ăŽăăăŤäťťćăŽĺ¤ăĺăă¨ăăçŤĺ ´ăŻĺççă§ăăă¨ćč¨ăăžăă çš°ăčżăăžăăăproto2-> proto3ăŤăŻăžăăŤăăŽĺ¤ć´ăĺŤăžăăŚăăăăăăŻĺŚăă çľé¨ăăčĄăăăžăăă
ăăăăŤăăăăŞăăŞăłăżăźăăăăćăžăăăăŞăăŽăăăăăžăăă
ç§ăŻ20ĺăŽĺŽć°ăăăšăŚĺĺžăăžăăăăăăăăĺăăżă¤ăă§éĄäźźăăĺĺăćăŁăŚăăĺ ´ĺăă¨ăŠăźăçşçăăĺŻč˝ć§ăăăăžăă ăăă¸ă§ăŻăă大ăăĺ ´ĺăăăŽă¨ăŠăźăçşçăăžăă
ĺĺăŽĺ ĽĺăééăăŚăăĺ ´ĺăŻăĺćĺăéăăŚă彚ăŤçŤăĄăžăăă ăˇăłăăŞăăŻĺă使ç¨ăăă䝣ăăăŤint / string-literalsă使ç¨ăăĺ ´ĺăŽăżă
äž2
ĺäşşçăŤăŻă大čŚć¨Ąăăă¸ă§ăŻăă§ăŻăŞăăă¨ăăăă¨ă§ăăˇăłă°ăŤăăăąăźă¸ăăăăŁăăă¨ć˛ăăĺžĺăăăăžăă ăăăăŁăŚăĺćĺăćĄĺźľăăă¨ăăŤăăąăźăšăĺżăăăăăłăźăăŽĺ ´ćăĺ¤ć´ăăăăăĺŻč˝ć§ăŻăŻăăăŤä˝ăă¨ćăăžăă
ăăăăŤăăăăŞăăŞăłăżăźăăăăćăžăăăăŞăăŽăăăăăžăăă
äž3
ăă ăăăăăŻĺćĺăŤć示ăăăćăä¸čŹçăŞăŚăźăšăąăźăšă§ăă éŠĺăŞäžďźăăŽçšĺŽăŽĺéĄăŻăăăăăćŁĺ˝ĺă¨ăăŚä˝żç¨ăăžăă ăăč¨ĺăăăăă1ă¤ăŽăąăźăšăŻăăˇăšăă ăłăźăŤă§ăăăăăŻăĺ˝čŁ ăăăŻăŠă¤ă˘ăłăăľăźăăźă˘ăźăăăŻăăŁă§ăă ăăŽäžăŽä¸čŹĺăŻăă2ă¤äťĽä¸ăŽçŹçŤăăŚéçşăăăăłăłăăźăăłăăăăŽăăăŞĺ¤ă交ćăăăłăźăăă§ăăăé常ăŤĺš ĺşăăăăăăŽăŚăźăšăąăźăšăŽĺ¤§é¨ĺăăŤăăźăă掾éç俎垊ă˘ăăŤă§ăŻăă¨ăŻăšăăźăăăăAPIăăŤăăźăăžăă ă
FTRăç§ăŻăžă ĺćĺăć厳ă§ăăăă¨ăă ăăŤăç´ĺžăăăăă¨ăŻăăŚăăžăăďźç§ăŻăăăăŞăă¨ç˘şäżĄăăŚăăžăďźă ç§ăăŠăăăŁăŚĺ˝źăăăăă ă¨ăăçľčŤăŤéăăăŽăăăăăŚăŞăç§ă彟ăăŤćĺŠăŞč°čŤăç´ĺžă§ăăŞăă¨ćăăŽăă誏ćăăăăă ăăŤă
常ăŤintĺă§ă
iota
ăŻďźĺż
ăăăăăă¨ăŻéăăžăăăďźĺŻč˝ć§ăăăăžăăă const
ăăăăŻăŻăăă§ăŻăŞăăăăžăăžăŞĺŽć°ĺăćă¤ăă¨ăă§ăăžăăĺŽéăćăä¸čŹçăŤććĄăăăŚăăĺćĺĺŽčŁ
ăŽăšăźăăźăťăăă§ăă
ăăŞăăŻé ăŽä¸ă§ĺ¤ăč¨çŽăăĺż čŚăăăăžăă
çš°ăčżăăžăăăĺćĺăćŻćăăĺźć°ă¨ăăŚăăă使ç¨ăăăă¨ăŻă§ăăžăăă enum-declarationăŽĺ ´ĺă¨ĺăăăăŤăĺŽć°ăć¸ăĺşăăă¨ăă§ăăžăă
IotaĺźăŻăăăăăăšăăăĺż čŚăăăăłăźăĺźă§ăă
ăăšăŚăŽĺźăăăšăăăĺż čŚăŻăăăžăăă ăăăăăăŤćăăăŞĺ ´ĺăăăšăăŻăăéăă§ăă ăăă§ăŞăĺ ´ĺăŻăĺŽć°ăć¸ăçăăŚăă ăăăă¨ăŤăăăăšăă§ăăăčĄăăžăă
iota
ăŻăGoă§ĺćĺăĺŽčĄăăăăăŤçžĺ¨ć¨ĺĽ¨ăăăŚăăćšćłă§ăŻăăăžăă- const
厣č¨ăŻăăă§ăă iota
ăŻăéŁçśăăăăžăăŻĺ
ŹĺźăŽconst厣č¨ăć¸ăçăăă¨ăăŤăĺ
ĽĺăçŻç´ăăăăăŽăăä¸čŹçăŞćšćłă¨ăăŚăŽăżćŠč˝ăăžăă
ăăăŚăăŻăăGoăŽăŞăźăăłĺćĺăŤăŻćăăăŤćŹ çšăăăăžăă ăăăăŻä¸ă§ĺşăč¨ĺăăăŚăăžăďźăăŞăăŻăšă¤ăăăŽăąăźăšăĺżăăŚăăă°ăŤă¤ăŞăăăăăăăžăăă ĺĺ犺éăŻăăăžăăă 誤ăŁăŚéăˇăłăăŞăăŻĺŽć°ă使ç¨ăăŚăćçľçăŤçĄĺšăŞĺ¤ăŤăŞăĺŻč˝ć§ăăăăžăďźăă°ăŤă¤ăŞăăďźă
ăăăăĺşĺŽă˝ăŞăĽăźăˇă§ăłďźĺćĺďźă使ç¨ăăŚĺéĄă解湺ăăçšĺŽăŽăăŹăźăăŞăăŤă¤ăăŚč°čŤăăăăăăăăăăŽăăĄăŞăăăŤă¤ăăŚčŠąăăććĄăăăă˝ăŞăĽăźăˇă§ăłăŽăăĄăŞăăăŤĺŻžăăŚăăăă渏ĺŽăăćšăççŁçă§ăăăăăŤćăăăžăă
ç§ăŤă¨ăŁăŚăćŹ çšăŽăťă¨ăăŠăŻăçžĺ¨ăŽč¨čŞă§ĺŽç¨çăŤč§Łćąşă§ăăžăăăŞăłăżăźăăźăŤăŻăçšĺŽăŽç¨ŽéĄăŽconst厣č¨ăć¤ĺşăăăăŽä˝żç¨ćłă確čŞăăžăă ĺĺ犺éăŻăăŽćšćłă§ăŻč§Łćąşă§ăăžăăăăăăŻç´ ć´ăăăăă¨ă§ăŻăăăžăăă ăăăăĺćĺă¨ăŻç°ăŞă解湺çăăăăăăăăžăăă
ăăŹă¸ăšăżăźĺăăŻćŹĺ˝ăŤĺ¤ć´ă§ăăŞăăăŽă¨ăăŚăäźăăăăăăăăžăăăăăăăăłăŤĺ¤ăŤé˘ăăŚăŻăćĄĺźľć§ă¨äşćć§ăŽăăăŤäťťćăŽĺ¤ăĺăă¨ăăçŤĺ ´ăŻĺççă§ăăă¨ćč¨ăăžăă çš°ăčżăăžăăăproto2-> proto3ăŤăŻăžăăŤăăŽĺ¤ć´ăĺŤăžăăŚăăăăăăŻĺŚăă çľé¨ăăčĄăăăžăăă
ăăăç§ă確çŤăăă䞥ĺ¤čŚłăč¨ăŁăççąă§ăă Fe wav形ĺźăŽăăźăšăŻä˝ĺš´ăĺ¤ć´ăăăŚăăăăĺŞăăăăăŻćŠč˝ăĺăăŚăăžăă ć°ăăĺ¤ăćŽăŁăŚăăĺ ´ĺăŻăĺćĺă使ç¨ăăŚăăă¤ăăŽĺ¤ăčż˝ĺ ăăžăă
ĺĺăŽĺ ĽĺăééăăŚăăĺ ´ĺăŻăĺćĺăéăăŚă彚ăŤçŤăĄăžăăă ăˇăłăăŞăăŻĺă使ç¨ăăă䝣ăăăŤint / string-literalsă使ç¨ăăĺ ´ĺăŽăżă
ăŻăăăăăŻç§ăčŻăĺĺăäťăăăŽăŤĺ˝šçŤăĄăžăăăăăăăăŻ1ă¤ăŽĺĺă§ăăă¤ăăŽĺ¤ăć´çăăăŽăŤĺ˝šçŤăĄăžăă ĺ ´ĺăŤăăŁăŚăŻăéçşăăăťăšăéăăŞăăžăă ăŞăźăăżă¤ăăłă°ăŤăăăăŞă˘ăłăăŽć°ă1ă¤ăŤć¸ăăăă¨ăă§ăăžăă
ăă ăăăăăŻĺćĺăŤć示ăăăćăä¸čŹçăŞăŚăźăšăąăźăšă§ăă éŠĺăŞäžďźăăŽçšĺŽăŽĺéĄăŻăăăăăćŁĺ˝ĺă¨ăăŚä˝żç¨ăăžăă ăăč¨ĺăăăăă1ă¤ăŽăąăźăšăŻăăˇăšăă ăłăźăŤă§ăăăăăŻăĺ˝čŁ ăăăŻăŠă¤ă˘ăłăăľăźăăźă˘ăźăăăŻăăŁă§ăă ăăŽäžăŽä¸čŹĺăŻăă2ă¤äťĽä¸ăŽçŹçŤăăŚéçşăăăăłăłăăźăăłăăăăŽăăăŞĺ¤ă交ćăăăłăźăăă§ăăăé常ăŤĺš ĺşăăăăăăŽăŚăźăšăąăźăšăŽĺ¤§é¨ĺăăŤăăźăă掾éç俎垊ă˘ăăŤă§ăŻăă¨ăŻăšăăźăăăăAPIăăŤăăźăăžăă ă
ăă ăăĺŽć°/ĺćĺă使ç¨ăă/使ç¨ăăŞăăă¨ă§ĺéĄăŽć ¸ĺżăĺăé¤ăăăăăă§ăŻăăăžăăăăăă§ăăăăăŻăłăăźĺŻč˝ć§ăŤă¤ăăŚčăăĺż čŚăăăăžăă ĺéĄăŻĺćĺ/ĺŽć°ă§ăŻăŞăă使ç¨äžăŤăăă¨č¨ăăăă§ăă
ĺäşşçăŤăŻă大čŚć¨Ąăăă¸ă§ăŻăă§ăŻăŞăăă¨ăăăă¨ă§ăăˇăłă°ăŤăăăąăźă¸ăăăăŁăăă¨ć˛ăăĺžĺăăăăžăă ăăăăŁăŚăĺćĺăćĄĺźľăăă¨ăăŤăăąăźăšăĺżăăăăăłăźăăŽĺ ´ćăĺ¤ć´ăăăăăĺŻč˝ć§ăŻăŻăăăŤä˝ăă¨ćăăžăă
ăăŽĺ ´ĺă§ăăĺĺăŽĺ¤ćă¨ăłăłăă¤ăŤćăŽăă§ăăŻăŽĺŠçšăăăăžăă
ăăšăŚăŽĺźăăăšăăăĺż čŚăŻăăăžăăă ăăăăăăŤćăăăŞĺ ´ĺăăăšăăŻăăéăă§ăă ăăă§ăŞăĺ ´ĺăŻăĺŽć°ăć¸ăçăăŚăă ăăăă¨ăŤăăăăšăă§ăăăčĄăăžăă
ĺ¤ăăŽĺ ´ĺăăłăźăăŽăăšăŚăŽčĄăăăšăăăĺż čŚăŻăŞăăă¨ăç解ăăŚăăžăăăĺäžăăăĺ ´ĺăŻăăăăăăšăăăăăć¸ăç´ăĺż čŚăăăăžăă ç§ăŻă¤ăŞăżăŞăă§ăăăä˝ăćšćłăçĽăŁăŚăăžăăăç§ăŽĺ¤ăäžăŻĺăŞăĺčŤă§ăă
çš°ăčżăăžăăăĺćĺăćŻćăăĺźć°ă¨ăăŚăăă使ç¨ăăăă¨ăŻă§ăăžăăă enum-declarationăŽĺ ´ĺă¨ĺăăăăŤăĺŽć°ăć¸ăĺşăăă¨ăă§ăăžăă
ĺćĺăŽĺźć°ă§ăŻăăăžăăă
@ăĄăă´ăŁăŻăš
éăăĺćĺďźäşşă ăĺćĺăŤă¤ăăŚčŠąăă¨ăăŤé常芹ăăŚăăăăŽďźăžăăŻçś˛çž ć§ăă§ăăŻäťăăŽĺćĺăŤă¤ăăŚčŠąăăŚăăĺ ´ĺăăăăăŻç˘şăăŤçšĺĽă§ăă ăăăăŻćĄĺźľĺŻč˝ă§ăŻăŞăăăă§ăă
ăžăăĺŽĺ ¨ăŤćĄĺźľăăăă¨ăă§ăăžăăă
ăăŞăăćăŁăŚăăĺ ´ĺ
package p
type Enum int
const (
A Enum = iota
B
C
)
func Make() Enum {...}
func Take(Enum) {...}
ă¨
package q
import "p"
const D enum = p.C + 1
q
ĺ
ă§ăŻă D
ă使ç¨ăăŚăĺŽĺ
¨ă§ăďź p
Enum(3)
ăŽçŹčŞăŽăŠăăŤăčż˝ĺ ăăăŞăéăďźă p
ăŤćťăďź p.Make
ăŽçľćăĺĺžăăŚăăăŽçść
ăD
ăŤéˇç§ťăăăăă¨ăă§ăăžăăă p.Take
ăĺźăłĺşăĺ ´ĺăŻăăăăq.D
ă渥ăăăă A
ă B
ă C
ăŽăăăă1ă¤ă ăăĺĺžăăăăăŤăăĺż
čŚăăăăžăăăăăăŞăă¨ăăă°ăçşçăăžăă ăăăĺéżăăăŤăŻă
package q
import "p"
type Enum int
const (
A = p.A
B = p.B
C = p.C
D = C + 1
)
// needs to return an error if passed D or an unknown state of Enum
func To(Enum) (p.Enum, error) {...}
// needs to return an error if p.Enum has a value not known to the author
// at the time this package was written.
func From(p.Enum) (Enum, error) {...}
č¨čŞăŽăŻăăźăşăăżă¤ăăŽćçĄăŤăăăăăăăŻăăźăşăăżă¤ăăćă¤ăă¨ăŽăăšăŚăŽĺéĄăăăăžăăăăłăłăă¤ăŠăăăŞăăçŁčŚăăŚăăžăăă
ăăŞăăŽäžăŻăăăăąăźă¸ĺ˘çă§ăŻăŞăăăăăťăšĺ˘çďźăăăăŻăźăŻă¨ăŠăźăŤă¤ăăŚčŠąăăă¨ăŤăăďźăŽăżăăŤăăźăăŚăăžăă FromTheNetworkăŤăInvalidInternalStateăďźä˝ăăć§ćăăăăďźăčż˝ĺ ăăĺ ´ĺăăăăąăźă¸ăŻăŠăŽăăăŤĺä˝ăăžăăďź ĺăłăłăă¤ăŤăăĺăŤăšă¤ăăă俎ćŁăăĺż čŚăăăăžăăďź ăăŽĺ ´ĺă掾éç俎垊ă˘ăăŤă§ăŻćĄĺźľă§ăăžăăă ăăăăăłăłăă¤ăŤăăăŤăŻăăăŠăŤăăŽăąăźăšăĺż čŚă§ăăďź ăăăăă¨ăĺćĺăŤăŻćĺłăăŞăăăă§ăă
ĺćĺă ăă§ăăä¸č¨ăŽăăăŤăăŚăčż˝ĺ ăŽçść ă¨ć¸ăčžźăżĺ¤ćé˘ć°ă使ç¨ăăŚçŹčŞăŽăăźă¸ă§ăłăĺŽçžŠăăĺż čŚăăăăžăă
ăă ăăĺćĺă¨ăăŚä˝żç¨ăăĺ ´ĺă§ăĺč¨ĺăŻć§ćĺŻč˝ă§ăăăăăăăŽćšćłă§é常ăŤčŞçśăă¤ĺŽĺ ¨ăŤĺč¨ĺăăćĄĺźľăă§ăăžăă ç§ăŻäžăćăăžăăăăăăć確ăŤč¨ăă¨ă
package p
type Enum pick {
A, B, C struct{}
}
Enum
ăŻćŹĄăŽăăăŤăćĄĺźľăă§ăăžă
package q
import "p"
type Enum pick {
P p.Enum
D struct{}
}
äťĺăŻăć°ăăăăźă¸ă§ăłăŽp
ă§D
$ăčż˝ĺ ăăŚăĺŽĺ
¨ăŤĺŽĺ
¨ă§ăă ĺŻä¸ăŽćŹ çšăŻă q.Enum
ăŽĺ
é¨ăăp.Enum
ăŽçść
ăŤĺ°éăăăăăŤăăăŤăšă¤ăăăăĺż
čŚăăăăă¨ă§ăăăăăăŻć示çă§ć確ă§ăăăĺčż°ăăăăăŤăă¨ăăŁăżăźăŻăšăąăŤăăłăĺăĺşăĺŻč˝ć§ăăăăžăčŞĺçăŤăšă¤ăăă˘ăŚăăăžăă
ăă ăăăăŽăăăŤăŻăĺă¨ăăŚĺŽéăŽĺćĺăŻĺż čŚăăăžăăă ăăŽăăăŞăŞăłăăŁăłă°ăăźăŤăŻăiotaă使ç¨ăăŚconst-declarationsăăăĽăźăŞăšăăŁăăŻăŤăă§ăăŻăăăă¨ăă§ăăžăăăăă§ăăăšăŚăŽăąăźăšăŻçšĺŽăŽăżă¤ăă§ăăăăĺćĺăă¨čŚăŞăăŚăĺż čŚăŞăă§ăăŻăĺŽčĄăăžăă ăăăăŽăć ŁäžăŤăăĺćĺăă使ç¨ăăŚăăăšăŚăŽăšă¤ăăăŤăăăŠăŤăăč¨ĺŽăăĺż čŚăăăăă¨ăăžăăŻăăšăŚăŽďźć˘çĽăŽďźăąăźăšăăă§ăăŻăăĺż čŚăăăăă¨ăăŞăźăăłăłăăŞăźăăžăăŻăŞăłăăŁăłă°ăăăŽăŤĺ˝šçŤă¤ăăźăŤăĺŽĺ ¨ăŤä˝żç¨ăăžăă
ăăăŤăŻ2ă¤ăŽĺéĄăăăăžăă
const / iotaăäťăăŚăăŽăăĄă¤ăłăŽăľăăťăăăŤăŠăăŤăä¸ăăăăĺŽçžŠć¸ăżăŽçŠĺĺăăăĺ ´ĺďź
1ă¤ăŻăéăăĺćĺăžăăŻéăăĺćĺă襨ăăă¨ăă§ăăžăă 丝ăŤéăăĺăăˇăăĽăŹăźăăăăăăŤä˝żç¨ăăăžăăăä¸čŹçăŤä˝żç¨ăăăĺ¤ăŤĺĺăäťăăăăăŤä˝żç¨ăăăă¨ăă§ăăžăă ćśçŠşăŽăăĄă¤ăŤĺ˝˘ĺźăŽăŞăźăăłĺćĺăŤă¤ăăŚčăăŚăżăžăă
const (
//Name is the ID of a record field
Name Record = iota
//EmpID is the ID of an employee ID field
EmpID
//Intermediate values are reserved for future versions
//Custom is the base of custom fields. Any custom field must have a unique ID greater than Custom.
Custom Record = 42
)
ăăăŻă0ă1ăăăăł42ăăŹăłăźăăżă¤ăăŽăăĄă¤ăłă§ăăă¨č¨ăŁăŚăăăăă§ăŻăăăžăăă ăłăłăăŠăŻăăŻăŻăăăŤĺžŽĺŚă§ăăăă˘ăăŤĺăăăŤăŻäžĺĺăĺż čŚăŤăŞăăžăă ďźăăăŻééăăŞăčĄăéăă§ăăăďźďź
2ă¤çŽăŻăĺŽć°ăŠăăŤă使ç¨ăăŚĺŽçžŠăăăçŠĺĺăŻăăăĄă¤ăłăĺśéăăăŚăăăă¨ăćĺłăăă¨ăăĽăźăŞăšăăŁăăŻăŤćłĺŽă§ăăžăă ä¸č¨ăă誤ć¤çĽăçşçăăžăăăĺŽç§ăŞăăŽăŻăăăžăăă go / typesă使ç¨ăăŚĺŽçžŠăăăăŽçäźźĺăć˝ĺşăăăăŽĺăŽĺ¤ăŤĺŻžăăăăšăŚăŽĺăćżăă調ăšăŚăăăšăŚăŤĺż čŚăŞăŠăăŤăĺŤăžăăŚăăăă¨ă確čŞă§ăăžăă ăăăŻĺ˝šçŤă¤ăăăăăžăăăăçžćçšă§ăŻçś˛çž ć§ă示ăăŚăăžăăă ăăšăŚăŽćĺšăŞĺ¤ă確ĺŽăŤăŤăăźăăŚăăžăăăçĄĺšăŞĺ¤ăä˝ćăăăŚăăŞăăă¨ăŻč¨źćăăăŚăăžăăă ăăăăăă¨ăŻă§ăăžăăă ĺ¤ăŽăăšăŚăŽă˝ăźăšăăˇăłăŻăăăăłĺ¤ćăčŚă¤ăăŚăăăăăć˝čąĄçăŤč§ŁéăăŚăçĄĺšăŞĺ¤ăä˝ćăăăŚăăŞăăă¨ăéçăŤäżč¨źă§ăăă¨ăăŚăăreflectăŻçăčŞčăăŚăăŞăăăăĺŽčĄćăŽĺ¤ăŤă¤ăăŚăŻä˝ăč¨ăăžăăăĺăˇăšăă ă§ă¨ăłăłăźăăăăŚăăŞăăăăĺăŽăăĄă¤ăłă
ăăăĺéżăăĺćĺă¨ĺč¨ĺăŽäťŁćżć掾ăăăăžăăăçŹčŞăŽĺéĄăăăăžăă
ĺăŞăăŠăŤrange m n
ăăĺ°ăŞăă¨ămăć大ă§năŽć´ć°ĺăä˝ćăăă¨ăăžăďźăăšăŚăŽvăŤă¤ăăŚămâ¤vâ¤nďźă ăăă§ăĺćĺăŽăăĄă¤ăłăĺśéă§ăăžăă
package p
type Enum range 0 2
const (
A Enum = iota
B
C
)
ăăĄă¤ăłăŽăľă¤ăş=ăŠăăŤăŽć°ă§ăăăăăswitchăšăăźăăĄăłăăăăšăŚăŽĺŻč˝ć§ă使ăćăăăŚăăăăŠăăă100ďź ăŽäżĄé źĺşŚă§ăŞăłăăăăă¨ăă§ăăžăă ăăŽĺćĺăĺ¤é¨ăŤćĄĺźľăăăŤăŻăăăăăłă°ăĺŚçăăăăăŽĺĺ¤ćé˘ć°ăä˝ćăăĺż čŚăăăăžăăăă¨ăŤăăăăăčĄăĺż čŚăăăă¨ç§ăŻä¸ťĺźľăăžăă
ăăĄăăăăăăŻĺŽéăŤăŻĺŽčŁ ăăăżă¤ăăŽéŠăăťăŠĺžŽĺŚăŞăăĄăăŞăźă§ăăăGoăŽäťăŽé¨ĺă§ăŻăăžăćŠč˝ăăžăăă ăžăăăă䝼ĺ¤ăŽç¨éăŻĺ¤ăăŞăăăăăăŞăŚăźăšăąăźăšăăăăžăă
掾éçăŞäżŽĺžŠă¨ćĄĺźľć§ăĺŻč˝ăŤäżă¤ăă¨ăŽéčŚć§ăŤă¤ăăŚăŻćčŚăĺăăăžăăăă¨ăă°ăĺ¤ăăŽäşşăŻăăťăăłăăŁăăŻăăźă¸ă§ăăłă°ă解湺ăăĺéĄăŽăăčŻă解湺çă§ăăă¨äżĄăăŚăăžăă ăăăăăăăăéčŚă§ăăă¨ćăăăĺ ´ĺăŻăĺćĺăć厳ăžăăŻçĄćĺłă¨čŚăŞăăă¨ăŻĺŽĺ ¨ăŤćĺšă§ĺççă§ăă ăăăŚăăăăŻç§ăçăăŚăă質ĺă§ăăăăłăłăă¤ăŠăźăŤăă§ăăŻăĺ Ľăă䝣ăăăŤăăŠăă§ăăă§ăăŻăčŚćąăăă¨ăăăăŹăźăăŞăăäşşă ăĺççăŤčĄăăă¨ăă§ăăćšćłă ĺçďźAPIăŽćĄĺźľć§ă¨é˛ĺăčŠäžĄăăăă¨ăŤăăăă¨ăŤăă使ç¨ăľă¤ăă§ăăăăŽăă§ăăŻăĺż čŚăŤăŞăăžăă
ĺşćŹçăŞĺćĺăŤă¤ăăŚăŻăĺćăăžăă ăăŽăăŁăšăŤăăˇă§ăłăŽéĺ§ćăŤăŻăĺč¨ăżă¤ăăăăé¸ćăăăĺ ´ĺăŻĺăŤä¸ćşă§ăăăăäťă§ăŻăŞăăăăăć厳ă§ăăăăç解ăăŚăăžăă ç§ăŽăăăŤăăăć確ăŤăăŚăăăăăŞăă¨@griesemerăŤćčŹăăžăă
ĺč¨ăżă¤ăăŽĺ ´ĺăăăŞăăč¨ăŁăăă¨ăŻăăłăłăă¤ăŤćăŤăšă¤ăăăçś˛çž çă§ăăăă¨ăčŚćąăăŞăćŁĺ˝ăŞççąă ă¨ćăăžăă ăŻăăźăşăăżă¤ăăŤăŻĺ¤ăăŽĺŠçšăăăăăăă§ć¤č¨ăă3ă¤ăŽăżă¤ăăŽä¸ă§ăĺč¨ăżă¤ăăŻäťăŽăżă¤ăăŽćŹ çšăăŞăćăćčťă§ăăă¨ç§ăŻăžă čăăŚăăžăă ăăăăŻăäťăŽĺŞăăăżă¤ăă¨ĺć§ăŤăä¸ćŁăŞĺ¤ăŤăăŁăŚĺźă辡ăăăăă¨ăŠăźăĺéżăăŞăăăćĄĺźľć§ă掾éçăŞäżŽĺžŠăéťĺŽłăăăă¨ăŞăăżă¤ăăéăăăă¨ăă§ăăžăă
ç§ăPythonăJavaScriptăăăŽäťăŽä¸čŹçăŞĺăŞăč¨čŞăăăgolangă使ç¨ăă丝ăŞççąăŻăĺăŽĺŽĺ ¨ć§ă§ăă ç§ăŻJavaă§ĺ¤ăăŽăă¨ăčĄăăžăăăăJavaăćäžăăgolangă§čŚéăăŚăăăă¨ăŽ1ă¤ăŻăĺŽĺ ¨ăŞĺćĺă§ăă
ĺćĺă§ăżă¤ăăĺşĺĽă§ăăăă¨ăŤĺćăăžăăă intăĺż čŚăŞĺ ´ĺăŻăJavaăŽăăăŤă䝣ăăăŤintăŤĺşĺˇăăŚăă ăăă ĺŽĺ ¨ăŞĺćĺăĺż čŚăŞĺ ´ĺăŻă揥ăŽć§ćăăĺ§ăăăžăă
type enums enum {
foo, bar, baz
}
@rudolfschmidt ăç§ăŻăăŞăăŤĺćăăžăăăăăăăŽăăăŤčŚăăăăăăăžăăďź
type DaysOfTheWeek enum {
Monday
Tuesday
}
ăă ăăĺ°ăăŞč˝ă¨ă犴ăăăăžăăăăźăżăć¤č¨źăăăăJSONăŤĺ¤ćăăăăFSă¨ăăĺăăăăăăĺż
čŚăăăĺ ´ĺăŻă enum
ăĺśĺžĄă§ăăĺż
čŚăăăăžăă
ĺćĺă珌ĺˇăŞăć´ć°ăŽăťăăă§ăăă¨ç˛çŽçăŤäťŽĺŽăăă¨ăiotaăŤăŞăŁăŚăăžăĺŻč˝ć§ăăăăžăă
ă¤ăăăźăˇă§ăłă辡ăăăăăŽăŞăă使ăćšăŽĺŠäžżć§ăčăăŞăăă°ăŞăăžăăă
ăă¨ăă°ăç俥JSONĺ
ăŽĺ¤ăĺćĺăŽćĺšăŞčŚç´ ă§ăăăă¨ăç°ĄĺăŤć¤č¨źă§ăăžăăďź
ă˝ăăăŚă§ă˘ăĺ¤ć´ăăăŚăăă¨č¨ăŁăăăŠăăŞăăžăăďź
ćĺˇé貨ăŽăŞăšăăăăă¨ăăžăăăďź
type CryptoCurrency enum {
BTC
ETH
XMR
}
č¤ć°ăŽăľăźăăăźăăŁăˇăšăă ă¨ăăźăżă交ćăăžăă ăăŞăăăăăăŽä˝ĺăćăŁăŚăăă¨ăăžăăăă
ăăŞăăŤăŻéˇăć´ĺ˛ăăăăăšăăŹăźă¸ĺ
ăŽăăźăżăŽć°ăăăăžăă ćăçľăĄăăă¨ăă°ăăăăăłă¤ăłăŻćçľçăŤăŻćťăŤăžăă 誰ăăăă使ç¨ăăŚăăžăăă
ăăăăŁăŚăć§é ăăĺé¤ăăăă¨ăŤăăžăă
type CryptoCurrency enum {
ETH
XMR
}
ăăăŤăăăăăźăżăĺ¤ć´ăăăžăă enumăŽăăšăŚăŽĺ¤ăăˇăăăăăăă§ăă 大ä¸ĺ¤Ťă§ăă ăăźăżăŽç§ťčĄăĺŽčĄă§ăăžăă ăăŞăăŽăăźăăźăŤă¤ăăŚăŻăŠăă§ăăăăăăăŽăăă¤ăăŻăăăťăŠéăĺăăŚăăŞăăăăă¤ăăŻăŞă˝ăźăšăćăŁăŚăăŞăăăžăăŻĺăŤăăă¤ăăŽççąă§ăăăčĄăăă¨ăă§ăăžăăă
ăăăăăăŞăăŻăăăăăăăźăżăĺăčžźăă§ăăžăă ăăăăŁăŚă2ă¤ăŽĺćĺăćă¤ăă¨ăŤăŞăăžăăĺ¤ăăăŽă¨ć°ăăăăŽă§ăă ă¨ä¸Ąćšă使ç¨ăăăăźăżăăăăźă
ăăăŻăĺćĺăŽĺŽçžŠăŤćčťć§ăćăăăăăăăŽç¨ŽéĄăŽăăźăżăć¤č¨źăăăłăăźăˇăŁăŞăłă°/ă˘ăłăăźăˇăŁăŞăłă°ăăćŠč˝ăćäžăăăă¨ă示ăăŚăăžăă
type CryptoCurrency enum {
ETH = 1, // reminds const?
XMR = 2
}
// this is real life case
v := 3
if v is CryptoCurrency {
// right?
} else {
// nope, provide default value
v = CryptoCurrency.ETH
}
ĺćĺă¨ăŚăźăšăąăźăšăŽéŠç¨ĺŻč˝ć§ăŤă¤ăăŚčăăĺż čŚăăăăžăă
ăă¤ăŠăźăăŹăźăăłăźăăŽć°ĺčĄăçŻç´ă§ăăă°ă2ă¤ăŽć°ăăăăźăŻăźăăĺŚăśăă¨ăă§ăăžăă
ä¸éçšăŻăĺŽéăŤăĺćĺ¤ăä˝ă§ăăăăĺśéăăăă¨ăŞăăĺćĺ¤ăć¤č¨źăăćŠč˝ăćă¤ăă¨ă§ăă ĺćĺăŻăťă¨ăăŠĺăă§ă-ăăăŻĺĺäťăĺŽć°ăŽćă§ăă ĺćĺăŽĺ¤ć°ăŻăĺćĺăŽĺşăŤăŞăĺăŽäťťćăŽĺ¤ă¨çăăăăăă¨ăă§ăăžăă ăăŽä¸ăŤčż˝ĺ ăăăŽăŻăĺ¤ăć¤č¨źăăŚčĄ¨ç¤şăăćŠč˝ă§ăăćĺšăŞĺćĺ¤ăĺŤăžăăŚăăăăŠăăă ăăăŚăăšăăŞăłă°ĺăŽăăăŞäťăŽăăźăăšăăăăăăăăžăăă
é常ăŤĺ¤ăăŽĺ ´ĺăç§ăŻăăăăłăŤďźprotobufăžăăŻthriftďźăćăŁăŚăăŚăčłăćăŤăăăăăŽĺćĺăăăăžăă ăăăăăć¤č¨źăăĺż čŚăăăăĺćĺ¤ăä¸ćăŞĺ ´ĺăŻăăăŽăĄăăťăźă¸ăç ´ćŁăăŚă¨ăŠăźăĺ ąĺăăžăă ăăŽăăăŞăĄăăťăźă¸ăĺŚçăăćšćłăŻäťăŤăăăžăăă ĺćĺăĺăŞăĺŽć°ăŽéăžăă§ăăč¨čŞă§ăŻăčăăăăăăšăŚăŽçľăżĺăăăăă§ăăŻăă大éăŽswitchăšăăźăăĄăłăăä˝ćăă䝼ĺ¤ăŤćšćłăŻăăăžăăă ăăăŻĺ¤§éăŽăłăźăă§ăăăééăăĺż ăĺŤăžăăžăă CďźăŽăăăŞăăŽă使ç¨ăăă¨ăĺćĺăć¤č¨źăăăăăŽçľăżčžźăżăľăăźăă使ç¨ă§ăăăăăćéăĺ¤§ĺš ăŤçŻç´ă§ăăžăă ä¸é¨ăŽprotobufĺŽčŁ ăŻĺŽéăŤăăăĺ é¨ă§ĺŽčĄăăŚăăăăăŽĺ ´ĺăŻäžĺ¤ăăšăăźăăžăă ăăŽăłă°ăăăăŤç°ĄĺăŤăŞăăăŻč¨ăăžă§ăăăăžăăă玹ăăĺşăăŚćĺĺĺăčĄăăă¨ăă§ăăžăă protobufăStringerĺŽčŁ ăçćăăăŽăŻç´ ć´ăăăăă¨ă§ăăăăłăźăĺ ăŽăăšăŚăprotobufă§ăăă¨ăŻéăăžăăă
ăă ăăĺ¤ăäżĺăăćŠč˝ăŻăăĄăăťăźă¸ăç ´ćŁăăăăŞăăăçĄĺšă§ăăŁăŚăăĄăăťăźă¸ăĺŚçăăĺ ´ĺăŤĺ˝šçŤăĄăžăă ăŻăŠă¤ă˘ăłăăŻé常ăĄăăťăźă¸ăç ´ćŁă§ăăžăăăăľăźăăźĺ´ă§ăŻĺ¤ăăŽĺ ´ĺăăăšăŚăăăźăżăăźăšăŤäżĺăăĺż čŚăăăăžăă ăłăłăăłăăç ´ćŁăăăă¨ăŻă§ăăžăăă
ăăăăŁăŚăç§ăŤă¨ăŁăŚăĺćĺ¤ăć¤č¨źăăćŠč˝ăŤăŻçăŽäžĄĺ¤ăăăăžăă ć¤č¨źäťĽĺ¤ăŽä˝ăăăŞăăă¤ăŠăźăăŹăźăăłăźăăŽć°ĺčĄăçŻç´ă§ăăžăă
ăăŽćŠč˝ăăăźăŤă¨ăăŚćäžăăăă¨ăŻăç§ăŤăŻé常ăŤç°ĄĺăŤćăăžăă ăăŽä¸é¨ăŻăă§ăŤstringer-toolăŤĺĺ¨ăăžăă enumer Foo
ăŽăăăŤĺźăłĺşăăăźăŤăăăĺ ´ĺă Foo
fmt.Stringer
ăĄă˝ăăăçćăăďźăă¨ăă°ďź Known() bool
ăĄă˝ăăăçćăăŚäżĺăăăĺ¤ăŻć˘çĽăŽĺ¤ăŽçŻĺ˛ĺ
ăŤăăăžăăăăăă§ĺéĄăčť˝ć¸ăăăžăăďź
@MeroviusăŻăäťăŤä˝ăăŞăăă°äžżĺŠă§ăă ăăăăç§ăŻä¸čŹçăŤautogenăŤĺ寞ăăŚăăžăă ăăăäžżĺŠă§ăăžăćŠč˝ăăĺŻä¸ăŽăąăźăšăŻăä¸ĺşŚăłăłăă¤ăŤă§ăăăăŞăĺŽĺŽăăăăăăłăŤăăăprotobufăŽăăăŞăăŽă§ăă ä¸čŹăŤĺćĺăŤä˝żç¨ăăă¨ăĺç´ăŞĺăˇăšăă ăŽćžčćăŽăăăŤćăăăăžăă ăăăŚăGoăĺĺŽĺ ¨ć§ăŤă¤ăăŚăŠăŽăăăŤăŞăŁăŚăăăŽăăčŚăă¨ăăăăŻč¨čŞčŞä˝ăŽĺ˛ĺŚăŤĺăăŚăăă¨ćăăžăă č¨čŞćŻć´ăŽäťŁăăăŤăĺŽéăŤăŻč¨čŞă¨ăłăˇăšăă ăŽä¸é¨ă§ăŻăŞăă¤ăłăăŠăšăăŠăŻăăŁăŽä¸ăŤăăŽă¤ăłăăŠăšăăŠăŻăăŁăŽéçşăéĺ§ăăžăă č¨čŞăŤćŹ ăăŚăăăăŽăĺŽčŁ ăăăăă§ăŻăŞăăć¤č¨źăŽăăăŤĺ¤é¨ăăźăŤăćŽăăžăă
ă ä¸čŹăŤĺćĺăŤä˝żç¨ăăă¨ăĺç´ăŞĺăˇăšăă ăŽćžčćăŽăăăŤćăăăăžăă
ăăăŻ-GoăŽĺăˇăšăă ăŻćĺă§ćĺłçăŤĺç´ĺăăăŚăăăăă§ăă ăăăăăăăŻĺéĄă§ăŻăăăžăăă§ăăăĺéĄăŻăăăăăăŞăăŽĺéĄăčť˝ć¸ăăăăŠăăă¨ăăăă¨ă§ăăă ăç§ăŻăăă弽ăă§ăŻăŞăăăă¨ăé¤ăă°ăç§ăŻăăăăŠăŽăăăŤăăă§ăŞăăăĺŽéăŤăŻăăăăžăăďźă¨ăŤăăăŞăźăăłĺćĺăćłĺŽăăŚăăĺ ´ĺďźă
ăăăŚăGoăĺĺŽĺ ¨ć§ăŤă¤ăăŚăŠăŽăăăŤăŞăŁăŚăăăŽăăčŚăă¨ăăăăŻč¨čŞčŞä˝ăŽĺ˛ĺŚăŤĺăăŚăăă¨ćăăžăă
GoăŻăĺĺŽĺ ¨ć§ăŽăăšăŚăă§ăŻăăăžăăă IdrisăŽăăăŞč¨čŞăŻăăăšăŚĺĺŽĺ ¨ć§ăŤé˘ăăăăŽă§ăă GoăŻĺ¤§čŚć¨ĄăŞă¨ăłă¸ăă˘ăŞăłă°ăŽĺéĄăŤé˘ăăăăŽă§ăăăăăŽăăăGoăŽč¨č¨ăŻč§Łćąşăăăă¨ăăŚăăĺéĄăŤăăŁăŚćąşĺŽăăăžăă ăă¨ăă°ăăăŽĺăˇăšăă ă§ăŻăAPIăŽĺ¤ć´ăŤăăăăžăăžăŞăă°ăć¤ĺşă§ăă大čŚć¨ĄăŞăŞăăĄăŻăżăŞăłă°ăĺŻč˝ăŤăŞăăžăă ăă ăăĺŚçżă厚ćăŤăăăłăźăăăźăšăŽç¸éăć¸ăăăăľăźăăăźăăŁăŽăłăźăăŽĺŻčŞć§ăéŤăăăăăŤăćĺłçăŤăˇăłăăŤăŤäżăăăŚăăžăă
ăăŽăăăé˘ĺżăŽăăăŚăźăšăąăźăšďźăŞăźăăłĺćĺďźăč¨čŞăĺ¤ć´ăăăŤăĺăăăăŤčŞăżăăăăłăźăăçćăăăăźăŤă§č§Łćąşă§ăăĺ ´ĺăăăăŻGoăŽĺ˛ĺŚăŤé常ăŤä¸č´ăăŚăăăăăŤčŚăăžăă çšăŤăć˘ĺăŽćŠč˝ăŽăľăăťăăă§ăăć°ăăč¨čŞćŠč˝ăčż˝ĺ ăăăă¨ăŻăGoăŽč¨č¨ă¨ä¸č´ăăŚăăŞăăăă§ăă
çš°ăčżăăŤăŞăăžăăăé˘äżăăăă¤ăŠăźăăŹăźăăçćăăăăźăŤă使ç¨ăăŚăĺŽéăŽĺéĄă解湺ăăăŞăćšćłăćĄĺźľă§ăăă°äžżĺŠă§ă-ăă䝼ĺ¤ăŽĺ ´ĺăŻăă¨ăŤăăćŠč˝ăŽč¨č¨ăéçĽăăăăăŤăăăç解ăăĺż čŚăăăăăă§ăă
ăăŁăšăŤăăˇă§ăłăŽă˘ă¤ăă˘ăăăă¤ăçľăżĺăăăžăăăăăăăŤă¤ăăŚăŠăćăăžăăďź
ăăă¤ăăŽĺşćŹçăŞć ĺ ąďź
Name()
ăŻĺćĺĺ¤ć°ăŽĺĺăčżăăžăIndex()
ăŻăčŞĺçăŤĺ˘ĺ ăăĺćĺă¤ăłăăăŻăšăčżăăžăă é
ĺăĺ§ăžăă¨ăăăăĺ§ăžăăžăăăłăźăďź
`` `čĄă
ăăăąăźă¸ăĄă¤ăł
//äžA
type Country enum [struct] {//ĺćĺăŻäťăŽĺăćĄĺźľă§ăăžăďźäžBăĺç
§ďź
Austriaďź "AT"ă "Austria"ăfalseďź// constăŽăăăŤă˘ăŻăťăšă§ăăžăăăăżă¤ăăŻ
Germanyďź "DE"ă "Germany"ătrueďź//ăăŹăăŁăăŻăšďźäžďźCountry.Austriaďź
//The struct will automatically begin when it doesn't match the format EnumName(...) anymore
Code, CountryName string
HasMerkel bool //Totally awesome
}
//ĺćĺăŻäťăŽăăšăŚăŽăżă¤ăă¨ĺć§ăŽăĄă˝ăăăćă¤ăă¨ăă§ăăžă
funcďźc Countryďźtestďźďź{}
func mainďźďź{
printlnďźCountry.Austria.CountryNameďź//ăŞăźăšăăŞă˘
printlnďźCountry.Germany.Codeďź// DE
/* Prints:
Austria
0
Germany
1
*/
for name, country := range Country {
println(name) //Austria
println(name == country.Name()) //true ; also autogenerated
println(country.Index()) //Auto generated increasing index
}
}
//äžB
ăżă¤ăCoolnessenum [int] {
VeryCoolďź10ďź
Coolďź5ďź
NotCoolďź0ďź
} `` `
@sinnlosernameĺćĺăŻé常ăŤç解ăăăăăăŽă§ăŞăăă°ăŞăăŞăă¨ćăăžăă ĺăŽčŞŹćă§ć示ăăăă˘ă¤ăă˘ăŽăăă¤ăăçľăżĺăăăăă¨ăŻăĺż ăăăĺćĺăŽćčŻăŽă˘ă¤ăă˘ăŤă¤ăŞăăă¨ăŻéăăžăăă
䝼ä¸ăŻç°ĄĺăŤç解ă§ăăă¨ćăăžăă
type Day enum {
Monday
Tuesday
...
Sunday
}
Stringer
ă¤ăłăżăźăă§ă¤ăšă使ç¨ďźďźfunc (d Day) String() string {
switch d {
case Monday:
return "mon"
case Tuesday:
return "tues"
...
case Sunday:
return "sun"
}
}
ă¨ăŚăç°Ąĺă§ăă ăăăŽĺŠçšăŻăĺćĺă渥ăă¨ăăŤăăă埡ĺăŞĺăŽĺŽĺ ¨ć§ăĺŻč˝ăŤăăăă¨ă§ăă
func IsWeekday(d Day) bool {
return d != Saturday && d != Sunday
}
ăăă§string
ĺŽć°ă使ç¨ăăŚDay
ă襨ăĺ ´ĺă IsWeekday
ăŻă "sat"
ăžăăŻ"sun"
䝼ĺ¤ăŽćĺĺă示ăăžăăăŻĺšłćĽă§ăďźă¤ăžăă IsWeekday("abc")
ăŻä˝ăčżă/ăăšăă§ăăďźďźă 寞ç
§çăŤăä¸č¨ăŽé˘ć°ăŽĺŽçžŠĺăŻĺśéăăăŚăăăăăé˘ć°ăŻăăŽĺ
ĽĺăŤé˘ăăŚăăćĺłăŽăăăăŽăŤăŞăăžăă
@ljeabmreosn
ăăăă
func IsWeekday(d Day) bool {
return d != Day.Saturday && d != Day.Sunday
}
ç§ăŻgolangăăźă ăĺż čŚăŞćšćłă§č¨čŞăćšĺăăăŽăĺž ă¤ăŽăăăăăăžăăă ç§ăŻčŞ°ăăăŠăšăăŠăłă°ăčŚăŚăżăăă¨ăăĺ§ăă§ăăžăăăăăŻăă§ăŤĺćĺăă¸ă§ăăŞăăŻăšăŞăŠăŽăăăŞăăšăŚăŽćăžăăćŠč˝ăĺăăŚăăžăă
2018ĺš´5ć14ćĽă§ăăăĺćĺăŽăľăăźăăŤă¤ăăŚăŻăžă 芹ăĺăŁăŚăăžăă ä¸ä˝ä˝ăŞăŽďź ĺäşşçăŤç§ăŻgolangăŤĺ¤ąćăăŚăăžăă
ćŠč˝ăĺž ăŁăŚăăéăă¤ăŠă¤ăŠăăĺŻč˝ć§ăăăăă¨ăŻç解ă§ăăžăă ăăăăăăŽăăăŞéĺťşč¨çăŞăłăĄăłăăć稿ăăŚă彚ăŤçŤăĄăžăăă ăłăĄăłăăŻĺ°éăăŚăă ăăă https://golang.org/conductăĺç §ăăŚăă ăăă
ăăăă¨ăă
@ agnivade @ rudolfschmidtăŤĺćăăĺż čŚăăăăžăă GoLangăŻăćŠč˝ăAPIăä¸čśłăăŚăăăă¨ă¨ăGoăŽä˝ćč ăŤăăéĺťăŽéăĄăĺ¤ć´ăăăĺăĺ Ľăăăăăăă¨ă¸ăŽćľćă大ăăăăăăăç§ăŽăć°ăŤĺ ĽăăŽč¨čŞă§ăŻăăăžăăă ăăăăç§ăŻčˇĺ ´ă§ăŽćć°ăŽăăă¸ă§ăŻăăŤăŠăŽč¨čŞăé¸ćăăăăŤă¤ăăŚăŽćććąşĺŽč ă§ăŻăŞăăŁăăăăçžćçšă§ăŻé¸ćăŽä˝ĺ°ăŻăăăžăăă ă ăăç§ăŻăăŽăăšăŚăŽćŹ çšăŤĺăçľăĺż čŚăăăăžăă ăăăăćŁç´ăŞă¨ăăăăăăŻGoLangă§ăłăźăăć¸ăćˇĺăŽăăăŞăăŽă§ă;-)
ç§ăŻgolangăăźă ăĺż čŚăŞćšćłă§č¨čŞăćšĺăăăŽăĺž ă¤ăŽăăăăăăžăăă
ĺŽéăŤăŻăăăšăŚăŽçžäťŁčŞăŽăłă˘ćŠč˝ăĺż čŚă§ăă GoLangăŤăŻăăă¤ăăŽĺŞăăćŠč˝ăăăăžăăăăăă¸ă§ăŻăăäżĺŽçă§ăăă¨ĺçśăăžăăă ĺćĺăă¸ă§ăăŞăăŻăšăŞăŠăŽćŠč˝ăŻăăăăăĺŤăäşşăŤă¨ăŁăŚăŻä¸ĺŠăŞçšăŻăăăžăăăăăăăă使ç¨ăăăäşşăŤă¨ăŁăŚăŻĺ¤ăăŽĺŠçšăăăăžăă
ăăăŚăç§ăŤăăăăăčĄăăăăŽăŻĺç´ăŞăžăžă§ăăăăă¨č¨ăăŞăă§ăă ăăă ăăˇăłăăŤăă¨ăĺŽéăŽćŠč˝ăŞăăăŤăŻĺ¤§ăăŞéăăăăăžăă JavaăŻé常ăŤăˇăłăăŤă§ăăăĺ¤ăăŽćŠč˝ăćŹ ăăŚăăžăă ăăăăŁăŚăJavaéçşč ăăŚăŁăśăźăă§ăăăăăăŽĺźć°ăćŞăă ăă§ăă
ĺŽéăŤăŻăăăšăŚăŽçžäťŁčŞăŽăłă˘ćŠč˝ăĺż čŚă§ăă
ăăĄăăă ăăăăŽăłă˘ćŠč˝ăŻăăĽăźăŞăłă°ĺŽĺ ¨ć§ă¨ĺźă°ăăžăă _Everything_elseăŻč¨č¨ä¸ăŽé¸ćă§ăă ăăĽăźăŞăłă°ĺŽĺ ¨ć§ă¨C ++ăŽéăŤăŻďźăă¨ăă°ďźĺ¤ăăŽăšăăźăšăăăăăăŽăšăăźăšăŤăŻĺ¤ăăŽč¨čŞăčŚă¤ăăăă¨ăă§ăăžăă ĺĺ¸ăŻăă°ăăźăăŤćéŠăĺĺ¨ăăŞăăă¨ă示ĺăăŚăăžăă
GoLangăŤăŻăăă¤ăăŽĺŞăăćŠč˝ăăăăžăăăăăă¸ă§ăŻăăäżĺŽçă§ăăă¨ĺçśăăžăăă
ăăăăă ăăăžă§ăŽă¨ăăăăăăŻăžă ćéˇăăŚăăžăă IMOăăăăäżĺŽçă§ăŞăăă°ăăăăŻăžă ćéˇăăŚăăŞăăŁăă§ăăăă ç§ăăĄăŽćčŚăŻăŠăĄăă丝茳çă§ăăăćčĄçăŤăŻăăžă䞥ĺ¤ăăăăžăăă ćŻé ăăăŽăŻăăśă¤ăăźăŽçľé¨ă¨ĺĽ˝ăżă§ăă ĺĽăŽćčŚăćăŁăŚăăŚăć§ăăžăăăăăăăŻăăśă¤ăăźăăăăĺ ąćăăăă¨ăäżč¨źăăăăŽă§ăŻăăăžăăă
ă¨ăăă§ăäşşă ăčŚćąăăćŠč˝ăŽ10ďź ăćĄç¨ăăăă¨ăăăăäťćĽăŽGoăăŠăăŞăăăćłĺăăă¨ăäťă§ăŻăăăăGoăăă使ç¨ăăŞăă§ăăăă
ĺŽéăăăŞăăŻç§ăŽçăăŽćăéčŚăŞč°čŤăčŚéăăă ăă§ăă ĺ¤ĺăăăŻăăŞăăč¨ăŁăăă¨ăŽăăă¤ăăŤĺŻžăăăŤăŚăłăżăźă§ăăăăă§ăăăă
ăĺćĺăă¸ă§ăăŞăăŻăšăŞăŠăŽćŠč˝ăŻăăăăăĺŤăäşşăŤă¨ăŁăŚăŻä¸ĺŠăŞçšăŻăăăžăăăăăăăă使ç¨ăăăäşşăŤă¨ăŁăŚăŻĺ¤ăăŽĺŠçšăăăăžăăă
ăăăŚăăŞăăăŽäżĺŽć§ăă´ăŠăłăŽćéˇăŽççąă ă¨ćăăžăăďź ăăăŻăgolangăŽĺšçă¨ć¨ćşăŠă¤ăăŠăŞăŽĺŞăăăťăăăŤé˘éŁăăŚăăĺŻč˝ć§ăéŤăă¨ćăăžăă
ăžăăJavaăŻăJava 9ă§éčŚăŞăă¨ăĺ¤ć´ăăăă¨ăăă¨ăăŤăä¸ç¨ŽăŽăăŻăŠăăˇăĽăăçľé¨ăăžăăăăăăŤăăăăăăăĺ¤ăăŽäşşă䝣ćżć掾ăć¤ç´˘ăăăăăŤăŞăăžăăă ăăăăăăŽăŻăŠăăˇăĽăŽĺăŤJavaăčŚăŚăă ăăă éçşč ăŽçć´ťă漽ăŤăăćŠč˝ăăŠăăŠăĺ˘ăăŚăăăŽă§ăăăăŻçľśăăćéˇăăŚăăžăăă
ăĺćĺăă¸ă§ăăŞăăŻăšăŞăŠăŽćŠč˝ăŻăăăăăĺŤăäşşăŤă¨ăŁăŚăŻä¸ĺŠăŞçšăŻăăăžăăăăăăăă使ç¨ăăăäşşăŤă¨ăŁăŚăŻĺ¤ăăŽĺŠçšăăăăžăăă
ăăăŻćăăăŤçĺŽă§ăŻăăăžăăă ăăšăŚăŽćŠč˝ăŻăćçľçăŤăŻă¤ăłăăźăăăăstdlibăăăăąăźă¸ăŤĺ°éăăžăă _Everyone_ăŻăć°ăăćŠč˝ă弽ăăăŠăăăŤé˘äżăŞăăăăăăŤĺŻžĺŚăăĺż čŚăăăăžăă
ăăăžă§ăŽă¨ăăăăăăŻăžă ćéˇăăŚăăžăă IMOăäżĺŽçă§ăŞăăă°ăžă ćéˇăăŚăăŞăăŁăă§ăăă
ăăŽćéˇăŽé ăďźăăăăă°ďźăŻäżĺŽć§ăŤăăăăŽă§ăŻăŞăăăăăć¨ćşăŠă¤ăăŠăŞăć˘ĺăŽč¨čŞćŠč˝ăŽăťăăăăăźăŤăŤăăăăŽă ă¨ćăăžăă ăăăç§ăăăăŤéŁăăŚăăççąă§ăă č¨čŞćŠč˝ăčż˝ĺ ăăŚăăăăŽçšă§ăŻä˝ăĺ¤ăăăžăăă
Cďźă¨TypescriptăăăăŤăŻRust / SwiftăčŚăă¨ă 彟ăăŻçăŁăăăăŞć°ćŠč˝ăčż˝ĺ ăăŚăăžăă CďźăŻăä¸ä¸ăŤĺ¤ĺăăä¸ä˝č¨čŞăŽăžăžă§ăă TypescriptăŻé常ăŤćĽéăŤćéˇăăŚăăžăă Rust / SwiftăŤă¤ăăŚăĺăă§ăă ä¸ćšăGoăŻă2009ĺš´ă¨2016ĺš´ăŤäşşć°ăćĽä¸ćăăžăăăăăăăăăŽéăŻăžăŁăăćéˇăăăĺŽéăŤăŻĺ¤ąăăăŚăăžăăă GoăŻăć°ăăéçşč ăăă§ăŤăăăçĽăŁăŚăăŚăä˝ăăăŽççąă§äťĽĺăŤăăăé¸ćăăŞăăŁăĺ ´ĺăä˝ăćäžăăžăăă Goăăăśă¤ăłăŤĺćťăăŚăăăăă§ăă äťăŽč¨čŞăćŠč˝ăčż˝ĺ ăăăŽăŻăäťăŤä˝ăăăăă¨ăăŞăăăă§ăŻăŞăăĺŽéăŽăŚăźăśăźăăźăšăăăăčŚćąăăŚăăăăă§ăă äşşă ăŻăăłăźăăăźăšăçľśăăĺ¤ĺăăĺéĄăŽăăĄă¤ăłăŤé˘éŁăçśăăăăăŤăć°ăăćŠč˝ăĺż čŚă¨ăăŚăăžăă async / awaităŽăăăŤă ĺŽéăŽĺéĄă解湺ăăăăăŤĺż čŚă§ăăă äťă§ăŻĺ¤ăăŽč¨čŞă§ăăăčŚăăă¨ăă§ăăăŽăŻĺ˝çśăŽăă¨ă§ăă
ćçľçăŤăŻGo2ăçťĺ ´ăăĺ¤ăăŽć°ăăéçşč ăçťĺ ´ăăăă¨ăŻééăăăăžăăă ăăăć°ăăăŚĺ 沢ăăăăăă§ăŻăŞăăć°ăăćŠč˝ă誰ăăŤćçľçăŤĺăćżăăă芌ăăŚăżăăăăŤčŞŹĺžăăăăăăăŞăăăă§ăă äżĺŽć§ăăăăťăŠéčŚă§ăăăŞăă°ăç§ăăĄăŻăăăăŽććĄăăćăŁăŚăăă§ăăăă
ăăŽćéˇăŽé ăďźăăăăă°ďźăŻäżĺŽć§ăŤăăăăŽă§ăŻăŞăăăăăć¨ćşăŠă¤ăăŠăŞăć˘ĺăŽč¨čŞćŠč˝ăŽăťăăăăăźăŤăŤăăăăŽă ă¨ćăăžăă ăăăç§ăăăăŤéŁăăŚăăççąă§ăă
ăăăŚăăăăŻäżĺŽçăŞčăŽçľćă§ăă č¨čŞă[ĺ]ĺš´ăă¨ăŤä˝ă/ăăšăŚăĺŁăĺ ´ĺăăăŞăăŻăăăćăŁăŚăăäşşăăŻăăăŤĺ°ăŞăăŞăăŽă§ăăăŞăăGoăŤă¤ăăŚăăŞăăčŠäžĄăăăă¨ăŻä˝ăăăžăăă
č¨čŞćŠč˝ăčż˝ĺ ăăŚăăăăŽçšă§ăŻä˝ăĺ¤ăăăžăăă
ăăăăă§ăăďź ä¸č¨ăĺç §ă
ă¨ăăă§ă 2017ĺš´ăŽčŞżćťçľćăčŚăăă¨ăăăăžăăďź
č¨čŞă[ĺ]ĺš´ăă¨ăŤä˝ă/ăăšăŚăĺŁăĺ ´ĺ
ăăŽĺžăä˝ăĺŁăăŞăă§ăă ăăă CďźăŻĺ¤§éăŽćŠč˝ăčż˝ĺ ăăä¸ä˝äşćć§ăŤéĺăăăă¨ăŻăăăžăăă§ăăă ăăăŻĺ˝źăăŤă¨ăŁăŚăé¸ćč˘ă§ăŻăăăžăăă C ++ă§ăĺăă ă¨ćăăžăă Goăä˝ăăĺŁăăăŤćŠč˝ăčż˝ĺ ă§ăăŞăĺ ´ĺăăăăŻGoăŽĺéĄă§ăăăăăăăăăăăŠăŽăăăŤĺŽčŁ ăăăŚăăăă¨ăăĺéĄă§ăă
ă¨ăăă§ă2017ĺš´ăŽčŞżćťçľćăčŚăăă¨ăăăăžăăďź
ç§ăŽăłăĄăłăăŻă2017/2018ĺš´ăŽčŞżćťăTIOBEă¤ăłăăăŻăšăăăăłăăžăăžăŞč¨čŞă§ä˝ă辡ăăŁăŚăăăăŤă¤ăăŚăŽç§ăŽä¸čŹçăŞčŚłĺŻăŤĺşăĽăăŚăăžăă
@cznic
誰ăăăăăăŤĺŻžĺŚăăĺż
čŚăăăăžăăăăăŞăăŻăăăă使ç¨ăăĺż
čŚăŻăăăžăăă iotaĺćĺă¨ăăăă使ç¨ăăŚăłăźăăč¨čż°ăăăĺ ´ĺă§ăăăăăčĄăăă¨ăă§ăăžăă ăžăăă¸ă§ăăŞăăŻăć°ăŤĺ
ĽăăŞăĺ ´ĺăŻăă¸ă§ăăŞăăŻăŞăă§ăŠă¤ăăŠăŞă使ç¨ăăŚăă ăăă JavaăŻă严ćšăćă¤ăă¨ăĺŻč˝ă§ăăăă¨ă訟ćăăŚăăžăă
ăăŽĺžăä˝ăĺŁăăŞăă§ăă ăăă
čŻăă˘ă¤ăă˘ă ăă ăăććĄăăăŚăăč¨čŞăŽĺ¤ć´ăŽăťă¨ăăŠă§ăŻăŞăăŤăăŚăăĺ¤ăăŻă_ăăăĺŤăăŚ_ăé大ăŞĺ¤ć´ă§ăă
CďźăŻĺ¤§éăŽćŠč˝ăčż˝ĺ ăăä¸ä˝äşćć§ăŤéĺăăăă¨ăŻăăăžăăă§ăăă
äşĺŽă確čŞăăŚăă ăăďź Visual Cďź2010 BreakingChanges ă ďźćĺăŽWebć¤ç´˘çľćăăăăĺŻä¸ăŽäžă§ăăăăŠăăăć¨ć¸Źăăăă¨ăăă§ăăžăăăďź
ç§ăŽăłăĄăłăăŻă2017/2018ĺš´ăŽčŞżćťăTIOBEă¤ăłăăăŻăšăăăăłăăžăăžăŞč¨čŞă§ä˝ă辡ăăŁăŚăăăăŤă¤ăăŚăŽç§ăŽä¸čŹçăŞčŚłĺŻăŤĺşăĽăăŚăăžăă
ă§ăŻă調ćťçľćă§ĺçč ć°ăĺš´ă 70ďź ĺ˘ĺ ăăŚăăăŽăŤăč¨čŞăćéˇăăŚăăŞăăă¨ăăŠăŽăăăŤç˘şčŞă§ăăžăăďź
ăé大ăŞĺ¤ć´ăăăŠăŽăăăŤĺŽçžŠăăžăăďź ĺćĺăžăăŻă¸ă§ăăŞăăŻăčż˝ĺ ăăĺžă§ăăgoăłăźăăŽăăšăŚăŽčĄăćŠč˝ăăžăă
誰ăăăăăăŤĺŻžĺŚăăĺż čŚăăăăžăăăăăŞăăŻăăăă使ç¨ăăĺż čŚăŻăăăžăăă iotaĺćĺă¨ăăăă使ç¨ăăŚăłăźăăč¨čż°ăăăĺ ´ĺă§ăăăăăčĄăăă¨ăă§ăăžăă ăžăăă¸ă§ăăŞăăŻăć°ăŤĺ ĽăăŞăĺ ´ĺăŻăă¸ă§ăăŞăăŻăŞăă§ăŠă¤ăăŠăŞă使ç¨ăăŚăă ăăă JavaăŻă严ćšăćă¤ăă¨ăĺŻč˝ă§ăăăă¨ă訟ćăăŚăăžăă
ĺćă§ăăžăăă č¨čŞăăăă¨ăă°ă¸ă§ăăŞăăŻăšăŤăŞăă¨ăç§ăăăăă使ç¨ăăŞăăŚăăăăăăŻčłăćă§ä˝żç¨ăăăžăă ĺ é¨çăŤAPIăĺ¤ć´ăăŞăĺ ´ĺă§ăă ăăŽçľćăç§ăŻăăăăŽĺ˝ąéżăé常ăŤĺăăŚăăžăăăŞăăŞăăăăăă使ç¨ăăăăă°ăŠă ăŽć§çŻăé ăăăăă¨ăŞăăă¸ă§ăăŞăăŻăč¨čŞăŤčż˝ĺ ăăćšćłăŻç˘şăăŤăŞăăăă§ăă ĺĽĺăăăŞăźăŠăłăăŞăăă
ăé大ăŞĺ¤ć´ăăăŠăŽăăăŤĺŽçžŠăăžăăďź ĺćĺăžăăŻă¸ă§ăăŞăăŻăčż˝ĺ ăăĺžă§ăăgoăłăźăăŽăăšăŚăŽčĄăćŠč˝ăăžăă
ăăĄăăéăăžăă ăăŽăłăźăăŻăăăŽććĄă§ăŻăłăłăă¤ăŤăăăŞăăŞăăžăă
package foo
var enum = 42
ĺż čŚă¨ăăč¨čăŻă揲ăăăăŽăă¨ăăćĺłă§ăŻăăăžăăă
確ăăŤăăăăŻćĺłăăžăăăăăăŚç§ăŻăăăćąşăăŚćĺłăăžăăă§ăăă ăăĄăăăăăŽăăăŞćŠč˝ăŻĺż čŚăŞăă¨çăăăă¨ăŻă§ăăžăăăăăăŞăç§ăŻä¸čŹçăŤĺż čŚăŞăăŽăŤçăăăă¨ăă§ăăžăă ä˝ăĺż čŚăŞăăăăłă¨ç´ăŤćťăăă¨ăă§ăăžăă
GolangăŻă大čŚć¨ĄăŞăăźă ĺăăŽč¨čŞă§ăăă¨ä¸ťĺźľăăŚăăžăă golangă使ç¨ăăŚĺ¤§čŚć¨ĄăŞăłăźăăăźăšăéçşă§ăăăăŠăăăŻăăăăžăăă ăăŽăăăŤăŻăĺŽčĄćă¨ăŠăźăĺŻč˝ăŞéăĺéżăăăăăŤăéçăłăłăă¤ăŤă¨ĺăă§ăăŻăĺż čŚă§ăă ĺćĺă¨ă¸ă§ăăŞăăŻăŞăă§ăăăčĄăăŤăŻăŠăăăă°ăăă§ăăďź ăăăăŽćŠč˝ăŻăĺăŁăăăŽă§ăăćăŁăŚăăăŽăç´ ć´ăăăăăŽă§ăŻăăăžăăăăćŹć źçăŞéçşăŤăŻçľśĺŻžăŤä¸ĺŻćŹ ă§ăă ăăăăăŞăĺ ´ĺăŻăăŠăă§ăă¤ăłăżăźăă§ă¤ăš{}ă使ç¨ăăăă¨ăŤăŞăăžăă ăłăźăă§interfaces {}ă使ç¨ăăăă¨ăä˝ĺăŞăăăăĺ ´ĺăăăźăżĺăćă¤ăă¨ăŽăă¤ăłăăŻä˝ă§ăăďź
確ăăŤăé¸ćč˘ăăŞăĺ ´ĺăăăăăžăăărustăŽăăăŤăăă§ăŤăăšăŚăŽăăŽăćäžăăgolangăăăĺŽčĄăéă䝣ćżć掾ăăăĺ ´ĺăŻăăŞăăăăăĺż čŚăăăăžăăďź ç§ăŻăgoăŤćŹĄăŽăăăŞčăćšăŽćŞćĽăăăăăŠăăćŹĺ˝ăŤçĺăŤćăŁăŚăăžăă
ĺż čŚă¨ăăč¨čăŻă揲ăăăăŽăă¨ăăćĺłă§ăŻăăăžăăă
ç§ăŻăŞăźăăłă˝ăźăšă¸ăŽăăšăŚăŽč˛˘çŽăĺ°éăăgolangă蜣ĺłăŽăăă¸ă§ăŻăă§ăăĺ ´ĺăăăăŻç´ ć´ăăăăă¨ă§ăăăgolangăŻçĺŁăŤĺăć˘ăăăă¨čăăŚăăăçžćçšă§ăŻéĺąăŞéçşč ăŤă¨ăŁăŚăŻăăăĄăă§ăăăăăăĺ¤ăăćĺżăŻăăăžăăă
APIăĺ¤ć´ăăĺż čŚăŻăăăžăăăć°ăăAPIăăźăăŽăżăă¸ă§ăăŞăăŻă使ç¨ăăĺŻč˝ć§ăăăăžăăăă¤ăłăżăźăăăăŤăŻă¸ă§ăăŞăăŻăŽăŞă䝣ćżć掾ă常ăŤĺĺ¨ăăĺŻč˝ć§ăăăăžăă
ăăăŚă严ćšă¨ăăăłăłăă¤ăŤăĺ°ăé ăăăĺćĺăă¨ĺźă°ăăĺ¤ć°ăŻćĺ°éăŽĺšćă§ăă ĺŽéă99ďź ăŽäşşăŻăăăŤć°äťăăăäťăŽ1ďź ăŻč¨ąĺŽšă§ăăĺ°ăăŞĺ¤ć´ăčż˝ĺ ăăă ăă§ć¸ăżăžăă ăăăŻăăă¨ăă°JavaăŽă¸ă°ă˝ăźăăşăŤăŤĺšćľăăăăŽă§ăŻăăăžăăă
ăăăŚă严ćšă¨ăăăłăłăă¤ăŤăĺ°ăé ăăăĺćĺăă¨ĺźă°ăăĺ¤ć°ăŻćĺ°éăŽĺšćă§ăă ĺŽéă99ďź ăŽäşşăŻăăăŤć°äťăăăäťăŽ1ďź ăŻč¨ąĺŽšă§ăăĺ°ăăŞĺ¤ć´ăčż˝ĺ ăăă ăă§ć¸ăżăžăă
誰ăăăăŽăăăŞç´ ć´ăăăăăăŠăźăăłăšăćă¤č¨č¨ă¨ĺŽčŁ ăćăŁăŚćĽăăă¨ăă§ăăă°ă誰ăă嚸ăăŤăŞăă§ăăăă ďź15292ăŤč˛˘çŽăăŚăă ăăă
ăă ăăăăăăăăăăłă°ăăźăżăŞăă§čŞĺăŤćĺŠăŞć°ĺăĺźăăă¨ăăĺĺăŽă˛ăźă ăŽĺ ´ĺăŻăçłă訳ăăăžăăăăç§ăŻĺĺ ăăžăăă
ă¸ă§ăăŞăăŻă¨ăŽé庌ăŽéăăŤă¤ăăŚä˝ăć°ĺăŻăăăžăăďź
ăăăŚăăŻăăăăăăŽć°ĺ¤ăŻăăĺćĺăă¨ĺźă°ăăĺ¤ć°ăćă¤ç˘şçăăăăťăŠéŤăăŞăăă¨ă示ăăŚăăă ăăŞăŽă§ăăăźăżăŤčŁäťăăăăŚăăžăăă
ĺćĺăGoăŤčż˝ĺ ăăăăŠăăăăžăăŠăŽăăăŤčż˝ĺ ăăăă¨ăăĺ ˇä˝çăŞčłŞĺăŤă¤ăăŚăŻăăăŽĺéĄăčłźčŞăăŚăăäşşăăăăăăăăă¨ăçăăăŤćăĺşăăăăă¨ćăăžăă ăGoăŻčŻăč¨čŞă§ăăďźăă¨ăăä¸čŹçăŞčłŞĺă ă¨ăGoăŻćŠč˝ăŽćäžăŤăăŁă¨çŚçšăĺ˝ăŚăăšăă§ăăďźă ăăăăĺĽăŽăăŠăźăŠă ă§č°čŤăăăťăăăăă§ăăăă
ă¸ă§ăăŞăăŻă¨ăŽé庌ăŽéăăŤă¤ăăŚä˝ăć°ĺăŻăăăžăăďź
ăăăăăăăç§ăä˝ăć稿ăăŞăăŁăççąă§ăă ç§ăŻăăłăšăăăźăăŤăăăă¨ăŻă§ăăŞăă¨ć稿ăăă ăă§ăă
ăăăŚăăŻăăăăăăŽć°ĺ¤ăŻăăĺćĺăă¨ĺźă°ăăĺ¤ć°ăćă¤ç˘şçăăăăťăŠéŤăăŞăăă¨ă示ăăŚăăă ăăŞăŽă§ăăăźăżăŤčŁäťăăăăŚăăžăăă
ăăăŻćˇˇäšąăăŚăăžăă ăšăăźăăŚăłăŻă¸ă§ăăŞăăŻĺťčŹĺăŤé˘ăăăăŽă§ăăă ăenumăăŻä¸ä˝äşćć§ăŤé˘ăăăăŽă§ăăă誤ăŁăă_Every_čĄăŽgoăłăźăăŻenumăžăăŻă¸ă§ăăŞăăŻăčż˝ĺ ăăĺžăćŠč˝ăăžăăă čŤćąă ďźç§ăŽăă¨ă埡調ăăžăďź
@MeroviusăăŞăăŻćŁç´ă§ăăç§ăŻäťéťăŁăŚăăžăă
ăăăĺćĺăŤćťăă¨ăăăŽĺéĄăŽĺ 厚ă§ăăăGoăă¸ă§ăăŞăăŻăĺż čŚă¨ăăççąăŤă¤ăăŚăŽč°čŤăŻĺŽĺ ¨ăŤç解ăăŚăăžăăăGoăĺćĺăĺż čŚă¨ăăççąăŤă¤ăăŚăŽč°čŤăŻăŻăăăŤä¸ĺŽĺŽă§ăă ĺŽéăç§ăŻä¸č¨ăŽhttps://github.com/golang/go/issues/19814#issuecomment -290878151ă§ăăăĺ°ăăžăăăăăžă ĺćşăăŚăăžăă ăăăŤĺŻžăăčŻăçăăăăŁăăŞăăç§ăŻăăăéăăžăăă 誰ăăăăăçš°ăčżăăăăăăćăăă¨ăă§ăăžăăďź ăăăă¨ăă
@ianlancetaylorăŚăźăšăąăźăšăŻč¤éă§ăŻăŞăă¨ćăăžăăĺ¤ăäşĺĺŽçžŠăăăĺ¤ăŽăťăăăŤĺąăăăă¨ăäżč¨źăăăżă¤ăăťăźăăŞćšćłăĺż čŚă§ăăăăăŻăäťćĽăŽGoă§ăŻä¸ĺŻč˝ă§ăă ĺŻä¸ăŽĺéżçăŻăRPCăé˘ć°ĺźăłĺşăăŞăŠăăłăźăă¸ăŽăăšăŚăŽĺŻč˝ăŞă¨ăłăăŞăă¤ăłăă§ćĺă§ć¤č¨źăăăă¨ă§ăăăăăŻćŹčłŞçăŤäżĄé źć§ăăăăžăăă ĺ垊ăăăăăŽäťăŽć§ćä¸ăŽĺŞăăçšăŤăăăĺ¤ăăŽä¸čŹçăŞăŚăźăšăąăźăšăç°ĄĺăŤăŞăăžăă ăăŞăă䞥ĺ¤ăăăă¨ćăăăŠăăăŻä¸ťčŚłçă§ăăăćăăăŤä¸č¨ăŽč°čŤăŽăŠăăăăŽĺă誏ĺžăăăăŽă§ăŻăŞăăŁăăŽă§ăç§ăŻăăăžă§č¨čŞăŹăăŤă§ćąăăăăă¨ăćŹčłŞçăŤăăăăăžăăă
@ianlancetaylor ďźăăšăŚăĺĺŽĺ ¨ć§ă¨é˘äżăăăăžăă ăżă¤ăă使ç¨ăăŚăăżă¤ăăăšăäşćć§ăŽăŞăăżă¤ăăŽä˝żç¨ăŤăăăŠăłăżă¤ă ă¨ăŠăźăŽăŞăšăŻăćĺ°éăŤćăăžăă çžćçšă§ăŻăgoă§ć¸ăčžźăăă¨ăă§ăăžă
if enumReference == 1
çžćçšă§ăŻăĺćĺăŻĺăŞăć°ĺ¤ăžăăŻăăŽäťăŽăăŞăăăŁăăăźăżĺă§ăăăăă§ăă
ăăŽăłăźăăŻăžăŁăăä¸ĺŻč˝ă§ăăăéżăăăšăă§ăă ä˝ĺš´ăĺăŤJavaăłăăĽăăăŁă§čĄăŁăăŽă¨ĺăč°čŤăă彟ăăéčŚć§ăç解ăăăăăŤĺćĺăĺ°ĺ Ľăăççąă§ăă
ăăŞăă ăăć¸ăăă¨ăă§ăăăŻăă§ă
if enumReference == enumType
if enumReference == 1
ăăăé ăăăćšćłă§çşçăăĺŽčĄćăŤăŽăżçşçăăčż˝ĺ ăŽĺéĄăŤă¤ăŞăăĺŻč˝ć§ăăăăˇăăŞăŞăćłĺăăăŽăŤăăăžăĺ¤ăăŽăăĄăłăżă¸ăźăŻĺż
čŚăăăžăăă
ăă č¨ĺăăăăŽă§ăăăGoăŤăŻăăŽĺŻč˝ć§ăăăăžăăăăăă°ăŠăăłă°ăŽć°ăăćŚĺżľăăăŠăă¤ă ăŤă¤ăăŚčŠąăĺăăăăŤăä˝ĺš´ăŤăăăăŁăŚč¨źćăăç解ăăăŚăăăăŽăćŚĺżľăăăă§č°čŤăăăăŽăŻĺĽĺŚă§ăă ĺăŽĺŽĺ ¨ć§ă確äżăăăăăŽĺĽăŽćšćłăăăĺ ´ĺăŻăĺćĺăăăĺŞăăăăŽăăăăăăăăžăăăăç§ăŤăŻăăăăžăăă
GoăŤăŻăăŽĺŻč˝ć§ăăăăžăăăăăă°ăŠăăłă°ăŽć°ăăćŚĺżľăăăŠăă¤ă ăŤă¤ăăŚčŠąăĺăăăăŤăä˝ĺš´ăŤăăăăŁăŚč¨źćăăç解ăăăŚăăăăŽăćŚĺżľăăăă§č°čŤăăăăŽăŻĺĽĺŚă§ăă
AfaisăŻăçšăŤă¸ă§ăăŞăăŻăšăĺč¨ĺăŞăŠăŤé˘ăăäťăŽč°čŤăăăŠăăźăăŚăăéăăăăćăŁăŚăăăăŠăăă§ăŻăŞăăăăăăŠăŽăăăŤĺŽčŁ ăăăăŤă¤ăăŚă§ăă Javaĺăˇăšăă ăŻé常ăŤćĄĺźľć§ăăăăĺĺăŤäťć§ăĺŽăăăăŚăăžăă ăăăŻĺ¤§ăăŞéăă§ăă
Goă§ăŻăăłăłăă¤ăŠăŽč¤éăăĺ˘ăăăăŤăč¨čŞăŤćŠč˝ăčż˝ĺ ăăćšćłăčăĺşăăă¨ăăŚăăžăă ăăăŻé常ăăžăăăžăćŠč˝ăăă彟ăăŤăăăăŽćĺăŽă˘ă¤ăă˘ăćžćŁăăăžăă
ç§ăăăăăăŽĺŞĺ é ä˝ăŻçžĺ¨ăŽĺ˝˘ĺźă¨ĺ質ă§ăŻçĄćĺłă ă¨ćăăžăăăćĺăŽçăŻăĺŻč˝ăŞéăĺç´ă§ćˇˇäšąăŽĺ°ăŞăĺŽčŁ ăčăĺşăăă¨ă§ăă äťăŽä˝ăăŻăăŞăăăăăŤĺé˛ăăăžăăăimoă
@ derekperkins @ rudolfschmidtăăăă¨ăă C ++ăŤăŻĺćĺăăăăžăăăććĄăăŚăăćŠč˝ăŻC ++ăŤăŻăŞăăă¨ăć確ăŤăăŚăăăžăă ăăăăŁăŚăăăăŤă¤ăăŚćăăăŞăă¨ăŻä˝ăăăăžăăăă
ä¸čŹăŤăĺćĺăŽĺ¤ć°ăăăŽĺćăŽĺ¤ăŽăżăĺăĺ Ľăăăă¨ăă§ăăĺ ´ĺăăăăŻĺ˝šăŤçŤăĄăžăăă çšăŤăäťťćăŽć´ć°ăăĺćĺă¸ăŽĺ¤ćăĺż čŚă§ăă ăăăăŞăă¨ăăăăăŻăźăŻćĽçśăäťăăŚĺćĺăé俥ă§ăăžăăă ă§ăăžăăăĺćĺ¤ăă¨ăŤĺ¤§ćĺă¨ĺ°ćĺăĺşĺĽăăăšă¤ăăăä˝ćăăĺż čŚăăăăžăăăăăŻé常ăŤé˘ĺăŞä˝ćĽăŽăăă§ăă ăăă§ăĺ¤ćăčĄăă¨ăăăłăłăă¤ăŠăŻăĺĺ¤ćä¸ăŤĺ¤ăćĺšăŞĺćĺ¤ă§ăăăăŠăăăŽăă§ăăŻăçćăăžăăďź ăăăŚăĺ¤ăçĄĺšăŞĺ ´ĺăŻăăăăŻăŤăŞăăžăăďź
ĺćĺăŽĺ¤ăŻăˇăźăąăłăˇăŁăŤă§ăăĺż čŚăăăăžăăăăăă¨ăC ++ăŽăăăŤäťťćăŽĺ¤ăĺăăă¨ăă§ăăžăăďź
Goă§ăŻăĺŽć°ăŻĺćĺŽăăăŚăăŞăăăăć´ć°ăăĺćĺă¸ăŽĺ¤ćă訹ĺŻăăĺ ´ĺă if enumVal == 1
ăçŚć˘ăăăŽăŻĺĽĺŚă§ăă ăăăăç§ăăĄăŻă§ăăă¨ćăăžăă
GoăŽä¸čŹçăŞč¨č¨ĺĺăŽ1ă¤ăŻăGoăä˝ćăăäşşăŻăĺă§ăŻăŞăăłăźăăä˝ćăăăă¨ă§ăă ăłăźăăć¸ăă¨ăăŤĺ˝šçŤă¤ĺćĺăăĺžăăăĺŠçšăŻăžă ăăăăžăăă ăăăăŻăGoăŤăŻé常ăŞă税éĄăŽĺĺśç´ăŽăťăăăčż˝ĺ ăăŚăăăăă§ăă čŻăăćŞăăăGoăŻĺăŽĺ¤ăĺśĺžĄăăăĄăŤăăşă ăćäžăăŚăăžăăă ăăăăŁăŚăGoăŤĺćĺăčż˝ĺ ăăăă¨ăćŻćăăč°čŤăŻăžă 誏ĺžĺăăŞăăăăŤćăăăă¨ç§ăŻč¨ăăŞăăă°ăŞăăžăăă
çš°ăčżăăžăăăĺćĺăçžĺ¨ăŽçść ăŤäżăĄăăăŽä¸ăŤćŠč˝ăčż˝ĺ ăăăă¨ăŤčłćă§ăă
int
ăŽĺ¤ăŻăäťťćăŽć´ć°ĺćĺăŤĺ¤ćĺŻč˝ă§ăăĺż
čŚăăăăžăăăăŽä¸ăŤćäžăăăăăŽăŻćŹĄăŽă¨ăăă§ăă
-1
ăçšĺŽăŽĺćĺFoo
ăŽćĺšăŞĺćĺ¤ă§ăŞăĺ ´ĺăćĺĺĺăŻ-1
ăčżăĺż
čŚăăăăžăăç§ăŽćŁĺ˝ăŞççąăŻăăłăźăăč¨čż°ăăŚăă°ăĺéżăăăă¨ă§ăă ăăăăŽăżăšăŻăŻăăšăŚăéçşč ăćä˝ćĽă§čĄăăŽăŻé˘ĺă§ä¸čŚă§ăăăăłăźăăăăŤăăšăŻăŞăăăč¤éăŤăăĺ¤é¨ăăźăŤăĺ°ĺ Ľăăăă¨ăăăăăžăă ăăăăŽćŠč˝ăŻăĺćĺăé庌ăŤč¤éăŤăăăĺśéăăăăăăă¨ăŞăăĺćĺăăĺż čŚăŞăăšăŚăăŤăăźăăžăă GoăŤăŻSwiftăJavaăŽĺćĺăŽăăăŞăăŽăŻĺż čŚăŞăă¨ćăăžăă
switchăšăăźăăĄăłăăăăšăŚăŽĺŻč˝ăŞĺćĺ¤ăăŤăăźăăăă¨ăăłăłăă¤ăŤćăŤć¤č¨źăăăă¨ăŤă¤ăăŚăŽč°čŤăăăăžăăă ç§ăŽććĄă§ăŻĺ˝šăŤçŤăăŞăă§ăăăă ćŻć¸ăă§ăăŻăĺŽčĄăăŚăçĄĺšăŞĺćĺ¤ăŻăŤăăźăăăŞăăăăăăăăĺŚçăăăŤăŻăăăŠăŤăăŽăąăźăšăĺż čŚă§ăă ăăăŻă掾éçăŞăłăźă俎垊ăăľăăźăăăăăăŤĺż čŚă§ăă ăăă§ă§ăăăă¨ăŻăswitchăšăăźăăĄăłăăŤăăăŠăŤăăŽăąăźăšăăŞăĺ ´ĺăŤčŚĺăçćăăăă¨ă ăă ă¨ćăăžăă ăăăăăăăŻč¨čŞăĺ¤ăăŞăăŚăčĄăăă¨ăă§ăăžăă
@ianlancetaylorăăŞăăŽč°čŤăŤăŻăăă¤ăăŽćŹ éĽăăăă¨ćăăžăă
ä¸čŹăŤăĺćĺăŽĺ¤ć°ăăăŽĺćăŽĺ¤ăŽăżăĺăĺ Ľăăăă¨ăă§ăăĺ ´ĺăăăăŻĺ˝šăŤçŤăĄăžăăă çšăŤăäťťćăŽć´ć°ăăĺćĺă¸ăŽĺ¤ćăĺż čŚă§ăă ăăăăŞăă¨ăăăăăŻăźăŻćĽçśăäťăăŚĺćĺăé俥ă§ăăžăăă
ăăă°ăŠăăźăŽć˝čąĄĺăŻĺéĄăăăžăăă Go
ăŻĺ¤ăăŽć˝čąĄĺăćäžăăžăă ăă¨ăă°ă揥ăŽăłăźăăŻăłăłăă¤ăŤăăăžăăă
package main
import "fmt"
const NULL = 0x0
func main() {
str := "hello"
if &str == NULL {
fmt.Println("str is null")
}
}
ăăăă C
ă§ăŻăăăŽăšăżă¤ăŤăŽăăă°ăŠă ăăłăłăă¤ăŤăăăžăă ăăăŻă Go
ă埡ăĺäťăăăăŚăăă C
ăŻĺäťăăăăŚăăŞăăăă§ăă
ĺćĺăŽă¤ăłăăăŻăšăŻĺ é¨ăŤć źç´ăăăŚăăĺ ´ĺăăăăžăăăĺ¤ć°ăŽă˘ăăŹăšă¨ĺć§ăŤăć˝čąĄĺă¨ăăŚăŚăźăśăźăŤăŻé襨示ăŤăŞăŁăŚăăžăă
@zerkmsăŻăăăăăŻ1ă¤ăŽĺŻč˝ć§ă§ăăă d
ăŽĺăčăăă¨ăĺć¨čŤăĺŻč˝ă§ăăăŻăă§ăă ăă ăăĺćĺăŽäżŽéŁžăăă使ç¨ćłďźäžăŽăăăŤďźăŻĺ°ăčŞăżăăăăŞăŁăŚăăžăă
@ianlancetaylorăŻăăăŞăă芹ăăŚăăĺćĺăŽé常ăŤCăăźă¸ă§ăłă§ăă ăăŁă¨ăăăăăŽäşşăăăă¨ćăăžăăăăăăćăă§ăăžăăăimoďź
ĺćĺ¤ăŤăŻć°ĺ¤ăăăăăŁăĺŤăăŞăă§ăă ăăă ĺĺćĺăŽĺ¤ăŻăăłăłăă¤ăŤćăŤéŠç¨ăăăć°ĺ¤ăäťăŽĺćĺă¨ăŻé˘äżăŽăŞăăĺĺĽăŽăŠăăŤăŽçŹčŞăŽćéăŚăăăźăšă§ăăĺż
čŚăăăăžăă ăăŽăăăŞĺ¤ăŽăă˘ă§ĺŽčĄă§ăăăŽăŻă ==
ăžăăŻ!=
ă ăă§ăă ăăŽäťăŽćä˝ăŻăăĄă˝ăăă¨ăăŚăăžăăŻé˘ć°ă使ç¨ăăŚĺŽçžŠă§ăăžăă
ĺŽčŁ
ăŻăăăăŽĺ¤ăć´ć°ăŤăłăłăă¤ăŤăăžăăăăăăŻĺŽĺ
¨ă§ăŞăăĺçăăĺ ´ĺăé¤ăăŚăăăă°ăŠăăźăŤç´ćĽĺ
ŹéăăăćŁĺ˝ăŞççąăăăĺşćŹçăŞăă¨ă§ăŻăăăžăăă bool(0)
ăĺŽčĄăăŚfalse
$ăĺĺžă§ăăŞăăŽă¨ĺăççąă§ă
ĺćĺăć°ĺ¤ăžăăŻăăŽäťăŽăżă¤ăă¨ăŽéă§ĺ¤ćăăĺ ´ĺăŻăăăšăŚăŽăąăźăšăć¸ăĺşăăçśćłăŤéŠăăă¨ăŠăźĺŚçăĺŤăăžăă ăăăé˘ĺăŞĺ ´ĺăŻăstringerăŞăŠăŽăłăźăă¸ă§ăăŹăźăżăźăžăăŻĺ°ăŞăă¨ăä˝ăă使ç¨ăăŚăswitchăšăăźăăĄăłăăŽăąăźăšăŤĺ Ľĺăăžăă
ĺ¤ăăăăťăšĺ¤ăŤé俥ăăĺ ´ĺăć確ăŤĺŽçžŠăăăć¨ćşăŤĺžăŁăŚăăĺ ´ĺăăžăăŻă˝ăźăšăăăłăłăă¤ăŤăăăăăă°ăŠă ăŽĺĽăŽă¤ăłăšăżăłăšă¨é俥ăăŚăăăă¨ăăăăŁăŚăăĺ ´ĺăăžăăŻä˝ăăä˝ćăăĺż
čŚăăăĺ ´ĺăŻăintăéŠăăŚăăžăăĺéĄăçşçăăĺŻč˝ć§ăăăĺ ´ĺă§ăăĺŻč˝ăŞéăćĺ°ăŽăšăăźăšăŤĺăžăăžăăăé常ăŻăăăăŽăăăăĺ˝ăŚăŻăžăăŞăăăăĺ¤ăĺĺŽçžŠăŽă˝ăźăšé ĺşăŽĺ˝ąéżăĺăăŞăăăăŤćĺĺ襨çžă使ç¨ăăăă¨ăăĺ§ăăăžăă ăăăťăšAăŽă°ăŞăźăłăăăăťăšBăŽăăŤăźăŤăŞăăă¨ăŻćăžăăăăăžăăăĺŽçžŠăŽă˘ăŤăăĄăăăé ăçśćăăăăăŤăäťăŽčŞ°ăăă°ăŞăźăłăŽĺăŤăăŤăźăčż˝ĺ ăăĺż
čŚăăăă¨ĺ¤ćăăăăă§ăă unrecognized color "Blue"
ăĺż
čŚă§ăă
ăăăŻăĺ¤ăăŽçść ăć˝čąĄçăŤčĄ¨ăăăăŽĺŞăăĺŽĺ ¨ăŞćšćłă§ăă ăăăăŽçść ăä˝ăćĺłăăăăĺŽçžŠăăăăăŤăăă°ăŠă ăé˘ăăžăă
ďźăăĄăăăĺ¤ăăŽĺ ´ĺăăăźăżăăăăăŽçść ăŤé˘éŁäťăăăĺ ´ĺăăăŽăăźăżăŽăżă¤ăăŻçść ăă¨ăŤç°ăŞăăžăăăăăďź
@ljeabmreosnç§ăŽăă¤ăłăăŻăGoăć´ć°ăăĺćĺă¸ăŽĺ¤ćă訹ĺŻăăŚăăĺ ´ĺăĺăŞăĺŽć°ăčŞĺçăŤĺćĺăŤĺ¤ćăăăăŽăŻĺ˝çśă ă¨ăăăă¨ă§ăăă GoăŻć´ć°ăăăă¤ăłăżĺă¸ăŽĺ¤ćă訹ĺŻăăŚăăŞăăăăĺäžăŻç°ăŞăăžăă
@jimmyfrascheć´ć°ĺă¨ĺćĺăŽéă§ĺ¤ćăăăšă¤ăăăä˝ćăăĺż čŚăăăĺ ´ĺăGoă§ĺéĄăŞăćŠč˝ăăăă¨ăŤĺćăăžăăăçç´ăŤč¨ăŁăŚăč¨čŞčŞä˝ăŤčż˝ĺ ăăăŽăŻĺĺăŤĺ˝šăŤçŤăăŞăăăă§ăă ăăăŻăĺč¨ĺăŽçšćŽăŞăąăźăšăŤăŞăăžăăăăăŤă¤ăăŚăŻăďź19412ăĺç §ăăŚăă ăăă
ăăăŤăŻăăăăăŽććĄăăăăžăă
ä¸čŹçăŞăłăĄăłăďźĺćĺă¨ăŽéă§ĺ¤ćă§ăăĺşăŤăŞăĺ¤ďźintăŞăŠďźăĺ ŹéăăŞăććĄăŤă¤ăăŚăŻăăăăŤăăă¤ăăŽčłŞĺăŤçăăžăă
ĺćĺăŽăźăĺ¤ăŻä˝ă§ăăďź
ăăĺćĺăăĺĽăŽĺćĺăŤăŠăŽăăăŤç§ťĺăăžăăďź ĺ¤ăăŽäşşăŤă¨ăŁăŚăććĽăŻĺćĺăŽć¨ćşçăŞäžă ă¨ćăăžăăăć°´ććĽăăć¨ććĽăžă§ăă¤ăłăŻăŞăĄăłăăăăăă¨ćăăăăăăžăăă ăăŽăăăŤĺ¤§ăăŞswitchăšăăźăăĄăłăăć¸ăĺż čŚăŻăăăžăăă
ďźăžăăăćĺĺĺăăŤé˘ăăŚăŻăććĽăŽćŁăăćĺĺăŻč¨čŞă¨ăăąăźăŤăŤäžĺăăžăăďź
@josharianćĺĺĺăŻé常ăĺćĺ¤ăŽĺĺăăłăłăă¤ăŠăŤăăŁăŚčŞĺçăŤćĺĺăŤĺ¤ćăăăă¨ăćĺłăăžăă ăăźăŤăŞăźăźăˇă§ăłăŞăŠăŻăăăžăăă ăăźăŤăŞăźăźăˇă§ăłăŽăăăŤăăăŽä¸ăŤä˝ăăć§çŻăăăĺ ´ĺăŻăäťăŽć掾ă§ăăăčĄăăäťăŽč¨čŞăŻăăăčĄăăăăŽčąĺŻăŞč¨čŞă¨ăăŹăźă ăŻăźăŻăăźăŤăćäžăăžăă
ăă¨ăă°ăä¸é¨ăŽCďźăżă¤ăăŤăŻăăŤăŤăăŁć
ĺ ąăĺĺžăăToString
ăŞăźăăźăŠă¤ăăăăăžăă ăžăăŻă DateTime
ăŞăă¸ă§ăŻăčŞä˝ă使ç¨ăăŚă形ĺźă¨ăŤăŤăăŁć
ĺ ąăŽä¸Ąćšăĺăĺ
ĽăăToString
ăĄă˝ăăă使ç¨ăăăă¨ăă§ăăžăă ăă ăăăăăăŽăŞăźăăźăŠă¤ăăŻć¨ćşă§ăŻăŞăă誰ăăçśćżăăobject
ăŻăŠăšăŤăŻToString()
ăăăăăžăăă GoăŽăšăăŞăłăŹăźă¤ăłăżăźăă§ăźăšă¨ăťă¨ăăŠĺăă§ăă
ăăăăŁăŚăăăźăŤăŞăźăźăˇă§ăłăŻăăŽććĄă¨ä¸čŹçăŞĺćĺăŽçŻĺ˛ĺ¤ă§ăăĺż čŚăăăă¨ćăăžăă ăăăĺŽčŁ ăăăĺ ´ĺăŻăäťăŽćšćłă§ĺŽčĄăăŚăă ăăă ăă¨ăă°ăăŤăšăżă ăšăăŞăłăŹăźă¤ăłăżăźăă§ă¤ăšăŽăăăŤă
@josharianĺŽčŁ ăŤé˘ăăŚăŻăăăă§ăintă§ăăăăźăĺ¤ăŻăăšăŚăăăăźăă§ăăăăăăźăĺ¤ăŻă˝ăźăšé ăŽćĺăŽĺ¤ăŤăŞăăžăă ăăăŻä¸ç¨ŽăŽć ĺ ąćźăăă§ăăăăă¨ăă°ćććĽă¨ćĽććĽăŽăŠăĄăă§éąăéĺ§ăăăăćąşĺŽăăăŞăŠăăźăĺ¤ăé¸ćă§ăăăăăĺŽéăŤăŻé常ăŤäžżĺŠă§ăă ăăĄăăăćŽăăŽç¨čŞăŽé ĺşăăăŽăăăŞĺ˝ąéżăä¸ăăŞăăă¨ăăćĺăŽčŚç´ ăĺ¤ć´ăăĺ ´ĺăŤĺ¤ă丌ăšćżăăăă¨ăéčŚăŞĺ˝ąéżăä¸ăăĺŻč˝ć§ăăăăă¨ăŻăăăăťăŠčŻăăă¨ă§ăŻăăăžăăă ăă ăăăăăŻconst / iotaă¨ĺŽéăŤăŻä˝ăŽéăăăăăžăăă
@crekerăč¨ăŁăăă¨ăćĺĺĺăăŚăă ăăă ćĄĺ¤§ăăăŤăŻăăăăăç§ăŻćĺž ăăžă
var e enum {
Sunday
Monday
//etc.
}
fmt.Println(reflect.ValueOf(e))
ćĽććĽă0ă§ăŻăŞăĺ°ĺˇăăžăăăŠăăŤăŻĺ¤ă§ăăăăăŽčĄ¨çžă§ăŻăăăžăăă
ć確ăŤăăăăăŤăćéťăŽStringăĄă˝ăăăĺż čŚă ă¨č¨ăŁăŚăăăŽă§ăŻăŞăăăŠăăŤăĺăŽä¸é¨ă¨ăăŚć źç´ăăăăŞăăŹăŻăˇă§ăłăŤăăŁăŚă˘ăŻăťăšă§ăăăăăŤăăă ăă§ăă ďźăăśăăPrintlnăŻreflect.Valueă§LabelďźďźăĺźăłĺşăăžăăĺćĺăŞăŠăăă§ăăďźfmtăăăŽăăźăăĽăźăăŠăŽăăăŤĺŽčĄăăăă桹ă調ăšăŚăăžăăăďź
ăăĺćĺăăĺĽăŽĺćĺăŤăŠăŽăăăŤç§ťĺăăžăăďź ĺ¤ăăŽäşşăŤă¨ăŁăŚăććĽăŻĺćĺăŽć¨ćşçăŞäžă ă¨ćăăžăăăć°´ććĽăăć¨ććĽăžă§ăă¤ăłăŻăŞăĄăłăăăăăă¨ćăăăăăăžăăă ăăŽăăăŤĺ¤§ăăŞswitchăšăăźăăĄăłăăć¸ăĺż čŚăŻăăăžăăă
ăŞăăŹăŻăˇă§ăłă大ăăŞăšă¤ăăăćŁăăă¨ćăăžăă ä¸čŹçăŞăăżăźăłăŻăgo generateă§ç°ĄĺăŤĺ ĽĺăăŚăăăŽĺăžăăŻăăŽĺăŽăăĄăŻăăŞé˘ć°ă§ăĄă˝ăăăä˝ćă§ăăžăďźăăăăăăłăłăă¤ăŠăźăŤăăŁăŚčŞčăăăŚă襨çžăŽçŽčĄćźçŽăŤăŞăăžăďźă
ăăšăŚăŽĺćĺăŤĺ
¨é ĺşăăăăăžăăŻăăăă垪ç°çă§ăăă¨äťŽĺŽăăăă¨ăŻç§ăŤăŻćĺłăăăăžăăă type failure enum { none; input; file; network }
ăčăăă¨ăçĄĺšăŞĺ
ĽĺăăăĄă¤ăŤé厳ăăăĺ°ăŞăăă¨ăăăĄă¤ăŤé厳ăĺ˘ăăă¨ăăăăŻăźăŻé厳ăçşçăăăă¨ăăžăăŻăăăăŻăźăŻé厳ăĺ˘ăăă¨ćĺăăăă¨ă埡ĺśăăăă¨ăŻćŹĺ˝ăŤćĺłăăăăžăăďź
丝ăŞç¨éă垪ç°é ĺşĺ¤ă§ăăă¨äťŽĺŽăăă¨ăăăăĺŚçăăĺĽăŽćšćłăŻăăăŠăĄăźăżăźĺăăăć´ć°ĺăŽć°ăăăŻăŠăšăä˝ćăăăă¨ă§ăă ăăăŻćŞăć§ćă§ăăăč°čŤăŽăăăŤă I%N
ă¨ăăžăăăăăăă§ă I
ăŻć´ć°ĺă§ă N
ăŻć´ć°ĺŽć°ă§ăă ăăŽăżă¤ăăŽĺ¤ă使ç¨ăăăăšăŚăŽçŽčĄćźçŽăŻăćéťçăŤmod Nă§ăă揥ăŤă揥ăŽăă¨ăă§ăăžăă
type Weekday uint%7
const (
Sunday Weekday = iota
//etc.
ăăăăŁăŚăĺććĽ+ 1 ==ćĽććĽă¨ĺšłćĽďź456ďź==ćććĽă çĄĺšăŞĺšłćĽăä˝ćăăăă¨ăŻă§ăăžăăă ăă ăăconst / iotaăŽĺ¤é¨ă§ă彚çŤă¤ĺŻč˝ć§ăăăăžăă
@ianlancetaylorăç§ăćŹĺ˝ăŤćŹ˛ăăăŽăŻĺč¨ĺă§ăăă¨ććăăăăăŤăăăănumber-yăŤăăăăŞăĺ ´ĺăŽăăăŤă
äťťćăŽă˘ă¸ăĽăŠăźçŽčĄĺăĺ°ĺ Ľăăăă¨ăŻčĺłćˇąăććĄă§ăă ăăŽĺ ´ĺăĺćĺăŻćŹĄăŽĺ˝˘ĺźăŤăŞăĺŻč˝ć§ăăăăžăăăăăŤăăăç°ĄĺăŞStringăĄă˝ăăăĺžăăăžăă
var Weekdays = [...]string{"Sunday", ..., "Saturday"}
type Weekday = uint % len(Weekdays)
äťťćăŽăľă¤ăşăŽintă¨çľăżĺăăăă¨ăint128ăint256ăŞăŠăĺĺžă§ăăžăă
ăăă¤ăăŽçľăżčžźăżăĺŽçžŠăăăă¨ăă§ăăžăă
type uint8 = uint%(1<<8)
// etc
ăłăłăă¤ăŠăźăŻă䝼ĺăăăĺ¤ăăŽĺ˘çă訟ćă§ăăžăă ăžăăAPIăŻĺăäťăăŚăăćŁç˘şăŞă˘ăľăźăˇă§ăłăćäžă§ăăžăăăă¨ăă°ă math/bits
ăŽé˘ć°Len64
ăŻ$ďź uint % 64
ăčżăăă¨ăă§ăăăăăŤăŞăăžăăă
RISC-Văăźăă§ä˝ćĽăăă¨ăăŻăĺ˝äť¤ă¨ăłăłăźăăŁăłă°ăłăłăăźăăłăă12ăăăă§ăăăăă uint12
ăżă¤ăăĺż
čŚă§ăăă ăăăŻuint % (1<<12)
ă§ăăŁăĺŻč˝ć§ăăăăžăă ĺ¤ăăŽăăăćä˝ăçšăŤăăăăłăŤăŻăăăăăćŠćľăĺăăĺŻč˝ć§ăăăăžăă
ăăĄăăăćŹ çšăŻé大ă§ăă GoăŻĺăăăăłăźăă弽ăĺžĺăăăăăăăŻĺăĺ¤ăă§ăă +ă-ăŽăăăŞćä˝ăŻăçŞçśďź
ă¨ĺăăăăéŤăăŞăĺŻč˝ć§ăăăăžăă ăă税ăŽĺăăŠăĄăăŞăˇăăŁăăŞăăă°ăăťă¨ăăŠăăšăŚăŽăŠă¤ăăŠăŞé˘ć°ă¨ç¸äşéç¨ăăăăăŤăăăăăćŁčŚăŽuint8
ă uint16
ăŞăŠăŤĺ¤ćăăĺż
čŚăăăăžăă夹ćďźçŻĺ˛ĺ¤ăŽăăăăŻĺ¤ćăĺŽčĄăăćšćłăăŞăéăăăăčŞä˝ăč¤éăŤăŞăăžăďźă ăăăŚăHTTPăšăăźăżăšăłăźăăŤuint % 1000
ă使ç¨ăăăŞăŠă使ăăăăŚăăăă¨ăăăăăžăă
ăăăŤăăăăăăăčĺłćˇąăă˘ă¤ăă˘ă§ăă :)
ăăŽäťăŽăă¤ăăźăŞčżäżĄďź
ăăăŻä¸ç¨ŽăŽčŞ ĺŽăăćźăăăŚăă
ăăăŻç§ăŤĺ˝źăăćŹĺ˝ăŤintă§ăăă¨ćăăăžăă :)
ä¸čŹçăŞăăżăźăłăŻăgogenerateă§ç°ĄĺăŤĺăăăă¨ăă§ăăžă
ă¨ăŤăăĺćĺă使ç¨ăăŚăłăźăăçćăăĺż čŚăăăĺ ´ĺăŻăćĺĺé˘ć°ăĺ˘çăă§ăăŻăŞăŠăçćăăč¨čŞăľăăźăăŽéăżăŽäťŁăăăŤăłăźăçćă使ç¨ăăŚĺćĺăĺŽčĄăăăă¨ăă§ăăžăă
ăăšăŚăŽĺćĺăŤĺ ¨é ĺşăăăăăžăăŻăăăă垪ç°çă§ăăă¨äťŽĺŽăăăă¨ăŻç§ăŤăŻćĺłăăăăžăăă
ăăŁăăă ă ăăăŤăăăĺ ˇä˝çăŞăŚăźăšăąăźăšăăăă¤ăćă¤ăă¨ă§ăĺćĺăăĺż čŚăŞăăŽăćŁç˘şăŤć確ăŤăăăă¨ăă§ăăă¨ćăăžăă ć確ăŞčŚäťśăŽăťăăăŻăŞăăäťăŽč¨čŞć§é ďźă¤ăžăçžçśďźă使ç¨ăăŚĺćĺăă¨ăăĽăŹăźăăăăă¨ăćăçăŤăăŞăŁăŚăăă¨ćăăžăă ăăăăăăăŻĺăŞă䝎誏ă§ăă
@crekerăč¨ăŁăăă¨ăćĺĺĺăăŚăă ăăă
ăăŁăăă ă ăăăăăŠăă ăăŽĺ ´ĺăććĽăŽăăăŤăŞăăŽă ăăăă 確ăăŤăăŚăźăśăźĺăăŽăăŽăŻä˝ă§ăă ăăăŚăćĺĺĺăŻĺćĺăŽä¸ťčŚăŞčŚćąăŽ1ă¤ă§ăăăăă§ăă
@josharianćŹĺ˝ăŤintă§ăăĺćĺăŻăăăăăĺć§ăŽăĄăŤăăşă ăĺż
čŚă¨ăăžăă ăă䝼ĺ¤ăŽĺ ´ĺă enum { A; B; C}(42)
ä˝ă§ăăďź
ăăăŻăłăłăă¤ăŠă¨ăŠăźă§ăăă¨č¨ăăžăăăĺŽčĄćăŤintă¨ăŽéă§ĺ¤ćă§ăăăăăăăč¤éăŞăłăźăă§ăŻćŠč˝ăăžăăă
AăžăăŻăŠăłăżă¤ă ăăăăŻăŽăăăăă§ăă ăăăăŽĺ ´ĺăăăăĄă¤ăłăĺśéăăăçľąĺĺăčż˝ĺ ăăžăă ĺŽčĄćăŽăăăăŻăŽĺ ´ĺăŻăäťăŽăŚăźăśăźăăŠăăă˘ăŠăŚăłăăăă¨ăăŤăŞăźăăźăăăźćăŤăăăăŻăŤăŞăć´ć°ĺăčż˝ĺ ăăŚăăžăă AăŽĺ ´ĺăăăă¤ăăŽĺźă§uintďź Năčż˝ĺ ăăžăăă
ăă1ă¤ăŽăŞăăˇă§ăłăŻăAăBăăžăăŻCăŽăăăă§ăăŞăăăăŤăăăă¨ă§ăăăăăăconst / iotaă§äťćĽä˝żç¨ăăăŚăăăăŽă§ăăăăăĺŠçăŻăăăžăăă
intďź Năč¨čŞăŤĺć ăăăŞăă¨č¨ăăăšăŚăŽççąăŻăä¸ç¨ŽăŽintă§ăăĺćĺăŤăĺć§ăŤĺ˝ăŚăŻăžăăăă§ăă ďźăăăăŽăăăŞăăŽăĺŤăžăăŚăăă°ăç§ăŻćąşăăŚćăŁăŚăăžăăăďźă
čŞ ĺŽăăĺăé¤ăăă¨ăŻăăăŽéŁĺăĺăé¤ăăžăă ăăŽint-inessăŽä¸é¨ăčż˝ĺ ăç´ăăăĺ ´ĺăŻăăłăźăçćăĺż
čŚă§ăăăăăăčĄăăŞăăă¨ăă§ăăžăăăăăŤăăăĺ°ĺ
Ľăăint-inessăŽéă¨ç¨ŽéĄăĺśĺžĄă§ăăžăă next "ăĄă˝ăăă垪ç°nextăĄă˝ăăăăžăăŻă¨ăă¸ăăĺ¤ăăĺ ´ĺăŤă¨ăŠăźăčżănextăĄă˝ăăă ďźăžăă Monday*Sunday - Thursday
ăŽăăăŞăăŽăĺćłăŤăŞăăă¨ăŻăăăžăăďźă ä˝ĺăŞĺć§ăŤăăăăăćčťăŞĺťşçŻććăŤăŞăăžăă čĺĽăăăĺ
ąç¨ä˝ăŻăint-y䝼ĺ¤ăŽĺ¤ć§ä˝ďź pick { A, B, C struct{} }
ăŞăŠďźăăăžăă˘ăăŤĺăăžăă
ăăŽăăăŞć ĺ ąăč¨čŞă§ćă¤ăă¨ăŽä¸ťăŞĺŠçšăŻă
ăăŽăăăŞć ĺ ąăč¨čŞă§ćă¤ăă¨ăŽä¸ťăŞĺŠçšăŻćŹĄăŽă¨ăăă§ăăéćłăŞĺ¤ăŻéćłă§ăă
誰ăăăăăăĄăŞăăă¨čŚăŞăăŚăăăăă§ăŻăŞăăă¨ă埡調ăăăă¨ăéčŚă ă¨ćăăžăă ç§ăŻç˘şăăŤăăăăžăăă ĺ¤ăăŽĺ ´ĺăĺ¤ăćśč˛ťăăă¨ăăŤç°ĄĺăŤăŞăăĺ¤ăçćăăă¨ăăŤéŁăăăŞăăžăă ăăŞăăăŠăĄăăéăăăăăŻăăăăžă§ăŽă¨ăăăĺäşşçăŞĺĽ˝ăżćŹĄçŹŹă§ăă ăăăăŁăŚăăăăĺ ¨ä˝çăŞç´ĺŠçă§ăăăăŠăăăŽĺéĄăăăă§ăă
ăžăăéćłăŞĺ¤ăçŚć˘ăăćĺłăăăăăžăăă ďźä¸č¨ăŽç§ăŽććĄăŽăăăŤďźčŞĺă§ćĺšć§ăăă§ăăŻăăć掾ăăă§ăŤăăĺ ´ĺăăăŽĺśéăŻăŠăŽăăăŞĺŠçšăăăăăăžăăďź ç§ăŤă¨ăŁăŚăăăăŻçŠäşăč¤éăŤăăă ăă§ăă ç§ăŽă˘ăăŞăąăźăˇă§ăłă§ăŻăăťă¨ăăŠăŽĺ ´ĺăŽĺćĺăŤçĄĺš/ä¸ćăŞĺ¤ăĺŤăžăăŚăăĺŻč˝ć§ăăăăă˘ăăŞăąăźăˇă§ăłăŤĺżăăŚăăăĺéżăăĺż čŚăăăăžăă-ĺŽĺ ¨ăŤç ´ćŁăăăăăăăŠăŤăăŤăăŚăłă°ăŹăźăăăăăăăŽăžăžäżĺăăžăă
çĄĺšăŞĺ¤ă訹ĺŻăăŞăĺłĺŻăŞĺćĺăŻăă˘ăăŞăĺ¤çăăéé˘ăăăŚăăăçĄĺšăŞĺ ĽĺăĺăĺăćšćłăăŞăé常ăŤéăăăĺ ´ĺăŤĺ˝šçŤă¤ĺŻč˝ć§ăăăă¨ćăăžăă ăăŞăă ăăčŚăŚä˝żç¨ă§ăăĺ é¨ĺćĺăŽăăăŤă
const with iotaăŻăłăłăă¤ăŤćăŤĺŽĺ ¨ă§ăŻăŞăăăă§ăăŻăŻĺŽčĄćăŤé ĺťśăăĺŽĺ ¨ăŞăă§ăăŻăŻĺăŹăăŤă§ăŻăăăžăăă ă§ăăăăiotaăŻćĺéăĺćĺă罎ăćăăăă¨ăŻă§ăăŞăă¨ćăăžăăĺćĺăŽćšă埡ĺă ăăă§ăă
ä¸ćŁăŞĺ¤ăŻä¸ćŁă§ăă
誰ăăăăăăĄăŞăăă¨čŚăŞăăŚăăăăă§ăŻăŞăăă¨ă埡調ăăăă¨ăéčŚă ă¨ćăăžăă
ç§ăŻăăŽčŤçăç解ăăŚăăžăăă ăżă¤ăăŻĺ¤ăŽăťăăă§ăă ĺ¤ăăăŽĺăŤăŞăĺ¤ć°ăŤĺăĺ˛ăĺ˝ăŚăăă¨ăŻă§ăăžăăă ç§ăŻä˝ăă誤解ăăŚăăžăăďź
PSďźĺćĺăŻĺč¨ĺăŽçšćŽăŞăąăźăšă§ăăăăăŽĺéĄăŻăăăăăĺŞĺ ăăăăšăă§ăăăă¨ăŤĺćăăžăă
č¨ăćăăă¨ăăăćŁç˘şăŤč¨ăă°ăĺćĺăéăăăă¨ăŽăĄăŞăăă¨ăăŚčŞ°ăăăăăčŞčăăŚăăăăă§ăŻăăăžăăă
ăăŽăăăŤĺłć źăŤăăăĺ ´ĺăŻăaďźăéćłăŞäžĄĺ¤čŚłăŻéćłă§ăăăăŻăăźăăă¸ăźă§ăăăbďźăăăăŁăŚĺŠçă¨ăăŚć°ăăăă¨ăŻă§ăăžăăă constăăźăšăŽĺćĺă§ăŻăăăŞăăŽč§Łéă§ăŻăéćłăŞĺ¤ăéćłă§ăă ăăŽăżă¤ăă§ăŻăăăăŤĺ¤ăăŽĺ¤ă使ç¨ă§ăăžăă
ĺćĺăintă§ăăăintăďźĺăˇăšăă ăŽčŚłçšăăďźćŁĺ˝ă§ăăĺ ´ĺăĺŻä¸ăŽĺŠçšăŻăĺăŽĺĺäťăĺ¤ăĺć ăăăŚăăăă¨ă§ăă
ăăăŻĺşćŹçăŤăŻconst / iotaă§ăăăfmtăăăąăźă¸ăŻăŞăăŹăŻăˇă§ăłă使ç¨ăăŚĺĺăĺĺžă§ăăăăăstringerăĺŽčĄăăĺż čŚăŻăăăžăăă ďźćĺĺăă˝ăźăšăŽĺĺă¨ăŻç°ăŞăăăŽăŤăăăĺ ´ĺăŻăĺźăçśăstringerăĺŽčĄăăĺż čŚăăăăžăďźă
@jimmyfrascheăŽćĺĺĺăŻç´ ć´ăăăăăźăăšă§ăă ä¸č¨ăŽç§ăŽććĄă§čŞăăă¨ăă§ăăăăăŤăç§ăŤă¨ăŁăŚăŽä¸ťăŞćŠč˝ăŻăćĺŽăăăĺ¤ăĺŽčĄćăŤćĺŽăăăĺćĺăŽćĺšăŞĺ¤ă§ăăăăŠăăăăă§ăăŻăăćŠč˝ă§ăă
ăă¨ăă°ăăăŽăăăŞăăŽăčăăă¨
type Foo enum {
Val1 = 1
Val2 = 2
}
ăăăŚăăŽăăăŞĺĺ°ćšćł
func IsValidEnum(v {}interface) bool
ç§ăăĄăŻăăŽăăăŞăă¨ăăăăă¨ăă§ăăžă
a := Foo.Val1
b := Foo(-1)
reflection.IsValidEnum(a) //returns true
reflection.IsValidEnum(b) //returns false
ĺŽéăŽäžă¨ăăŚăCďźăŽĺćĺăčŚăăă¨ăă§ăăžăăăăăŻăç§ăŽćčŚă§ăŻăJavaăčĄăŁăăă¨ăç˛çŽçăŤčż˝čˇĄăăăŽă§ăŻăŞăăăăŽä¸éçšăĺŽĺ
¨ăŤćăăŚăăžăă Cďźă§ćĺšć§ă確čŞăăăŤăŻă Enum.IsDefined
éçăĄă˝ăăă使ç¨ăăžăă
@creckerăăă¨const / iotaăŽĺŻä¸ăŽéăăŻă
ăŤäżĺăăăŚăăć
ĺ ąăŻĺć ăăžăă ăăăŻĺ
¨ä˝ă¨ăăŚăŻăăăťăŠĺ¤ăăŽĺŠçă§ăŻăăăžăă
ć°ăăăżă¤ăăŽăżă¤ăă
ĺ°ăăŻăŹă¤ă¸ăźăŞă˘ă¤ăă˘ďź
ĺăăăăąăźă¸ă§ĺŽŁč¨ăăăăăšăŚăŽĺŽć°ăŽĺĺă¨ĺ¤ăć źç´ăăžă
ăŞăăŹăŻăăĺ°éă§ăăćšćłă§ĺŽçžŠăăăăżă¤ăă¨ăăŚă ăăăŻăăŽăăăŤăŞăăžă
ăă ăăăăŽçăăŻăŠăšăŽconstăŽä˝żç¨ćłăçšĺŽăăăŽăŻĺĽĺŚă§ăă
ä¸č¨ăŽç§ăŽććĄă§čŞăăă¨ăă§ăăăăăŤăç§ăŤă¨ăŁăŚăŽä¸ťăŞćŠč˝
IMOăăăŻăăăŽč°čŤăĺźăăăŁăŚăă丝ăŞăăŽăŽ1ă¤ă示ăăŚăăžăăă丝ăŞćŠč˝ăăŽăťăăăä˝ă§ăăăăć確ăŤăŞăŁăŚăăŞăăă¨ă§ăă 誰ăăăăăŤă¤ăăŚĺ°ăç°ăŞăčăăćăŁăŚăăăăă§ăă
ĺäşşçăŤăŻăç§ăŻăžă ăăŽăťăăăçşčŚăăăăăŽçľé¨ăŹăăźăăŽĺ˝˘ĺźă弽ăă§ăă ăŞăšăăŤăŻ1ă¤ăăăăžăďźăă ăăĺäşşçăŤăŻăăä˝ăăăžăăăăŞăăŁăăŽăăăŽăťăŻăˇă§ăłă§ăŻăĺŽéăŤä˝ă辡ăăŁăăŽăă§ăŻăŞăăä˝ăăăžăăăăŞăăŁăăŽăăŤă¤ăăŚăŽăżč¨ĺăăŚăăă¨ăăäşĺŽăŤćł¨ćăăžăďźă ăăăăăăżă¤ăăă§ăăŻăŽćŹ ĺŚăĺć˘/ăă°ăŤă¤ăŞăăĺ ´ćăă大čŚć¨ĄăŞăŞăăĄăŻăżăŞăłă°ăŽĺ¤ąćăŞăŠă示ăăŤăăăŤăčż˝ĺ ăăă¨ĺ˝šçŤă¤ă§ăăăă
@jimmyfrascheă§ăăăăăăŻĺ¤ăăŽă˘ăăŞăąăźăˇă§ăłăŽĺ¤§ăăŞĺéĄăă¤ăžăĺ ĽĺăăźăżăŽć¤č¨źă解湺ăăžăă ĺăˇăšăă ăŽĺŠăăăŞăăă°ăćä˝ćĽă§čĄăĺż čŚăăăăžăăăăăŻăć°čĄăŽăłăźăă§ĺŽčĄă§ăăăă¨ă§ăŻăăăžăăă ä˝ăăăŽĺ˝˘ĺźăŽăżă¤ăćŻć´ć¤č¨źăčĄăăă¨ă§ăăăă解湺ă§ăăžăă ăăŽä¸ăŤćĺĺĺăčż˝ĺ ăăă¨ăĺşăŤăŞăĺăŽĺ¤ă§ăŻăŞăĺĺăéŠĺăŤăăŠăźăăăăăăăăăăăŽăłă°ăç°Ąç´ ĺăăăžăă
ä¸ćšăĺćĺăĺłĺŻăŤăăă¨ăčăăăăăŚăźăšăąăźăšăĺ¤§ĺš ăŤĺśéăăăžăă ăă¨ăă°ăăăăăłăŤă§ăăăăç°ĄĺăŤä˝żç¨ăăăă¨ăŻă§ăăžăăă çĄĺšăŞĺ¤ăäżćăăăŤăŻăĺćĺăĺé¤ăăŚăăŹăźăłăŞĺ¤ĺă使ç¨ăăĺż čŚăăăăžăăĺż čŚăŤĺżăăŚăĺžă§ĺćĺăŤĺ¤ćăăăă¨ăă§ăăžăă ĺ ´ĺăŤăăŁăŚăŻăçĄĺšăŞĺ¤ăĺé¤ăăŚă¨ăŠăźăăšăăźăăĺŻč˝ć§ăăăăžăă ăăŽäťăŽĺ ´ĺăŻăăăăŠăŤăĺ¤ăŤăăŚăłă°ăŹăźăă§ăăžăă ăăăăŤăăăă¨ăŠăźăĺéżăăăŽăŤĺ˝šçŤă¤ăŽă§ăŻăŞăăĺăˇăšăă ăŽĺśéă¨ćŚăŁăŚăăžăă
JavaĺćĺăĺéżăăăăăŤJavaç¨ăŽprotobufăçćăăĺż čŚăăăăăŽăčŚăŚăă ăăă
ć¤č¨źăŤé˘ăăŚăŻ@Merovius ăç§ăŻăă§ăŤăăăä˝ĺşŚăăŤăăźăăă¨ćăăžăă äťăŤä˝ăčż˝ĺ ă§ăăăăăăăžăăăć¤č¨źăčĄăăŞăă¨ăĺ Ľĺăć¤č¨źăăăăăŤĺ¤§éăŽăłăăźă˘ăłăăăźăšăăłăźăăä˝ćăăĺż čŚăăăăžăă ĺéĄăŻćăăă§ăăăććĄăăăă˝ăŞăĽăźăˇă§ăłăăăăăŠăŽăăăŤćŻć´ă§ăăăăŤă¤ăăŚăĺć§ă§ăă ç§ăŻčŞ°ăăçĽăŁăŚăă大čŚć¨ĄăŞă˘ăăŞăąăźăˇă§ăłăŤăŻĺăçľăă§ăăžăăăăăăŽć¤č¨źăłăźăăŽă¨ăŠăźăŻăä˝ăăčĄăăăăŽăčŚăăăŽă¨ĺăĺćĺăŽćŚĺżľăćă¤č¤ć°ăŽč¨čŞă§ä˝ĺşŚăç§ăĺăżăžăăă
ä¸ćšăçĄĺšăŞĺ¤ă訹ĺŻăăŞăĺćĺăĺŽčŁ ăăăă¨ăćŻćăăč°čŤăŻčŚĺ˝ăăăžăăďźä˝ăăčŚéăăĺ ´ĺăŻă芍ăłăăžăďźă çčŤçăŤăŻç´ ć´ăăăăŚăăŁăăăăŚăăžăăăĺŽéăŽă˘ăăŞăąăźăˇă§ăłă§ĺ˝šçŤă¤ă¨ăŻćăăžăăă
ĺćĺăŤĺż čŚăŞćŠč˝ăŻăăăťăŠĺ¤ăăăăžăăă ćĺĺĺăć¤č¨źăçĄĺšăŞĺ¤ăŤé˘ăăĺłĺŻ/硊ăăĺć-ăăăŻç§ăčŚăăă¨ăă§ăăăăŽăăăťă¨ăăŠăăă§ăă 誰ăăďźăăĄăăç§ăĺŤăăŚďźăăŽćçšă§ăăăăăˇăŁăăăŤăăžăă ĺłć ź/硊ăăă¨ăŻăăăăăŽç¸ĺăăć§čłŞăŽăăăŤăčŤäşăŽä¸ťăŞăă¤ăłăă§ăăăăăŤćăăăžăă 誰ăăăŠăĄăăăŤĺćăăă¨ăŻćăăžăăă ăăăă解湺çăŻă严ćšăä˝ăăăŽćšćłă§çľăżčžźăă§ăăă°ăŠăăźăŤé¸ćăăăăă¨ăăăăăžăăăăçžĺŽăŽä¸çă§ăŠăŽăăăŤćŠč˝ăăăă確čŞăăăăăŤăăăĺăăč¨čŞăŻăăăžăăă
@creckerä¸č¨ăŽă¨ăŻăšăăźăăăźăżăŤĺŽć°ăäżĺăăă¨ăăç§ăŽććĄ
çśćłăŻăăŞăăćąăăŚăăăăăŞăăŽăĺŻč˝ăŤăăă§ăăă
ć°ăă税éĄăŽăżă¤ăăŽĺ°ĺ
ĽăŞăă§ă
ăăăć Łç¨çăŞćšćłă§ăăăăŠăăăŻăăăăžăăăăžăăç§ăăăŽč¨čŞăŤăžăŁăăć ŁăăŚăăžăăăă䝼ä¸ăŻćŠč˝ăăç°Ąć˝ă§ăă
type Day struct {
value string
}
// optional, if you need string representation
func (d Day) String() string { return d.value }
var (
Monday = Day{"Monday"}
Tuesday = Day{"Tuesday"}
)
func main() {
getTask(Monday)
}
func getTask(d Day) string {
if d == Monday {
fmt.Println("today is ", d, "!â) // today is Monday !
return "running"
}
return "nothing to do"
}
type Day
ă¨ăŻç°ăŞăăăŽăfunc getTask
ăŤć¸Ąăăă¨ăŻă§ăăžăă
https://play.golang.org/p/4JZOIG5PbRX
ĺ¤ă丌ăšćżăăŚăăłăźăăŻĺŁăăžăăďźäťŁăăăŤiota
ăŻćł¨ćăĺż
čŚă§ăďź
ăłăźăă¸ă§ăăŹăźăżăźăŻĺż čŚăăăžăă
ăăăă§ä˝żç¨ă§ăăžă
https://play.golang.org/p/KlTNWrJpbDi
çš°ăčżăăă¨ăă§ăăžă
https://play.golang.org/p/ld3TNtenEkD
ăłăłăă¤ăŠăćĺĽăč¨ăăŞăăŚăăĺżĺăŽć§é ä˝ăgetTask
ăŤć¸Ąăăă¨ăă§ăăžă
https://play.golang.org/p/NaV38og7e2h
ĺŽć°ć§é ä˝ăŻăľăăźăăăăŚăăăă var
ăŽăżăăľăăźăăăăŚăăžă
https://play.golang.org/p/X6KSpACA4N0
誰ăăăăŽăăăŞăă¨ăăăăŽăć˘ăăăŤăŻăŠăăăă°ăăă§ăăďź
NotADay := Day{"NotADay"}
getTask(NotADay)
ăăŽăăăŞĺ¤ć°ăŽćśč˛ťč ăŻăćĺž ĺ¤ăéŠĺăŤăă§ăăŻăăăă¨ă§ăăăăăŁăăăăĺ ´ĺă¨ăăŞăĺ ´ĺăăăăžăďźăă¨ăă°ăĺććĽăžăăŻćĽććĽäťĽĺ¤ăŽăăŽăĺšłćĽă§ăăăŞăŠăswitchăšăăźăăĄăłăăŽäťŽĺŽăŤăăä¸éŠĺăŞăăŠăźăŤăšăŤăźăăŞăă¨äťŽĺŽăăžăďźăăăăă§ăŻăăăžăăĺŽčĄćăžă§ă ăăŽç¨ŽăŽééăăŻăĺŽčĄćă§ăŻăŞăăăłăłăă¤ăŤćăŤăăŁăăăăćšăăăă¨ćăăžăă
@bpkroth
çŹčŞăŽăăăąăźă¸ăŤDay
ăăăăé¸ćăăăăŁăźăŤăă¨ăĄă˝ăăăŽăżăĺ
Źéăăăă¨ăŤăăă package day
$ăŽĺ¤é¨ăŤăżă¤ăDay
ăŽć°ăăĺ¤ăä˝ćă§ăăžăăă
ăžăăăăŽćšćłă§ăŻăĺżĺăŽć§é ä˝ăgetTask
ăŤć¸Ąăăă¨ăŻă§ăăžăăă
./day/day.go
package day
type Day struct {
value string
}
func (d Day) String() string { return d.value }
var (
Monday = Day{"Monday"}
Tuesday = Day{"Tuesday"}
Days = []Day{Monday, Tuesday}
)
./main.go
package main
import (
"fmt"
"github.com/somePath/day"
)
func main() {
january := day.Day{"january"} // implicit assignment of unexported field 'value' in day.Day literal
var march struct {
value string
}
march.value = "march"
getTask(march) // cannot use march (type struct { value string }) as type day.Day in argument to getTask
getTask(day.Monday)
}
func getTask(d day.Day) string {
if d == day.Monday {
fmt.Println("today is ", d, "!") // today is Monday !
return "running"
}
return "nothing to do"
}
func iterateDays() {
for _, d := range day.Days {
fmt.Println(d)
}
}
ĺćĺăä¸é ćźçŽĺăćŞä˝żç¨ăŽĺ¤ć°ă使ç¨ăăăłăłăă¤ăŤăĺč¨ĺăă¸ă§ăăŞăăŻăăăăŠăŤăăăŠăĄăźăżăŞăŠăćăăˇăłăăŤă§äžżĺŠăŞćŠč˝ăčż˝ĺ ăăŞăăă¨ă丝埾ăăäťăŽč¨čŞăŻăăăăžă§ăăŁă¨čŚăăă¨ăăăăžăăă
GolangăŻăéçşč ăăăăŤćăă§ăăăă確čŞăăăăăŽç¤žäźĺŽé¨ă§ăăďź
@ gh67uyyghj誰ăăăăŞăăŽăłăĄăłăăăăăăŻĺ¤ă¨ăăŚăăźăŻăăžăăďź ăăăŚă誰ăăç§ăŽčżäşăŤĺăăă¨ăăăă ăăă¨ćăăžăă ăăăăăăŞăăŽčłŞĺăŤĺŻžăăçăăŻă¤ă¨ăšă ă¨ćăăžăă GoLangă§ćŠč˝ăăŞăă¨ăăăă¨ăŻăćŠč˝ăăăăă¨ăćĺłăăăŽă§ăGoLangăŤăŞăăăŽăŻăĺŽéăŤăŻGoLangăŤăăćŠč˝ă§ăăăäťăŽăăă°ăŠăăłă°č¨čŞăŤăŻăŞăćŠč˝ă§ăă
@ L-orisăăăŻăĺă使ç¨ăăŚĺćĺăĺŽčŁ ăăăăăŽé常ăŤčĺłćˇąăćšćłă§ăă ăăăăăăăŻĺäťăŞćăă§ăăăĺćĺăăźăŻăźăďźĺż çśçăŤč¨čŞăăăĺ°ăč¤éăŤăăďźăăăă¨ă揥ăŽăă¨ăç°ĄĺăŤăŞăăžăă
ăăŞăăŽäžďźäťćĽăŻăăžăăăăŽă§ç´ ć´ăăăă§ăďźă§ăŻăĺćĺďźä˝ăăăŽĺ˝˘ă§ďźăćă¤ăă¨ăŻćŹĄăŽĺż čŚć§ăćĺłăăžăďź
ăăăŻăčŞăżĺăăć¸ăčžźăżăăăăłć¨čŤďźĺćĺă¨ăăŚä˝żç¨ăăĺż čŚăăăăă¨ăčŞčăăŚăă ăăďźăŤćéăăăăăžăďźăă ăăăăăťăŠéˇăăŻăŞăăžăăďźă
ăăăăŁăŚăć§ćăŽććĄăŻăč¨čŞăŽĺç´ăă¨äťĺ 䞥ĺ¤ăŽçšă§ćŁăăă¨ćăăžăă
ăăăă¨ă@andradei
ăŻăăăăăŻĺéżçă§ăăăč¨čŞăŽçŽçăŻăăăĺ°ăăăˇăłăăŤăŤäżă¤ăă¨ă ă¨ćăăžă
ăŻăŠăšăćăăă¨ä¸ťĺźľăăăă¨ăă§ăăžăăăăăă§ăŻJavaăŤç§ťăăžăăă:)
ç§ăŻăăăGo2ăŽććĄăăăčŻăă¨ăŠăźĺŚçăŤçŚçšăĺ˝ăŚăăă¨ćăăžăă ăăăăŽĺćĺăăăăŻăăăŤĺ¤ăăŽäžĄĺ¤ăç§ăŤćäžăăžă
ăă¤ăłăăŤćťăďź
package day
// Day Enum
type Day struct {
value string
}
@ L-orisăŞăăťăŠă Go2ăŽććĄăŤăč弎ăăŚăăžăă ă¸ă§ăăŞăăŻăšăŻĺćĺăăăč¨čŞăŽč¤éăăĺ˘ăă¨ç§ăŻä¸ťĺźľăăžăă ăăăăăăŞăăŽăă¤ăłăăŤĺşĺˇăăăăăŤďź
ç§ăŻăăŽććĄăŤă¤ăăŚĺ¤ăăŽăă¨ăčăăŚăăžăăăăĺç´ăăççŁć§ăŤĺ¤§ăăŞäžĄĺ¤ăăăăăăćăăăŤĺ¤ć´ăĺż čŚă§ăŞăéăăăŞăăăăçśćăăăă¨ăŤĺžĺăăăŽăăăăăăžăă ĺćĺăč¨čŞăĺ¤§ĺš ăŤĺ¤ć´ăăĺŻč˝ć§ăăăăăăăăŻăGoă§ăŻăŞăăăăŽéˇć/çćăčŠäžĄăăăŤăŻéˇăćéăăăăăăă§ăă ă§ăăăăĺ°ăŞăă¨ăäťăŽă¨ăăăăłăźăăăžă čŞăżăăăăăŞăăŽăăăŞĺç´ăŞč§ŁćąşçăčŻă解湺çă§ăăă¨ç§ăŻčăăŚăăžăăă
ăżăăŞăćŹĺ˝ăŤĺ°ćĽăŽăăăŤăăŽćŠč˝ă揲ăăă§ăďźă ăă¤ăłăżă¨_nowadays_ă§ăĺćĺăăĺŽçžŠăăćšćłăŻăăžăăăăžăăă äžďź https ďź//play.golang.org/p/A7rjgAMjfCx
ĺćĺăŽç§ăŽććĄăŻćŹĄăŽă¨ăăă§ăă ăăăć°ăăăżă¤ăă¨čŚăŞăĺż čŚăăăăžăă ăă¨ăă°ăäťťćăŽć§é ă§ćŹĄăŽĺŽčŁ ăćă¤ĺćĺă使ç¨ăăăă¨ćăăžăă
package application
type Status struct {
Name string
isFinal bool
}
enum Status {
Started = &Status{"Started",false}
Stopped = &Status{"Stopped",true}
Canceled = &Status{"Canceled",true}
}
// application.Status.Start - to use
ăăŽć§é ăăŠăŽăăăŤăăźăˇăŁăŞăłă°ăăăăăŠăŽăăăŤćŠč˝ăăăăăŠăŽăăăŤćĺĺăŤĺ¤ć´ăăăăŞăŠăŻç解ă§ăăžăă
ăăăŚăăĄăăăă揥ă¸ăćŠč˝ăăŞăźăăźăŠă¤ăă§ăăă°ç´ ć´ăăăă¨ćăăžăă
ăăŽăăăŤăŻăGoăŻćĺăŤćˇąăä¸ĺ¤ăŽć§é ä˝ăăľăăźăăăĺż čŚăăăăžăă ä¸ĺ¤ăŽĺăăŞăăă°ăĺćĺă§ăăăĺŽčĄăăŚĺăăă¨ăčĄăăă¨ăă§ăăă¨ćłĺă§ăăžăă
type Status enum {
Started
Stopped
}
func isFinal(s Status) bool {
exhaustive switch(s) {
case Started: return false;
case Stopped: return true;
}
}
ăăŁă¨ăˇăłăăŤăŤčŚăăăšăă ă¨ćăăžă
func isFinal(s Status) bool {
return s == Status.Stopped
}
čŤççăŤĺćĺăŻĺă¤ăłăżăźăă§ăźăšăćäžăăăă¨ăŤăŞăŁăŚăăžăă
䝼ĺăĺćĺăŻĺé˘ăăăŚăăăŻăă ă¨čż°ăšăžăăă
ăăăŻăçšĺŽăŽĺĺ犺éăŤé˘éŁäťăăăăć示çăŞĺĺăŽĺŽć°ă§ăă
enum Status uint8 {
Started // Status.Started == 0
Stopped // Status.Stopped == 1, etc, like we have used iota
}
// or
enum Status string {
Started // Status.Started == "Started", like it works with JSON
Stopped // Status.Stopped == "Stopped", etc
}
// unless you wanna define its values explicitly
enum Status {
Started "started" // compiler can infer underlying type
Stopped "finished"
}
// and enums are type extensions and should be used like this
type MyStatus Status
MyStatus validatedStatus // holds a nil until initialized
// for status value validation we can use map pattern
if validatedStatus, ok := MyStatus[s]; ok {
// this value is a valid status
// and we can use it later as regular read-only string
// or like this
if validatedStatus == MyStatus.Started {
fmt.Printf("Hey, my status is %s", validatedStatus)
}
}
ĺćĺăŻĺćĄĺźľăăĺŽć°ăłăłăăăă§ăă
ăżă¤ăă¨ăăŚčŚăăäşşăŽăăăŽć§ćăŽé¸ćč˘
type Status uint8 enum {
Started // Status.Started == 0
Stopped // Status.Stopped == 1, etc, like we have used iota
}
ăăăăăăăăŽć示çăŞăăăăŹăăŤăŽĺŽŁč¨ăĺéżăăăă¨ăă§ăăžă
type Status enum {
Started // Status.Started == 0
Stopped // Status.Stopped == 1, etc, like we have used iota
}
ć¤č¨źăŽäžăŻĺăăžăžă§ăă
ăăăĺ ´ĺăŤĺăăŚ
type Status1 uint8 enum {
Started // Status1.Started == 0
Stopped // Status1.Stopped == 1, etc, like we have used iota
}
type Status2 uint8 enum {
Started // Status1.Started == 0
Stopped // Status1.Stopped == 1, etc, like we have used iota
}
Status1.Started == Status2.StartedăŻăŠăă§ăăďź
ăăźăˇăŁăŞăłă°ăŤă¤ăăŚďź
ăă¸ăˇă§ăłăĺ¤ăăăďź
type Status uint8 enum {
Started // Status.Started == 0
InProcess
Stopped // Status.Stopped == 1, etc, like we have used iota
}
ä¸ĺ¤ĺăŤă¤ăăŚăŻ@GoodwineăŤĺćăăžăă
ăăźăˇăŁăŞăłă°ăŻčĺłćˇąă質ĺă§ăă
ăăăŻăăšăŚăĺşç¤ă¨ăŞă䞥ĺ¤ăăŠăŽăăăŤćąăăăŤăăŁăŚç°ăŞăăžăă ăăăăŁăŚăĺŽéăŽĺ¤ă使ç¨ăăĺ ´ĺă Status1.Started
ăŻStatus2.Started
ăŤçăăăŞăăžăă
ăˇăłăăŞăăŻč§Łéă使ç¨ăăĺ ´ĺăăăăăŻç°ăŞăĺ¤ă¨čŚăŞăăăžăă
ä˝ăăćżĺ
Ľăăă¨ăĺ¤ăĺ¤ć´ăăăžăďź iota
ăŽĺ ´ĺă¨ăžăŁăăĺăćšćłă§ăďźă
ăăŽéçşč
ăĺéżăăăŤăŻă厣č¨ă¨ă¨ăăŤĺ¤ăćĺŽăăĺż
čŚăăăăžăă
type Status uint8 enum {
Started 0
InProcess 2
Stopped 1
}
ăăăŻćăăăŞăă¨ă§ăă
ăăŽăăăŞĺéĄăĺéżăăăĺ ´ĺăŻăĺćĺ¤ăŽĺĺĽč§ŁéăŤĺşăĽăăŚäşć¸ŹĺŻč˝ăŞăłăłăă¤ăŠĺşĺăćäžăăĺż
čŚăăăăžăă ăŤăšăżă ĺăăŁăšăăĺŽçžŠăăăŚăăŞăéăăăăăˇăĽăăźăăŤăä˝ćăăăăăˇăłăăŞăăŻĺďźćĺĺďźăŤĺşĺˇăăă¨ăăćăç°ĄĺăŞćšćłăćłĺŽăăŚăăžăă
RustăĺćĺăĺŽčŁ ăăćšćłă弽ăă§ăă
ăżă¤ăăćĺŽăăăŚăăŞăăăăŠăŤă
enum IpAddr {
V4,
V6,
}
ăŤăšăżă ăżă¤ă
enum IpAddr {
V4(string),
V6(string),
}
home := IpAddr.V4("127.0.0.1");
loopback := IpAddr.V6("::1");
č¤éăŞăżă¤ă
enum Message {
Quit,
Move { x: int32, y: int32 },
Write(String),
ChangeColor(int32, int32, int32),
}
確ăăŤăć´ć°ĺă¨ăăŚć źç´ăăăŚăăCďźăŽăăăŞĺç´ăŞĺćĺăćăŁăŚăăŚăç´ ć´ăăăă§ăăăă
ä¸č¨ăŻenum
ăčś
ăăŚăăăăăăăŻ_discriminated unions_ă§ăăăçšăŤ_pattern match_ă使ç¨ăăă¨ăăă埡ĺăŤăŞăăžăăăăăŻă switch
ăŽăă¤ăăźăŞćĄĺźľă§ăăĺŻč˝ć§ăăăăžăă
switch something.(type) {
case Quit:
...
case ChangeColor; r, g, b := something:
...
case Write: // Here `something` is known to be a string
...
// Ideally Go would warn here about the missing case for "Move"
}
ĺčż°ăŽăăăŤĺąéşă§ăăĺŻč˝ć§ăăăăăăĺćĺăŽăłăłăă¤ăŤćăă§ăăŻăŻĺż čŚăăăžăă
ä˝ĺşŚăĺż čŚă ăŁăăŽăŻăçšĺŽăŽăżă¤ăăŽăăšăŚăŽĺŽć°ăĺ垊ĺŚçăăăă¨ă§ăăă
iotaă使ç¨ăăŚć¤č¨źăčĄăăăŞăšăăŽćĺžăćĺŽăăăă¨ăă§ăăžăă ăă ăăăłăźăĺ 䝼ĺ¤ăŽçŽçă§iotaă使ç¨ăăă¨ăééăŁăčĄăŤĺŽć°ăćżĺ Ľăăă¨ĺéĄăçşçăăăăăăăŞăĺąéşă§ăďźăăă°ăŠăăłă°ăŽăŠăăŤé 罎ăăăăçĽăŁăŚăăĺż čŚăăăăžăăăăăŽăăăŞăă°ăŻäťăŽăăŽăăăčŚă¤ăăăŽăé常ăŤéŁăăďźă ăăăŤăĺŽć°ăć°ĺ¤ăŽĺ ´ĺăŤĺŽéăŤä˝ă襨ăăăŤă¤ăăŚăŽčŞŹćăŻăăăžăăă ăăăŻćŹĄăŽăă¤ăłăăŤă¤ăŞăăăžăďź
čŻăčż˝ĺ ćŠč˝ăŻăćĺĺĺăăăĺĺăćĺŽăăăă¨ă§ăă
誰ăăăăŽăăăŞăă¨ăăăăŽăć˘ăăăŤăŻăŠăăăă°ăăă§ăăďź
NotADay := Day{"NotADay"} getTask(NotADay)
ăăŽăăăŞĺ¤ć°ăŽćśč˛ťč ăŻăćĺž ĺ¤ăéŠĺăŤăă§ăăŻăăăă¨ă§ăăăăăŁăăăăĺ ´ĺă¨ăăŞăĺ ´ĺăăăăžăďźăă¨ăă°ăĺććĽăžăăŻćĽććĽäťĽĺ¤ăŽăăŽăĺšłćĽă§ăăăŞăŠăswitchăšăăźăăĄăłăăŽäťŽĺŽăŤăăä¸éŠĺăŞăăŠăźăŤăšăŤăźăăŞăă¨äťŽĺŽăăžăďźăăăăă§ăŻăăăžăăĺŽčĄćăžă§ă ăăŽç¨ŽăŽééăăŻăĺŽčĄćă§ăŻăŞăăăłăłăă¤ăŤćăŤăăŁăăăăćšăăăă¨ćăăžăă
@ L-orisă§ăŻăăăăŻăŠăă§ăăďź
package main
import "yet/it/is/not/a/good/practice/in/Go/enum/example/day"
func main()
{
// var foo day.Day
foo := day.Day{}
bar(foo)
}
func bar(day day.Day)
{
// xxxxxxxxxx
}
ç§ăăĄăćăă§ăăăŽăŻă[return "nothing to do"]ăŤăăăŠăłăżă¤ă ăľă¤ăŹăłăšă¨ĺĽĺŚăŞăă°ă§ăŻăŞăăăłăłăă¤ăŤć/ăłăźăăŁăłă°ćăŽă¨ăŠăźăŹăăźăă§ăďź
ç解ăăďź
enum
ăŻç˘şăăŤć°ăăăżă¤ăă§ăăăăăăŻtype State string
ăčĄăăă¨ă§ăăăć°ăăăăźăŻăźăăĺ°ĺ
Ľăăć
Łç¨çăŞĺż
čŚăŻăăăžăăă GoăŻăă˝ăźăšăłăźăăŽăšăăźăšăçŻç´ăăăă¨ă§ăŻăŞăăčŞăżăăăăçŽçăŽć確ăă§ăă
ĺăŽĺŽĺ
¨ć§ăŽćŹ ĺŚăĺŽéăŽćĺĺ/ intăŽć°ăăstring
ăžăăŻint
ăăźăšăŽĺă桡䚹ăăăăă¨ăéčŚăŞăăźăăŤă§ăă ăăšăŚăŽĺćĺĺĽăŻconst
ă¨ăăŚĺŽŁč¨ăăăžăăăăăŤăăăăłăłăă¤ăŠăăă§ăăŻă§ăăć˘çĽăŽĺ¤ăŽăťăăăä˝ćăăăžăă
Stringer
ă¤ăłăżăźăă§ăźăšăŻăăăăăăżă¤ăăäşşéăčŞăăăăăšăă¨ăăŚčĄ¨çžăăăăăŽă¤ăăŁăŞă ă§ăă ăŤăšăżăă¤ăşăăŞăĺ ´ĺă type ContextKey string
ĺćĺăŻăăăćĺĺĺ¤ă§ăăă iota
çćăăăĺćĺăŽĺ ´ĺăJavaScriptăŽXHR ReadyStateăłăźăďź0-ćŞé俥ă4-ĺŽäşďźă¨ĺć§ăŤć´ć°ă§ăă
ăăăăĺéĄăŻăŤăšăżă func (k ContextKey) String() string
ĺŽčŁ
ăŽčޤăăŤăăăžăăăăăŻé常ăăăšăŚăŽć˘çĽăŽĺćĺĺĽĺŽć°ăĺŤăžăŞăăă°ăŞăăŞăăšă¤ăăă使ç¨ăăŚčĄăăăžăă
SwiftăŽăăăŞč¨čŞăŤăŻă_ĺžšĺşçăŞăšă¤ăă_ăŽćŚĺżľăăăăžăă ăăăŻăä¸éŁăŽconst
ăŤĺŻžăăĺăă§ăăŻă¨ăăăŽăă§ăăŻăĺźăłĺşăć
Łç¨çăŞćšćłăŽć§çŻăŽä¸ĄćšăŤéŠăăă˘ăăăźăă§ăă String()
é˘ć°ăŻăä¸čŹçăŤĺż
čŚăŞăăŽă§ăăăĺŽčŁ
ăŤćéŠăŞăąăźăšă§ăă
package main
import (
"context"
"strconv"
"fmt"
"os"
)
// State is an enum of known system states.
type DeepThoughtState int
// One of known system states.
const (
Unknown DeepThoughtState = iota
Init
Working
Paused
ShutDown
)
// String returns a human-readable description of the State.
//
// It switches over const State values and if called on
// variable of type State it will fall through to a default
// system representation of State as a string (string of integer
// will be just digits).
func (s DeepThoughtState) String() string {
// NEW: Switch only over const values for State
switch s.(const) {
case Unknown:
return fmt.Printf("%d - the state of the system is not yet known", Unknown)
case Init:
return fmt.Printf("%d - the system is initializing", Init)
} // ERR: const switch must be exhaustive; add all cases or `default` clause
// ERR: no return at the end of the function (switch is not exhaustive)
}
// RegisterState allows changing the state
func RegisterState(ctx context.Context, state string) (interface{}, error) {
next, err := strconv.ParseInt(state, 10, 32)
if err != nil {
return nil, err
}
nextState := DeepThoughtState(next)
fmt.Printf("RegisterState=%s\n", nextState) // naive logging
// NEW: Check dynamically if variable is a known constant
if st, ok := nextState.(const); ok {
// TODO: Persist new state
return st, nil
} else {
return nil, fmt.Errorf("unknown state %d, new state must be one of known integers", nextState)
}
}
func main() {
_, err := RegisterState(context.Background(), "42")
if err != nil {
fmt.Println("error", err)
os.Exit(1)
}
os.Exit(0)
return
}
PS SwiftĺćĺăŽé˘éŁăăĺ¤ăŻăç§ăŽăć°ăŤĺ
ĽăăŽăŽăăăŻăŽ1ă¤ă§ăă ĺ˛ç˘ăŤăŻĺ˝źăăŽăăăŽĺ ´ćăŻăăăžăăă ĺćĺăăźăżăŽć¨ŞăŤĺ¤ăč¨ĺŽăăĺ ´ĺăŻă2ă¤ăăŠăăăă埡ăĺăŽstruct
ă使ç¨ăăžăă
ć°ăćĺăĺćĺăéŠĺăŤĺŚçăăăŚăăăă¨ă確čŞăăăŞăłăżăźăŽćŚĺżľĺŽč¨źăä˝ćăăžăăă https://github.com/loov/enumcheck
çžĺ¨ăăłăĄăłăă使ç¨ăăŚçŠäşăĺćă¨ăăŚăăźăŻăăŚăăžăă
type Letter byte // enumcheck
const (
Alpha Letter = iota
Beta
Gamma
)
func Switch(x Letter) {
switch x { // error: "missing cases Beta and Gamma"
case Alpha:
fmt.Println("alpha")
case 4: // error: "implicit conversion of 4 to Letter"
fmt.Println("beta")
default: // error: "Letter shouldn't have a default case"
fmt.Println("default")
}
}
ăăšăŚăŽćéťçăŞĺ¤ćăĺŚçăăćšćłăç解ăăăŽăŤčĄă芰ăžăăžăăăăĺşćŹçăŞăąăźăšă§ăŻéŠĺăŤćŠč˝ăăžăă
çžĺ¨ăăžă ä˝ćĽä¸ă§ăăăăăçśćłăĺ¤ăăĺŻč˝ć§ăăăăă¨ăŤćł¨ćăăŚăă ăăă ăă¨ăă°ăăłăĄăłăăŽäťŁăăăŤăăżă¤ăăŤćł¨éăäťăăăăăŤăšăżăăăăąăźă¸ă使ç¨ăăăă¨ăă§ăăžăăăçžćçšă§ăŻăłăĄăłăă§ĺĺă§ăă
Go1ă§ăŽĺćĺăŽçžĺ¨ăŽĺŽčŁ ăŻăç§ăçĽăŁăŚăăăŠăŽč¨čŞă§ăăćăĺĽĺŚă§ćăćç˝ă§ăŞăĺćĺăŽĺŽčŁ ă§ăă Că§ăăăăăăăăăăžăĺŽčŁ ăăžăă iotaăŽăă¨ăŻăăăŻăŽăăăŤčŚăăžăă ăăăŚăă¨ăŤăăă¤ăŞăżăŻä¸ä˝ä˝ăćĺłăăăŽă§ăăăăďź ăăŽăăźăŻăźăăăŠăŽăăăŤč¨ćśăăăŽă§ăăďź ĺ˛ç˘ăŻçżĺžăăăăăŻăă§ăă ăăăăăăăŻăă ć°ăžăăă§ăă
@pofl ďź
GoĺćĺăŻăăŞăćąăăŤăăăă¨ăŤĺćăăžăăă iota
ăŻĺŽéăŤăŻĺăŞăé常ăŽčąčŞăŽĺčŞă§ăă
iota
_ĺčŠ_
ăăăăă彟ăăŻč¨čŞă§ăŽä˝żç¨ă¨ăă茳çšăăĺŽçžŠ1ăçŽćăăŚăăăŽă§ăăăă
ăăă§ăŽĺ¤ăăłăĄăłăă¸ăŽĺżçă¨ăăŚăŽčŁčśłďź
Goă§ăăĺşĺĽăăăĺ
ąç¨ä˝ă揲ăăăŽă§ăăăĺŽéăŽĺćĺă¨ăŻĺĽăŤăăĺż
čŚăăăă¨ćăăžăă ă¸ă§ăăŞăăŻăšăçžĺ¨é˛ăă§ăăćšćłă§ăŻăĺŽéăŤăŻăă¤ăłăżăźăă§ă¤ăšăŽĺăŞăšăăäťăăŚăčĺĽăăăĺ
ąç¨ä˝ăŤé常ăŤăăäźźăăăŽăĺĺžăăĺŻč˝ć§ăăăăžăă ďź41716ăĺç
§ăăŚăă ăăă
Goă§ăŽiota
ăŽä˝żç¨ăŻăAPLă§ăŽä˝żç¨ăŤĺ¤§ăžăăŤĺşăĽăăŚăăžăă ĺźç¨https://en.wikipedia.org/wiki/Iota ďź
ä¸é¨ăŽăăă°ăŠăăłă°č¨čŞďźA +ăAPLăC ++ [6]ăGo [7]ăŞăŠďźă§ăŻăiotaďźĺ°ćĺăŽč¨ĺˇâłăžăăŻčĺĽĺiotaă¨ăăŚďźă使ç¨ăăŚăéŁçśăăć´ć°ăŽé ĺă襨çžăăăłçćăăžăă ăă¨ăă°ăAPLă§ăŻâł4ăŻ1 2 34ăŤăŞăăžăă
ćăĺčăŤăŞăăłăĄăłă
ĺćĺă§ăŻăŞă@ md2perpe ă
`` `čĄă
ăăăąăźă¸ăĄă¤ăł
čź¸ĺ Ľ ďź
ăfmtă
ďźă
func mainďźďź{
SearchRequestintă¨ĺ Ľĺăăžă
constďź
Universal SearchRequest = iota
ăŚă§ă
ďźă
}
`` ``
ç§ăŻ@derekperkinsăŤĺŽĺ ¨ăŤĺćăăžăăGoăŤăŻä¸ç´ĺ¸ć°ă¨ăăŚĺćĺăĺż čŚă§ăă ăăăăŠăŽăăăŤčŚăăăăŻăăăăžăăăăGo1ăŽăŹăŠăšăŽĺŽśăĺŁăăăŤăăăčĄăăă¨ăă§ăăăŽă§ăŻăŞăăă¨ćăăžăă