golang

  1. golang学习
    1. go基础
    2. go数据类型
    3. go变量和常量
    4. go数组
    5. go结构体
    6. go切片

golang学习

go语言主要特性

  • 自动垃圾回收
  • 更丰富的内置类型
  • 函数多返回值
  • 错误处理
  • 匿名函数和闭包
  • 类型和接口
  • 并发编程
  • 反射
  • 语言交互性

go基础

  • 包声明

    package,每个go应用程序都包含一个名为main的包

  • 引入包

    import

  • 函数

    func,main函数是每一个可执行程序必须包含的,一般是启动后第一个执行的,如果有init()函数会先执行该函数

  • 变量

  • 语句 & 表达式

  • 注释

注意:当标识符(包括常量、变量、类型、函数名、结构字段等等)以一个大写字母开头,如:Group1,那么使用这种形式的标识符的对象就可以被外部包的代码所使用(客户端程序需要先导入这个包),这被称为导出(像面向对象语言中的 public);标识符如果以小写字母开头,则对包外是不可见的,但是他们在整个包的内部是可见并且可用的(像面向对象语言中的 protected )。

{必须当在函数后面,不能另起一行。

每个分局不用;结尾,但是多个语句在同一行需要;分割

变量的声明必须用空格隔开

go数据类型

布尔类型:var a bool

数字类型:int,float32,float64,支持整型和浮点型数字,并且支持复数,其中位的运算采用补码

字符串类型:由单个字符连接起来的,字符串的字节使用utf-8编码标识unicode文本

派生类似:

  • 指针类型(Pointer)
  • 数组类型
  • 结构化类型(struct)
  • Channel类型
  • 函数类型
  • 切片类型
  • 接口类型(interface)
  • Map类型

go变量和常量

变量:var关键字,

可以将 var f string = “Runoob” 简写为 f := “Runoob”这是使用变量的首选形式,但是它只能被用在函数体内,而不可以用于全局变量的声明与赋值。使用操作符 := 可以高效地创建一个新的变量,称之为初始化声明。

如果在相同的代码块中,我们不可以再次对于相同名称的变量使用初始化声明,编译器会提示错误 no new variables on left side of :=,但是重新赋值 是可以的,因为这是给相同的变量赋予一个新的值。

如果你声明了一个局部变量却没有在相同的代码块中使用它,同样会得到编译错误,但是全局变量是允许声明但不使用的

并行 或 同时 赋值。如果你想要交换两个变量的值,则可以简单地使用 a, b = b, a,两个变量的类型必须是相同。

空白标识符 _ 也被用于抛弃值,如值 5 在:, b = 5, 7 中被抛弃。空白标识符 _ 也被用于抛弃值,如值 5 在:, b = 5, 7 中被抛弃。

并行赋值也被用于当一个函数返回多个返回值时,比如这里的 val 和错误 err 是通过调用 Func1 函数同时得到:val, err = Func1(var1)。

常量:const

iota,特殊常量,可以认为是一个可以被编译器修改的常量。

iota 在 const关键字出现时将被重置为 0(const 内部的第一行之前),const 中每新增一行常量声明将使 iota 计数一次(iota 可理解为 const 语句块中的行索引)。

也就是默认常量不声明就为行索引,上一行有赋值和上一行赋值一样

go数组

数组的大小是类型的一部分,因此不同大小的数组是不兼容的,也就是说[5]int和[10]int是不同的类型

如果数组长度不确定,可以使用…代替数组的长度,编译器会根据元素个数自行推断数组的长度

如果设置了数组的长度,我们还可以通过指定下标来初始化元素

balance:=[5]float32{1:2.0,3:7.0}

go结构体

结构体定义使用type和struct语句

type struct_variable_type struct {
   member definition
   member definition
   ...
   member definition
}

go切片

内置类型切片(动态数组),与数组相比切片的长度不固定,可以追加元素,在追加时可能使切片的容量增大

可以声明一个未指定大小的数组来定义切片

var a []type

或使用make()来创建切片

var s []type=make([]type,len)
s:=make([]type,len)

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。