K8s源码风格及规范

时间:2019-10-01 19:03:33   收藏:0   阅读:148

###K8s源码风格及规范

一、工程概述

二、源码准备

1.系统环境:
GOROOT=/usr/local/lib/golang
GOPATH=/root/go
go version go1.10.3 linux/amd64
2.源码下载
mkdir -p /root/go/src/k8s.io
cd /root/go/src/k8s.io/
git clone https://github.com/kubernetes/kubernetes.git
目录名 功能
cmd 每个组件代码入口(main函数)
pkg 各个组件的具体功能实现
staging 已经分库的项目
vendor 依赖
3.IDE

三、go语言特点及命名规范

1.go语言特点

GO语言的关键特性主要包括以下几方面:

2.相关规范
import (
    "fmt"
)

如果你的包引入了三种类型的包,标准库包,程序内部包,第三方包,建议采用如下方式进行组织你的包:

import (
    "strings"

    "myproject/models"
    "myproject/controller"

    "github.com/mysql"
)   

有顺序的引入包,不同的类型采用空格分离,第一种实标准库,第二是项目包,第三是第三方包。在项目中不要使用相对路径引入包:

// 这是不好的导入
import “../pkg”

// 这是正确的做法
import “github.com/tx23/pkg”
var (
    Found bool
    count int
)
type MyInt int
func (m MyInt) String() string { 
    return fmt.Sprint(m)   //BUG:死循环
}

func(m MyInt) String() string { 
    return fmt.Sprint(int(m))   //这是安全的,因为我们内部进行了类型转换
}
func Foo(a int, b int) (string, ok){

}

当然如果是有多个相同类型的参数返回,那么命名参数可能更清晰。

func (f *Foo) Location() (float64, float64, error)

fori:=0;i<limit;i++{
    go func(){ DoSomething(i) }() //错误的做法
    go func(i int){ DoSomething(i) }(i)//正确的做法
?}
type User struct{
    Username  string
    Email     string
}

初始化如下:

u := User{
    Username: "astaxie",
    Email:    "astaxie@gmail.com",
}
func(w Win) Tally(playerPlayer)int    //w不会有任何改变 
func(w *Win) Tally(playerPlayer)int    //w会改变数据

更多的请参考:
https://code.google.com/p/go-wiki/wiki/CodeReviewComments#Receiver_Type

参考资料:
https://code.google.com/p/go-wiki/wiki/CodeReviewComments
http://golang.org/doc/effective_go.html

原文:https://www.cnblogs.com/tangxin2019/p/11615739.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!