今天和一个小伙伴偶尔聊了两句,聊到现在工作的开发语言,大学时接触的第一个语言应该是html,系统且简单的学习了前端语言,之后伴随着学校的课程,C++、C#、Java都有涉及,然后就一直已Java为主了,也是在今年,有机会做go语言开发,现在算是java/go双语言开发了。
但go语言自学没一周就开始做go项目了,截止今天有四个月左右了,该专栏却迟迟没有新文章收入,今天就聊聊我这段时间学习+总结的一些Go语言开发规范吧
废话不多说,直接开始干货
本规范制定主要用于开发以及代码review 时进行参考,保证代码开发的一致性与规范性
其中前者适合单行注释,后者适合注释的正文应该以被注释的内容作为开头,例如
// Request represents a request to run a command. type Request struct { ... // Encode writes the JSON encoding of req to w. func Encode(w io.Writer, req *Request) { ...
注释文本应该以点号结束(方便godoc导出),参考上面例子
包内任一文件内写即可,注释的位置放在package 前面且之间 不可以有空行
// Package regexp implements a simple library // for regular expressions. package regexp
(即大写开头的变量或者函数)
【可选】注释应该位于import 和文件内代码之间的部分,例如
import ( "fmt" "github.com/golang/protobuf/proto" "github.com/op/go-logging" ) /* 文件级别的注释 This file implement the API of consensus which can be invoked by outer services. */ // package-level logger var logger *logging.Logger func init() { logger = logging.MustGetLogger("consensus/pbft") }
命名的规范性包括普通变量、结构体、指针类型等。
package pbft pbft_proto.go
type Reader interface { Read(p []byte) (n int, err error) }
type WriteFlusher interface { Write([]byte) (int, error) Flush() error }
owner := obj.Owner() if owner != user { obj.SetOwner(user) }
func (rr *roundRobin) watchAddrUpdates() error {...}
if err := file.Chmod(0664); err != nil { return err }
f, err := os.Open(name) if err != nil { return err } d, err := f.Stat() if err != nil { f.Close() return err } codeUsing(f, d)
sum := 0 for i := 0; i < 10; i++ { sum += i }
for key, value := range oldMap { newMap[key] = value }
sum := 0 for _, value := range array { sum += value } for key := range m { if key.expired() { delete(m, key) } }
type error interface { Error() string } // PathError records an error and the operation and // file path that caused it. type PathError struct { Op string // "open", "unlink", etc. Path string // The associated file. Err error // Returned by the system call. }
// 1. unkown error switch s := suit(drawCard()); s { case "Spades": //... case "Hearts": //... case "Clubs": //... default: panic(fmt.Sprintf("INVALID suit %q", s)) } // 2. key init var user = os.Getenv("USER") func init() { if user == "" { panic("no value for $USER") } }
鄙人有常年累月收集各种资料的习惯,最近正在整合内容,后续会统一放到公众号 鲲志说 上,想要的大佬可以关注获取,如果有需要的资料,但我暂时没有,也可以留言,我会去找
- 深入浅出Go语言的众多关键特性,并提供大量场景示例,对于刚接触或转型Go编程的读者是一本很友好的上手指南。
- 涉及内容新颖而广泛,包括语法结构、面向对象、并发编辑、上下文机制、网络编程、Go汇编以及流行框架等。
- 不仅讲解Go语言的编程方法与开发技巧,而且力图解读Go语言的设计思想,带领读者探究Go语言的本质。
- 三位作者都是一线长期使用Go语言的资深开发人,他们的经验是本书质量的保证,希望各位读者能通过阅读本书收获更多
《深入浅出Go语言核心编程》是一本全面而深入的Go语言学习手册,涵盖了Go语言的诸多关键特性,包括语法结构、内存原理、并发、上下文机制与框架应用等。
本书共20章。第1章引导读者快速搭建开发环境,详细介绍Go语言的环境配置及编译运行的具体细节。第2~5章详细讨论Go语言独特的变量、常量、常用数据类型和流程控制,并重点解析复杂类型的底层实现机制。第6~8章讲解Go语言的函数及如何实现面向对象编程,打通Go语言面向过程和面向对象编程之间的桥梁。第9~12章探讨Go语言的一些高级话题,包括并发、上下文、反射、泛型等。第13~15章探讨Go语言的I/O、网络编程及RPC通信等编程场景。第16~18章是Go语言的扩展话题,涵盖了内存管理、正则表达式和Go语言的汇编。第19章和第20章重点探讨了Go语言在日常开发中的典型应用,主要介绍HTTP框架Gin的使用,以及如何利用Go语言开发一个综合项目。
《深入浅出Go语言核心编程》内容丰富,由浅入深,既适合初次接触Go语言的新手,也适合有一定经验的软件开发人员阅读。
————————————————
本次本篇文章送书 🔥1本 评论区抽1位小伙伴送书
📆 活动时间:截止到 2023-12-21 19:00:00
🎁抽奖方式:利用网络公开的在线抽奖工具进行抽奖
💡参与方式:关注、点赞、收藏,评论 “从入门到入狱,GoGoGo”
————————————————
🔥 注:活动结束后,会私信中奖粉丝的,各位注意查看私信哦!
小伙伴也可以访问链接进行自主购买哦~
直达京东购买链接🔗:《深入浅出Go语言核心编程》
- 好看的灵魂千篇一律,有趣的鲲志一百六七!
- 如果觉得文章还不错的话,可以点赞+收藏+关注 支持一下,鲲志的主页 还有很多有趣的文章,欢迎小伙伴们前去点评
- 如果有什么需要改进的地方还请大佬指出❌
上一篇:SQL中使用的运算符号详解