/* Go中不存在隐式转换,所有类型转换必须显式声明 转换只能发生在两种相互兼容的类型之间 类型转换的格式: <ValueA> [:]= <TypeOfValueA>(<ValueB>) 全局变量可以使用var()的形式,局部变量不可以使用var组的形式 type newInt int ,这里newInt不是int的别名,newInt转换成int类型的时候要显示的强制转化 */ package main import ( "fmt" "strconv" ) /* 常量的值在编译时就已经确定,不能在运行时产生值, 常量的定义格式与变量基本相同 等号右侧必须是常量或者常量表达式 常量表达式中的函数必须是内置函数 */ /* 在定义常量组时,如果不提供初始值,则表示将使用上行的表达式 使用相同的表达式不代表具有相同的值 iota是常量的计数器,从0开始,组中每定义1个常量自动递增1 通过初始化规则与iota可以达到枚举的效果 每遇到一个const关键字,iota就会重置为0 */ const a int = 1 const b = 'A' const ( c = 1 d = a + 1 e = a + 2 ) const ( c1 = 1 d1 e1 //不给产量赋值,则d1=c1,e1=d1,等于上面的值, _ABC = 89 //常量都是大写,前面加_就不会是public, ) const ( a, b = 1, "2" c, d ) const a, b, c = 1, "2", "C" func main() { var a float32 = 1.2 b := int(a) fmt.Println(a) //1.2 fmt.Println(b) //1 var c bool = true d := int(c) fmt.Println(c) // fmt.Println(d) //cannot convert c (type bool) to type int /* string() 表示将数据转换成文本格式,因为计算机中存储的任何东西 本质上都是数字,因此此函数自然地认为我们需要的是用数字65表示 的文本 A。 */ var e int = 85 f := string(e) fmt.Println(e) //85 fmt.Println(f) //U,不能转成字符 g := strconv.Itoa(e) //int转成string h, _ := strconv.Atoi(g) //string转成int fmt.Println(g) //"85" fmt.Println(h) //85 }
package main /* 运算符 Go中的运算符均是从左至右结合 优先级(从高到低) ^ ! (一元运算符) * / % << >> & &^ + - | ^ (二元运算符) == != < <= >= > <- (专门用于channel) && //前面是false后面不运算 || */ import ( "fmt" ) const a int = 1 func main() { fmt.Println(^2) //-3,一元运算符 fmt.Println(1 ^ 2) //3,二元运算符 fmt.Println(!true) //false fmt.Println(1 << 10) //1024,左移 fmt.Println(1 << 10 << 10) //1048576 }