有人说go和php有很多相似的地方,用惯了弱语言的php是时候换换口味了

声明变量

go的声明变量的方式四种(茴香的茴有四种写法),开个玩笑,但是以下几种形式还是可以的

  1. var ValueName type //直接声明一个,声明了就要用啊,不然编译的时候就会报错
  2. var name1,name2,name3 type //类型就近原则,直接声明三个相同类型的变量
  3. var ValueName type = value //声明了变量顺便赋值
  4. var name1,name2,name3 type = value1,value2,value3 //批量赋值也可以,注意他们的类型是一样的
  5. name1,name2,name3 := value1,value2,value3 //这才是常用的写法,用 : 来自动判断类型,单个的也是这个用法 还有个特殊的变量名, _ 这代表占个位置但是赋给他的值会被丢弃,比如 _,a := 1,2 a的值为2 但是1就给丢了 这时的使用情景碰到再说

声明常量

常量的关键词就不是 var 了 而是 const,和变量的区别是一旦定义就不能改了

  1. const ValueName = value //直接赋值
  2. const Pi float32 = 3.1415926 //也可以声明常量的类型

###分组赋值 在多个包里用到再赋值有的时候不利于debug,可以直接把要赋值的都放到一起 比如:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
const{
      ENV := true
      LOCAL := 'dev'
      DATE := 20170307
}

var{
    i int
    pi float32
    name string
}

##boolean类型 true or false 默认为false

##数值类型 go支持 int,uint可以定义的类型有rune,int8,int16,int32,int64,byte,uint8,uint16,uint16,uint32,uint64

其中 rune是int32的别称,byte是uint8的别称

不同类型的数不能相互赋值和操作 二进制的数不能和八进制的相加减

浮点型也有float32,float64两种,没有 float这个类型,默认 float64

##字符串 字符串的赋值方式遵循着上面的 声明变量 那一块说的。

Value1 := ‘string’ 和 Value1 := “string” 一个效果 ""代表的是一个空字符串也是占着内存的

字符串之间的拼接用 + 比如

1
2
3
4
5
a,b :="hello","world"  

c := a + b

Printf("%s\n",c)  //输出 helloworld

字符串的修改不能直接修改,可以用切片的方式实现例如:

1
2
3
a := 'hello'
b := 'w' + a[1:]
//b 的值为 wello

什么是切片我们一会儿就会说到