分类
学习笔记

Golang学习笔记(1)——基础语法

基础语法

一个简单的Go语句如下:

fmt.Println("Hello, World!")
  • 一行代表一个语句结束。每个语句不需以分号;结尾,但也不是像Python一样纯靠缩进来表示内容,出现多行代码时,需要用大括号{}进行包裹
  • 标识符用来命名变量、类型等,其第一个字符必须是字母或下划线而不能是数字
  • 备注格式与 C/C++ 相同

关键字

Go语言中的25个关键字或保留字:

breakdefaultfuncinterfaceselect
casedefergomapstruct
chanelsegotopackageswitch
constfallthroughifrangetype
continueforimportreturnvar

以及36个预定义标识符:

appendboolbytecapclose | complex | complex64 | complex128 | uint16
copyfalsefloat32float64imag | int | int8 | int16 | uint32
int32int64iotalenmake | new | nil | panic | uint64
printprintlnrealrecoverstring | true | uint | uint8 | uintptr

数据类型

Go语言有以下几种数据类型:

  • 布尔型:常量 true 或者 false。一个简单的例子:var b bool = true

  • 数字类型:整型 int 和浮点型 float,并且原生支持复数,其中位的运算采用补码。更详细的信息看文章末尾。

  • 字符串类型:使用UTF-8编码标识Unicode文本

  • 以及以下几种派生类型:

(a) 指针类型(Pointer)
(b) 数组类型
(c) 结构化类型(struct)
(d) Channel 类型
(e) 函数类型
(f) 切片类型
(g) 接口类型(interface)
(h) Map 类型

变量

Go语言中声明变量使用var关键字:

var identifier type

声明变量的几种方式

1.声明时指定数据类型

var v_name v_type

2.根据值自行判定变量类型

var v_name = value

3.忽略var关键字

v_name := value

操作符:=可以高效地创建一个新的变量,是使用变量的首选形式,但是只能被用在函数体内,不可以用于全局变量的声明与赋值。
4.多变量声明

//类型相同多个变量, 非全局变量
var vname1, vname2, vname3 type
vname1, vname2, vname3 = v1, v2, v3
var vname1, vname2, vname3 = v1, v2, v3
vname1, vname2, vname3 := v1, v2, v3
// 这种因式分解关键字的写法一般用于声明全局变量
var  (
    vname1 v_type1
    vname2 v_type2
)

常量

常量的定义格式:

const identifier [type]  = value

多个相同类型的声明可以简写为:

const c_name1, c_name2 = value1, value2

常量还可以用作枚举:

const  (
    Unknown  =  0
    Female  =  1
    Male  =  2
)

iota,特殊常量,可以认为是一个可以被编译器修改的常量。每当 iota 在新的一行被使用时,它的值都会自动加 1。

运算符

Golang的运算符与大多数编程语言相同,就不多加累述了。有兴趣的可以浏览Go 语言操作符

条件语句

与大多数编程语言相似,Golang有if,if...else,if嵌套,switch等判断语句,还有一个特有的select语句与switch语句相似。
例子:
if…else语句

if  布尔表达式  {
    /* 在布尔表达式为 true 时执行 */
}  else  {
    /* 在布尔表达式为 false 时执行 */
}

switch语句

switch var1 {
    case val1:
        ...
    case val2:
        ...
    default:
        ...
}

select语句

select {
    case communication clause  :
       statement(s);
    case communication clause  :
       statement(s);
    /* 你可以定义任意数量的 case */
    default : /* 可选 */
       statement(s);
}

循环语句

Go语言中循环为for语句,有三种形式
和 C 语言的 for 一样:

for init; condition; post { }

和 C 的 while 一样:

for condition { }

和 C 的 for(;;) 一样:

for { }

例子:

package main
import "fmt"
func main() {
   var b int = 15
   var a int
   numbers := [6]int{1, 2, 3, 5}
   /* for 循环 */
   for a := 0; a < 10; a++ {
      fmt.Printf("a 的值为: %d\n", a)
   }
   for a < b {
      a++
      fmt.Printf("a 的值为: %d\n", a)
   }
   for i,x:= range numbers {
      fmt.Printf("第 %d 位 x 的值 = %d\n", i,x)
   }
}

参考资料&&推荐阅读