go语言的变量类型:

  • bool (在其他语言里,例如python语言,true为0,false不等于0。在golang里bool就只有true或false,没有0或非0,也不能转成0或非0, 同样0或非0也不能转成bool类型),
  • string   特别注意: 单行字符串用“ ”多行字符串输入用` `  
多行字符串用` (非'单引号),而是在键盘数字1左边  符号~ 的下面,和符号~在同一个按键上
biaoti:=`石头剪子布游戏,现在开始:
我是电脑,人类优先,你先出吧!
请输入你要出什么:
输入0表示石头
输入1表示剪刀
输入2表示布`
  • int 分好多种int,有点头晕,但用默认的int就足够了,根据机器判断,是32位的用int32,是64位的用int64.
  • byte, 又是uint8的别名。
  • rune(类似char,但是是utf-8编码的char),又是int32的别名。
  • go语言没有float,只有float32, float 64(即使在32位的架构上还是64位)
  • go语言原生支持复数类型,类似python, python也支持复数。go语言的复数类型有2种:complex64, complex128。一般程序其实很少用的上

 golang类型转换是强制的,不能隐式转换。(特别注意:bool类型不能转化成int, int也不能转化成bool类型,这个我踩过坑,N天后来补上这条规则。在其他语言里数字0就代表假,非0就是真,在go语言里不可以,布尔类型就是true 或 false,跟数字一点关系都没有,这样设计也挺好。只是学过其他语言的刚开始可能不适应罢了。)

go语言有个特殊符号 _,下划线,即可作常量也可作变量 , _   下划线用于忽略值占位

go语言定义常量

定义常量: const 常量名, 数据类型(类型可省略,具体到用的时候golang可自动规定)

常量值必须是编译期可确定的数字、字符串、布尔值。

注意:const 后面的常量名在go语言可以不用大写,在C里强制要大写的,go的大写是有特殊含义的,并且大小写是敏感的。

function changliang ( ) {
  const (
    a, d = 3, 4  //常量可以规定类型,也可以不规定,不规定类似,类型是不确定的,此处a,d既可以做int任何一种类型, 又可以做float32, float64任何一种类型。
    b string ="hello"
  )       
  var c int
  c =  int ( math.Sqrt (a*a + b*b) )  //此处a,b类型为float64, 没规定类型直接放进来,math.Sqrt函数里是float64类型,就自动规定为float64类型。
  fmt.Println(c, b)
  }

枚举类型:

const (
  python = iota  //从0开始自增,并且iota支持参加运算,具体看代码区域块里的代码
       _                 //golang特殊字符, 赋值后忽略 
  golang      // 值为2
       csharp     // 值为3
)

 详见代码:

package main

import (
    "fmt"
    "math"
)

func main() {
    consttest()
    constiota()
    changliang()
}
func changliang()  {
    const(
        a, d = 3, 4
        b string = "gooing"
    )
    var c int
    fmt.Println(a, b)
    c = int(math.Sqrt(a*a + d*d)) //此处a,d为float64类型
    fmt.Println(c)

}
func consttest()  {
    const (
        python = iota
        golang
        _
        cpp
        clang

    )
    fmt.Println(python,golang,cpp,clang )

}

func constiota()  {
    //Byte, KB,MB, GB,TB
    const(
        b =1 << (10 * iota)  //iota能够参与运算
        kb
        mb
        gb
        tb

    )
    fmt.Println(b,kb,mb,gb,tb)
}