博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
老虞要学GoLang-代码规范
阅读量:6896 次
发布时间:2019-06-27

本文共 1892 字,大约阅读时间需要 6 分钟。

  hot3.png

      开始一项新语言前需要先了解该语言的语法(如果你有其他语言的编程知识的话),开始学习前,我们一起了解下Go的格式。

      如果大家都统一编码风格,那么在维护他人代码时就能带来便利。同时我们在提交代码前执行一次fmt命令,以便提交统一风格的代码。

      

注释

Go支持C语言风格的“//”块注释,也支持C++风格的行注释,同时可使用/**/进行包的 注释. 我们看string包的源代码,使用//注释了包,方法以及行。我们需要养成好的习惯,尽量去多写些注释,这样不但有利于自己以后的回顾,已给他人阅读你的代码提供了方便,当然Go下的源代码使用Go命令能够生成文档,而文档的描述内容源自注释,在编码阶段就同步书写注释,而不要在整理代码时书写注释(此时的思维没有编码时清晰,补救中总容易丢失些东西)

1// Copyright 2009 The Go Authors. All rights reserved.2// Use of this source code is Governed by a BSD-style3// license that can be found in the LICENSE file.45// Package strings implements simple functions to manipulate strings.6 package strings78 import (9 "unicode"10 "utf8"11 )1213// explode splits s into an array of UTF-8 sequences, one per Unicode character (still strings) up to a maximum of n (n < 0 means no limit).14// Invalid UTF-8 sequences become correct encodings of U+FFF8.15 func explode(s string, n int) []string {
16 if n == 0 {
17 return nil18 }19 l := utf8.RuneCountInString(s)20 if n <= 0 || n > l {
21 n = l22 }23 a := make([]string, n)24 var size, rune int25 i, cur := 0, 026 for ; i+1 < n; i++ {
27 rune, size = utf8.DecodeRuneInString(s[cur:])28 a[i] = string(rune)29 cur += size30 }31// add the rest, if there is any32 if cur < len(s) {
33 a[i] = s[cur:]34 }35 return a36 }

命名

Go中名称不但具有表达含义的功能,同时也具有约束使用的特点。如果一个函数的名称是小写的则表示该函数不能在其他包中使用。

    1. 命名必须使用骆驼命名法,而不能使用下划线法。

    2. 任何需要对外暴露的名字必须大写字母开头,不需要暴露在包外的名字必须以小写字母开头。

    3. 接口的命令,按照惯例,如果接口只有一个方法,则该接口命名为方法名成加上”ER“后缀。

分号

GoC语言一样使用“;”来结束一个语句,但不一样的是,在Go中由编译器去处理“;”,所以你必须在编写代码是省略“;”。当然也有例外,for循环(使用;将初始部分、条件部分和遍历元素区分),一行中有多个语句,多赋值语句等。

需要注意,不能将控制语句(for,if else,switch,select)的左括号另起一行。如

//错误的方式

if(1==2)

{

fmt.Println("God!")

}

//正确的书写

if(1==2) {

fmt.Println("God!")

}

学到新的知识后,再补充。

 ---------2013-04-10 补充---------------------

  Go语言编程规范:

      官方地址:    (墙了)

      中文翻译:

------------------end------------------------------

转载于:https://my.oschina.net/howdo/blog/481283

你可能感兴趣的文章
[Usaco2009 Feb]Revamping Trails 道路升级 BZOJ1579
查看>>
在Altium Designer9.0中建造自己的库
查看>>
转:c++ 11 新特性
查看>>
CodeVS 1058 合唱队形(DP--最长子序列问题)
查看>>
陶哲轩实分析引理 11.1.4
查看>>
秩-零化度定理
查看>>
mvc与三层架构终极区别
查看>>
python基础知识~ 函数详解
查看>>
简单几何(线段与直线的位置) POJ 3304 Segments
查看>>
DFS/BFS+思维 HDOJ 5325 Crazy Bobo
查看>>
P2312 解方程
查看>>
P2447 [SDOI2010]外星千足虫
查看>>
uva 796(求割边)
查看>>
铁大Facebook——十天冲刺(7)
查看>>
Oracle连接:TNS出错
查看>>
前端开发中,如何优化图像?图像格式的区别?
查看>>
借助第八代智能英特尔® 酷睿™ i7 处理器和 Unreal Swarm* 的强大性能快速构建光照...
查看>>
java之运算符
查看>>
洛谷 P1201 [USACO1.1]贪婪的送礼者Greedy Gift Givers Label:ExWater
查看>>
[K/3Cloud]进度条控件编程接口
查看>>