Go基础语法(一)运算符,变量类型,常量,字面量,iota,作用域

118 阅读2分钟

赋值运算符

运算符描述
=将一个表达式的值赋给一个左值
+=相加后再赋值
-=相减后再赋值
*=相乘后再赋值
/=相除后再赋值
%=取余后再赋值
<<=左移后赋值
>>=右移后再赋值
&=按位与后赋值
、=按位或后赋值
^=按位异或后赋值

变量 、常量、字面量

变量类型

类型go变量类型fmt输出
整形int int8 int16 int32 int64 uint uint8 uint16 uint32 uint64%d
浮点型float32\float64%f \ %e %g
复数complex128 complex64%v
布尔型bool%t
指针uintptr%d
引用类型map、slice、channel%v
字节byte%d
任意字符rune%d
字符串string%s
错误error%v

变量初始化

  • 如果声明后未显式初始化,数值类型初始化0,字符串初始化为空字符串,布尔型初始化为false,引用类型,函数、指针,接口初始化巍峨nil.

  • 函数内部的变量(非全局变量),可以通过:=声明并初始化 a:=3

  • 下划线表示匿名变量 _=2+4 匿名变量不占命名空间,不会分配内存,因此可以重复命名

常量

常量在定义必须赋值,且程序运行期间其值不能改变。

const PI float32 = 3.14 //通过常量命名为大写
const(
    PI=3.14
    E=2.71const(
    a=100
    b //100,跟上一行一样
    c //100,跟上一行一样
)

iota

在常量中使用,引入后,会逐行加一


import (
   "fmt"
)

const (
   a = iota //iota 只能在const中使用,初始值为0
   b
   c
)

const (
   a1 = iota //iota 只能在const中使用,初始值为0
   _         //1
   b2        //2
   c3        //3
)

const (
   e, d, t = iota + 1, iota + 2, iota + 3
   r, f, v //不赋值和上一行保持一致。
)

func main() {

   fmt.Printf("a = %d b=%d c=%d \n", a, b, c)

   fmt.Printf("a1 = %d b2=%d c3=%d \n", a, b, c)

   fmt.Printf("e = %d , d = %d ,t=%d \n r = %d ,f = %d ,v = %d ", e, d, t, r, f, v)

}

字面量

字面量:没有出现变量名,直接出现了值,基础类型的字面量相当于时常量

fmt.Printf("%t\n",04==4.00)

变量作用域

var(
    A=3 //全局变量,大写字母开头,所有地方都可以访问,跨package访问时需要带上package名称
    b=4 //全局变量,小写字母开头,本package内都可以访问
)
func foo(){
    b:=5 //局部变量,仅本函数内可以访问,内部声明的变量可以跟外部声明的变量有冲突,以内部的
    {
        b:=6 //仅{}圈定的作用域内可以访问,可以跟外部的变量有冲突
    }
}