go语言学习入门
-
a -> apple
b -> bananago语言学习笔记语法特性
package main //代表程序可以独立运行 有些类似于java的主类 整个程序的入口,每个应用程序都包含一个main的包 import "fmt" //程序最先执行的函数 每一个可执行程序都必须包含main 也是程序的入口 func main() { fmt.Println() }
-
fmt.Println() 以大写字母开头的标识符代表可以被外部包先import后再引用 类似于java的public 而小写字母开头的标识符则不能 类似于private
-
变量声明
var 变量名 type = value //第一种 变量名 := 1 //:=声明语句 var vname1, vname2, vname3 = v1, v2, v3 //也可以像python一样自动判断变量类型
-
值类型和引用类型
像int string 都属于值类型
可以通过&i 来获取变量i 的内存地址 值类型的变量值储存在栈中 可能每次获取的地址不一样
复杂的数据通常使用多个字 这些数据一般使用引用类型保存
一个引用类型的变量r1存储的是r1的值所在的内存地址 或者内存中第一个字所在的位置
这个内存地址称之为 指针
-
声明了局部变量 但是没有在相同的代码块中使用 会编译错误 草
-
常量const声明可以枚举
const ( Unknown = 0 Female = 1 Male = 2 c = unsafe.Sizeof(a) // 可以用内置函数赋值 index=iota // iota用来计数const枚举中的常量的数量 每次增加一个常量 iota就会+1 )
-
select 条件语句 类似于用于通信的switch语句 每个case必须是一个通信操作 要么是发送要么是接收
select { case communication clause : statement(s); case communication clause : statement(s); default: statement(s); }
每一个case都必须是一个通信
所有channel的表达式都会被求值
所有被发送的表达式都会被求值
如果任意某个通信可以进行 就会执行 其他忽略
如果有多个case都可以运行 就随机选一个 其他不会执行
-
go语言程序最少有一个main()函数
func 函数名([parameter_list]) [return_type] { 函数体 }
-
方法声明
type Circle struct{ radius float64 } //类似于oo的class声明 func (c Circle) getArea() float64{ //将c circle作为形参传入到方法中 return c.radius*c.radius*3.14 }
-
数组
var 变量名 [size] type var balance = [5]float32{1000,2,3,4,7}
-
结构体
type 结构体名 struct{ member def member def } 变量声明 变量名 := 结构体名{var1,var2,var3,....} 变量名 := 结构体名{key:var1,key:var2}
-
slice 切片
var 变量名 []type // 用未指定大小的数组来定义切片 var slice1 []type = make([]type,len) s :=[] int {1,2,3 } 切片初始化
切片和数组的区别就是在初始化上 切片初始化[],数组传参数[size]
-
range
for a,num := range nums{ sum += num fmt.Printf("%d : %d\n",a,num) } output: 0 : 1 1 : 2 2 : 3 3 : 4 kvs := map[string] string{ "a":"apple", "b":"banana"} for key,value := range kvs{ fmt.Printf("%s -> %s\n",key,value) } output: a -> apple b -> banana
-
接口
-
-
好
好
好