成人免费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

創業

2022-12-05 09:32:29

Go 語言風格規范

2016-11-09 13:52:33

內部數據KPI

2016-11-09 15:36:19

數據平臺大數據

2021-05-06 11:04:55

GooglePython代碼

2015-11-03 10:17:11

Dynatrace

2009-06-23 10:03:44

暴雪內部圖片

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語言代碼

2022-03-25 21:57:49

匯編Go語言

2021-03-26 09:40:46

黑客攻擊信息安全

2020-08-20 15:55:00

MySQL數據庫使用規范

2010-05-25 15:21:29

思科網真

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技術棧公眾號

主站蜘蛛池模板: 国产成人精品久久二区二区91 | 国产91网址| 日韩在线观看中文字幕 | 午夜精品一区 | 久久精品国产精品青草 | 色视频网站在线观看 | 国产精品无码专区在线观看 | 欧美一级在线视频 | 亚洲不卡| 日韩有码一区 | 91在线精品视频 | 刘亦菲国产毛片bd | 在线看免费的a | 久久久久国产 | 欧美精品一区二区三区在线 | 久草在线 | 国产精品不卡一区 | 午夜一区 | 成人在线精品 | 日本精品久久久一区二区三区 | 欧美中文字幕一区二区三区亚洲 | 欧美一区不卡 | 国产h视频 | 激情久久av一区av二区av三区 | 亚洲精品乱码久久久久久久久久 | 91大神在线资源观看无广告 | 日本免费小视频 | 欧洲精品码一区二区三区免费看 | 亚洲精品在线免费 | 奇米四色在线观看 | 亚洲欧美日韩精品久久亚洲区 | 日本不卡免费新一二三区 | 成人精品视频在线 | 狼色网| 欧美综合在线观看 | 欧美成人一区二区 | 日本a∨精品中文字幕在线 亚洲91视频 | 国产精品亚洲成在人线 | 亚洲视频免费 | 国产伦精品一区二区三区高清 | 欧美日韩手机在线观看 |