成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Uber 把公司內部的《Go 語言風格指南》開源了

新聞 前端
Uber 近日開放了其公司內部使用的《Go 語言風格指南》。根據Uber的介紹,《Go 語言風格指南》是支配Uber代碼的慣例,這些慣例不僅涵蓋源文件格式,而且由gofmt代替處理。

 Uber 近日開放了其公司內部使用的《Go 語言風格指南》。

Uber 把公司内部的《Go 语言风格指南》开源了

根據Uber的介紹,《Go 語言風格指南》是支配Uber代碼的慣例,這些慣例不僅涵蓋源文件格式,而且由gofmt代替處理。(gofmt工具可以幫助開發者格式化他們的代碼到統一的風格。)

本指南通過詳細介紹了Uber在編寫Go代碼時的注意事項,從而使代碼庫更加易于管理,幫助開發者們更好的使用Go的語言特性

該指南最初由Prashant Varanasi和Simon Newton編寫,目的是使一些同事快速使用Go。多年來,已根據其他人的反饋進行了多次的修改。

其中許多約定是 Go 的通用準則,而其它準則則參考了外部資源:

  • Effective Go
  • The Go common mistakes guide

所用的代碼在運行 golint 和 go vet 之后不會有報錯。建議將編輯器設置為:

  • 保存時運行 goimports
  • 運行 golint 和 go vet 來檢查錯誤

下面以接口和指針為例

你幾乎不需要指向接口的指針,你應該把接口當作值傳遞,它的基礎數據仍然可以當成一個指針。

一個接口是兩個字段:

1、指向特定類型信息的指針。你可以認為這是 "type."。

2、數據指針,如果存儲的數據是指針,則直接存儲。如果數據存儲的是值,則存儲指向此值的指針。

如果要接口方法修改基礎數據,則必須使用指針。

接收器和接口

具有值接收器的方法可以被指針和值調用。例如:

  1. type S struct { 
  2.   data string 
  3.  
  4. func (s S) Read() string { 
  5.   return s.data 
  6.  
  7. func (s *S) Write(str string) { 
  8.   s.data = str 
  9.  
  10. sVals := map[int]S{1: {"A"}} 
  11.  
  12. // You can only call Read using a value 
  13. sVals[1].Read() 
  14.  
  15. // This will not compile: 
  16. //  sVals[1].Write("test") 
  17.  
  18. sPtrs := map[int]*S{1: {"A"}} 
  19.  
  20. // You can call both Read and Write using a pointer 
  21. sPtrs[1].Read() 
  22. sPtrs[1].Write("test"

同樣,即使該方法具有值接收器,也可以通過指針來滿足接口。

  1. type F interface { 
  2.   f() 
  3.  
  4. type S1 struct{} 
  5.  
  6. func (s S1) f() {} 
  7.  
  8. type S2 struct{} 
  9.  
  10. func (s *S2) f() {} 
  11.  
  12. s1Val := S1{} 
  13. s1Ptr := &S1{} 
  14. s2Val := S2{} 
  15. s2Ptr := &S2{} 
  16.  
  17. var i F 
  18. i = s1Val 
  19. i = s1Ptr 
  20. i = s2Ptr 
  21.  
  22. // The following doesn't compile, since s2Val is a value, and there is no value receiver for f. 

Effective Go對Pointers vs. Values分析的不錯

Uber 把公司内部的《Go 语言风格指南》开源了

目前,guide在Github上標星2.9K,獲得246個Fork(Github地址:https://github.com/uber-go/guide/blob/master/style.md)

 

 

 

 

責任編輯:張燕妮 來源: 開源最前線
相關推薦

2015-12-31 13:56:09

創業

2016-11-09 13:52:33

內部數據KPI

2022-12-05 09:32:29

Go 語言風格規范

2016-11-09 15:36:19

數據平臺大數據

2021-05-06 11:04:55

GooglePython代碼

2009-06-23 10:03:44

暴雪內部圖片

2015-11-03 10:17:11

Dynatrace

2024-01-25 08:32:34

OpenAI人工智能AI

2013-02-25 12:21:18

2021-05-13 18:53:34

Go編譯器Uber

2022-03-04 08:45:11

Docker開源Linux

2022-11-28 08:15:14

Go語言代碼

2021-03-26 09:40:46

黑客攻擊信息安全

2022-03-25 21:57:49

匯編Go語言

2010-05-25 15:21:29

思科網真

2020-08-20 15:55:00

MySQL數據庫使用規范

2016-10-28 22:22:35

nodenode.jsdocker

2012-12-06 15:31:48

英特爾CEO歐德寧

2021-11-08 07:48:48

Go語言對象

2016-05-31 15:00:14

內部開源平臺華為開發者匯
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产成人免费在线 | 波多野结衣先锋影音 | 日韩欧美精品一区 | 国产男人的天堂 | 香蕉久久a毛片 | 日本欧美在线 | 日韩欧美一区二区三区免费观看 | 成人久久一区 | 日日综合| 精精国产xxxx视频在线播放7 | 91久久精品国产91久久性色tv | 毛片毛片毛片毛片毛片 | 国产欧美精品 | 欧美性生交大片免费 | 毛片一级片 | 国产精品久久精品 | av在线影院 | 亚洲高清视频在线 | 欧美成人黄色小说 | 日本综合在线观看 | 一级欧美| 在线色网站 | 久久久久一区二区三区 | 黑色丝袜三级在线播放 | 91精品久久久| 亚洲国产aⅴ成人精品无吗 欧美激情欧美激情在线五月 | 色姑娘综合网 | 欧美精品久久久 | 国产高清视频一区 | 久久精品亚洲精品国产欧美 | 性一交一乱一透一a级 | 国产一级片免费视频 | 久久人人国产 | chengrenzaixian| 亚洲欧美日韩中文字幕一区二区三区 | 天天视频一区二区三区 | 国产最好的av国产大片 | 国产97视频在线观看 | 中文字幕亚洲一区 | 久久精品国产久精国产 | 黑人巨大精品欧美黑白配亚洲 |