基础认知

  • 注释

// 单行注释
/*
 多行注释
 */
  • 25个关键字

  • 36个预定义标识符

  • 空格

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

  • 变量的声明

只声明变量,不赋值将返回各类型的空值

数值类型(包括complex64/128)为 0

布尔类型为 false

字符串为 ""(空字符串)

以下几种类型为 nil:
var a *int
var a []int
var a map[string] int
var a chan int
var a func(string) int
var a error // error 是接口
所以说,go中的空并不能直接等于nil
  • 自动推导类型

var i = 1
fmt.Printf("%T",i) >>> int
i := 1
fmt.Printf("%T",i) >>> int
这两种方式是相同的
  • 多变量声明

//类型相同多个变量, 非全局变量
var vname1, vname2, vname3 type
vname1, vname2, vname3 = v1, v2, v3

var vname1, vname2, vname3 = v1, v2, v3 // 和 python 很像,不需要显示声明类型,自动推断

vname1, vname2, vname3 := v1, v2, v3 // 出现在 := 左侧的变量不应该是已经被声明过的,否则会导致编译错误
  • 常量

常量中的数据类型只可以是布尔型、数字型(整数型、浮点型和复数)和字符串型。

可以省略类型说明符 [type],因为编译器可以根据变量的值来推断其类型。
显式类型定义: const b string = "abc"
隐式类型定义: const b = "abc"
常量还可以用作枚举:
const (
    Unknown = 0
    Female = 1
    Male = 2
)
数字 0、1 和 2 分别代表未知性别、女性和男性。
  • 运算符

算术运算符

var a = 10
a--
a >> 9
a++
a >> 10
  • 关系运算符


跟python差不多
注意,只能同类型的进行关系比较,如果int 类型与string类型进行比较,编译不过,提示 (mismatched types int and string)

  • 逻辑运算符

&&    >>  and
||    >>  or
!     >>  非   (!true) >>false

  • 位运算符


异或的理解:按位异或运算符,参与运算的两个二进制对应位进行异或,两数位相同,异或得0,两数位不同时,异或得1.

  • 赋值运算符

  • 其他运算符


  • 条件语句


go没有三目运算符,所以不支持?:形式的条件判断


  • swithch




匿名变量
就是没有名字的变量,在使用多重赋值的时候,如果不需要在左侧接受变量,就可以使用匿名变量

函数名还可以有空格?

原文地址:https://www.cnblogs.com/cizao/p/11481994.html