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)
}