作者:Wang嘉伟 | 来源:互联网 | 2023-09-23 20:03
Golang 基础
常量
const obj1 string = "CJS" const obj2 = "NB" const ( Sunday = 7 Monday = 1 Tuesday = 2 Wednesday = 3 Thursday = 4 Friday = 5 Saturday = 6 ) const ( Sunday = 7 Monday = iota Tuesday Wednesday Thursday Friday Saturday )
变量定义
var a, b int var c string 或者var ( a int b string c float64 d bool )
变量初始化的几种情况
var a int = 100 var b = "cjs" var ( c = 1 d = "nb" ) e := true
值类型与引用类型
int 、float、bool 和 string 以及 数组 和 结构体 都属于值类型 啥是值类型,就是将一个变量的值可以通过“= ”赋值给另一个变量 注意的是,这里的数组也是直接赋值,不用一个一个传指针、切片、map 、channel都属于引用类型
init函数
变量除了可以在全局声明中初始化,也可以在 init 函数中初始化。 这是一类非常特殊的函数,它不能够被人为调用,而是在每个包完成初始化后自动执行, 并且执行优先级比 main 函数高。每个源文件都只能包含一个 init 函数。初始化总是以单线程执行,并且按照包的依赖关系顺序执行。package transimport "math" var Pi float64 func init ( ) { Pi = 4 * math. Atan ( 1 ) }
go中的数字类型
整型int 和 uint 在 32 位操作系统上,它们均使用 32 位(4 个字节), 在 64 位操作系统上,它们均使用 64 位(8 个字节)。uintptr 的长度被设定为足够存放一个指针即可。 整数:int8 (- 128 - > 127 )int16 (- 32768 - > 32767 )int32 (- 2 , 147 , 483 , 648 - > 2 , 147 , 483 , 647 )int64 (- 9 , 223 , 372 , 036 , 854 , 775 , 808 - > 9 , 223 , 372 , 036 , 854 , 775 , 807 ) 无符号整数:uint8 (0 - > 255 )uint16 (0 - > 65 , 535 )uint32 (0 - > 4 , 294 , 967 , 295 )uint64 (0 - > 18 , 446 , 744 , 073 , 709 , 551 , 615 )浮点型go 是没有float类型的,也没有double类型 只有float32 和float64 类型 尽可能的使用float64 类型,因为math、库里都是flaot64类型 Go 中不允许不同类型之间的混合使用
一些注意
取余运算只能作用于整数++ 、-- 只能用于后缀,且只能作为单独语句,不能作为表达式var arr = 100 var brr int arr++ ++ arr brr = arr++ fmt. Println ( arr) fmt. Println ( brr)
类型别名
type TZ int type ST string 类型别名, 得到的新类型, 并非和原类型完全相同
字符类型
严格来说,这并不是 Go 语言的一个类型,字符只是整数的特殊用例。byte 类型是 uint8 的别名,对于只占用 1 个字节的传统 ASCII 编码的字符来说,完全没有问题。 例如:var ch byte = 'A' ;字符使用单引号括起来。
循环结构
if - else 类似C语言的用法,{ 与if 在同一行,else if 也在同一行 可以在if 、else - if 行,做初始化,即 if n:= 10 ; n>= i{ } switch 类似C语言的用法,且没有break 如果想继续执行后面的内容,你懂的,用fallthrough for GO语言没有while 只能用for 代替for 有与C语言一样的用法for true / 或者一个表达式{ 死循环} for i, x:= range obj{ } 的用法 这里注意下,x为接收每一个里面的值,这是拷贝,并非引用,改变x的值,不会对原数组或切点产生变化
break与continue
break 只能跳出最内层循环continue 都懂