其他分享
首页 > 其他分享> > Go 初识

Go 初识

作者:互联网

一、go语言简介

 Go语言的吉祥物-金花鼠

1-1、Go语言的由来

Go(又称Golang)是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。

Go语言的主要开发者有:肯.汤姆逊(Ken Thompson)、罗布.派克(Rob Pike)和罗伯特.格里泽默(Robert Griesemer)。

肯.汤姆逊(Ken Thompson):图灵奖得主,Uinx发明人,B语言作者(C语言前身),还做飞行员,后来被谷歌挖走。
罗布.派克(Rob Pike):Unix团队和Plan 9操作系统计划的成员,与Ken老爷子共事多年,并共创出广泛使用的UTF-8 字元编码。
罗伯特.格里泽默(Robert Griesemer):曾协助制作Java的HotSpot编译器,和Chrome浏览器的JavaScript引擎V8。

1-2、Go语言的开发背景

1-3、Go语言的特点、应用领域

应用领域

主要项目

二、Go 语言基础语法

注释

//这是单行注释
/*
这是多行注释1
这是多行注释2
这是多行注释3
*/

简单的示例

package main
import "fmt"
var a int = 123
func main() {
    fmt.Println(a)
}
/*
所有功能都是通过导包的形式调用,导入的包必须使用,否则会报错
package + 包名 表明当前文件属于哪个包
main包 表示当前文件属于项目根目录
包内的元素是共享的
首字母大写的变量可以被外部导入
一个项目只能有一个可执行文件
main() 它是一个项目的入口,运行项目其实就是运行main()
*/

关于go命令的路径

    绝对路径:文件绝对路径
    相对路径:相对的是当前路径

    绝对路径:项目绝对路径
    相对路径:相对的是src

常用的4个go命令

    -o:指定结果存放路径

    编译的是可执行项目:结果放在bin下
    编译的是非可执行:结果放在pkg下

    代码格式化

 变量

先强调一点:在函数中的局部变量定义完之后,必须要使用,否则会报错。全局变量不存在该情况。

Go语言定义变量的5种方式:

① var 变量名1,变量名2 类型字面量(int,float64,bool,string)

 

② var 变量名1,变量名2 类型字面量 = 变量值1,变量值2 

③ var 变量名1,变量名2 = 变量值1,变量值2 不定义字面量,系统会根据数据自动判断数据类型

④ a := 100 //短声明 ==>只能用在函数内部,无法用在全局

 

 ⑤ var (

  变量名1 字面量 = 变量值1

  变量名2 字面量 = 变量值2

)

 变量的赋值

要求:类型要一致、支持多变量赋值、支持交叉赋值

一些必要的规范

命名规则

变量命名规则

错误示例:UrlArray,应该写成urlArray或者URLArray

一些常见的特有名词:
// A GonicMapper that contains a list of common initialisms taken from golang/lint
var LintGonicMapper = GonicMapper{
    "API":   true,
    "ASCII": true,
    "CPU":   true,
    "CSS":   true,
    "DNS":   true,
    "EOF":   true,
    "GUID":  true,
    "HTML":  true,
    "HTTP":  true,
    "HTTPS": true,
    "ID":    true,
    "IP":    true,
    "JSON":  true,
    "LHS":   true,
    "QPS":   true,
    "RAM":   true,
    "RHS":   true,
    "RPC":   true,
    "SLA":   true,
    "SMTP":  true,
    "SSH":   true,
    "TLS":   true,
    "TTL":   true,
    "UI":    true,
    "UID":   true,
    "UUID":  true,
    "URI":   true,
    "URL":   true,
    "UTF8":  true,
    "VM":    true,
    "XML":   true,
    "XSRF":  true,
    "XSS":   true,
}
一些常见的特有名词

函数命名规则
  驼峰式命名,名字可以长但是得把功能,必要的参数描述清楚,函数名名应当是动词或动词短语,如postPayment、deletePage、save。并依Javabean标准加上get、set、is前缀。例如:xxx + With + 需要的参数名 + And + 需要的参数名 + …..

结构体命名规则
  结构体名应该是名词或名词短语,如Custome、WikiPage、Account、AddressParser,WriteDbMgr,ConfMgr,避免使用Manager、Processor、Data、Info等类名,而且类名不应当是动词。
  结构体中属性名大写,如果属性名小写则在数据解析(如json解析,或将结构体作为请求或访问参数)时无法解析
包名命名规则
  包名应该为小写单词,不要使用下划线或者混合大小写。

接口命名规则

单个函数的接口名以”er”作为后缀,如Reader,Writer。接口的实现则去掉“er”。
type Reader interface {
    Read(p []byte) (n int, err error)
}

//两个函数的接口名综合两个函数名
type WriteFlusher interface {
    Write([]byte) (int, error)
    Flush() error
}

//三个以上函数的接口名,抽象这个接口的功能,类似于结构体名
type Car interface {
    Start([]byte) 
    Stop() error
    Recover()
}

注释
在编码阶段应该同步写好变量、函数、包的注释,最后可以利用godoc导出文档。注释必须是完整的句子,句子的结尾应该用句号作为结尾(英文句号)。注释推荐用英文,可以在写代码过程中锻炼英文的阅读和书写能力。而且用英文不会出现各种编码的问题。
每个包都应该有一个包注释,一个位于package子句之前的块注释或行注释。包如果有多个go文件,只需要出现在一个go文件中即可。

// log包实现了常用的log相关的函数
package log 

导出函数注释,第一条语句应该为一条概括语句,并且使用被声明的名字作为开头。
// 求a和b的和,返回sum.
func Myfunction(a, b int) (sum int){

}

常量

常量均需使用全部大写字母组成,并使用下划线分词:const APP_VER = “1.0”

如果是枚举类型的常量,需要先创建相应类型

Go语言中的常量

 首先:常量的内存读写权限位只读权限,也就是说常量定义了就无法更改

定义方式:

1.const 常量名 类型字面量 = 常量值

2.const 常量名 = 常量值

3.const (

  常量名1 = 值1

  常量名2 = 值2

常量组

  1 空常量的值和类型,与上方最近的变量值与类型一致

  2 空常量的个数要与上方最近的非空常量一致

自增常量组:iota

  从0开始计数

  默认类型int

占位符 _ = iota

iota参与运算

  const (

    _ = iota*3
    a
    b
    c
    )

中断与恢复

  const(

    _ = iota*3
    a
    b
    c = iota
    d
)

多个iota连用

  const(

    _,_ = iota,iota
    a,b
    c,d
)

自定义iota类型:

  const(

    _float64 = iota
    a
    b
)

算数运算

①变量一定义,它的数据类型是确定死了的,不能再变

② 100 这样的整型数字存在自动转换为100.0 float64的情况

③ 100.0 这样的float型数字存在自动转换为100 int的情况

④同类型之间才能进行算数运算

⑤算数运算支持十进制、二进制、十六进制

指针

指针是存放内存地址的变量

var a=100
fmt.Println(&a)    //0x00005680
var b = &a
fmt.Println(b)    //*int int类型指针
获取指针的值方法:*b

 

标签:常量,int,go,初识,Go,true,iota
来源: https://www.cnblogs.com/suguangti/p/11446672.html