/* 1.go语言常量 常量是一个简单的标识符,在程序运行时,不会被修改的量 常量中的数据类型只能是布尔型,数字型(整形、浮点型和复数)和字符串型。 定义格式为 const b type = value 2.根据省略类型说明符[type],根据变量的值来推断其类型。 显示类型定义: const b string = "abc" 隐示类型定义: const b = "abc" 多个相同类型的声明可以简写为: const a, b = value1 , value2

package main import "fmt" func main(){ const Length int = 200 const WIDTH int = 5 var area int const a,b,c = 1, false, "str" area = Length * WIDTH fmt.Printf("面积为 :%d", area) println() println(a,b,c) } */

/* package main import "unsafe" const ( a = "ab b = len(a) c = unsafe.Sizeof(a) ) func main(){ println(a,b,c) }

*/

/* 3.go语言运算符 运算符用于在程序运行时执行数据或逻辑运算 go语言内置的运算符有: 算术运算符(+-*% ++ —- /) 关系运算符 (== != > < >= <= ) 逻辑运算符 (&&与 ||或 !非) 位运算符 (对整数在内存中的二进制位进行操作) 赋值运算符(= += -= *= /= %= <<= >>= &= ^= |=) 其他运算符 (&返回变量存储地址 *指针变量)

//算术运算符 package main import "fmt" func main() { var a int = 21 var b int = 10 var c int

c = a + b
fmt.Printf("第一行 - c 的值为 %d\n", c)
c = a - b
fmt.Printf("第二行 - c 的值为 %d\n", c)
c = a * b
fmt.Printf("第三行 - c 的值为 %d\n", c )
c = a / b
fmt.Printf("第四行 - c 的值为 %d\n", c )
c = a % b
fmt.Printf("第五行 - c 的值为 %d\n", c )
a++
fmt.Printf("第六行 - a 的值为 %d\n", a )
b--
fmt.Printf("第七行 - b 的值为 %d\n", b )

}

package main import "fmt" func main() { var a int = 21 var b int = 10 if ( a == b) { fmt.Printf("第一行 - a 等于 b\n") } else { fmt.Printf("第一行 - a 不等于 b\n") } if (a < b) { fmt.Printf("第二行 - a 小于 b \n") } else { fmt.Printf("第二行 - a 不小于 b \n") } if ( a > b) { fmt.Printf("第三行 - a 大于 b \n") } a = 5 b = 20 if ( a <= b ) { fmt.Printf("第四行 - a 小于等于 b\n" ) } if ( b >= a ) { fmt.Printf("第五行 - b 大于等于 a\n" ) } }

//逻辑运算符 package main import "fmt" func main() { var a bool = true var b bool = false if ( a && b) { fmt.Printf("第一行 - 条件为true\n") } if ( a || b) { fmt.Printf("第二行 - 条件为true\n") } }

//位运算符 .位运算符对整数在内存中的二进制位进行操作。& , | ,^ package main import "fmt" func main(){ var a uint = 60 var b uint = 13 var c uint = 0 c = a ^ b fmt.Printf("第一行 -c 的值为 %d",c) }

//赋值运算符,简单的赋值运算符,将一个表达式的值赋值给一个左值

//其他运算符,& 返回变量存储地址,&a将给出变量的实际地址,*指针变量,*a是一个指针变量。 package main import "fmt" func main() { var a int = 4 var b int32 var c float32 var ptr *int fmt.Printf("第一行 - a 变量类型为 = %T\n", a ) fmt.Printf("第二行 - b 变量类型为 = %T\n", b ) fmt.Printf("第三行 - c 变量类型为 = %T\n", c )

ptr= &a
fmt.Printf("a 的值为 %d\n",a )
fmt.Printf("*ptr 为 %d\n", *ptr )

} */

//运算符的优先级 。运算符是有优先级的,二元运算符的运算方向是从左到右,*/<< >> & &^ > =-|^ > == != < > > && > || 可以通过括号来提升某个表达式的整体运算符优先级 package main import "fmt" func main() { var a int = 20 var b int = 10 var c int = 15 var d int = 5 var e int ; e = (a+b) * c /d; fmt.Printf("(a + b) * c / d 的值为 : %d\n", e ); e = ((a + b) * c) / d; // (30 * 15 ) / 5 fmt.Printf("((a + b) * c) / d 的值为 : %d\n" , e );

e = (a + b) * (c / d); // (30) * (15/5) fmt.Printf("(a + b) * (c / d) 的值为 : %d\n", e );

e = a + (b * c) / d; // 20 + (150/5) fmt.Printf("a + (b * c) / d 的值为 : %d\n" , e );
}