//当前程序的包名 package main //导入其他包 import"fmt" //常量定义 const PI = 3.14 //全局变量的声明和赋值 var name = "this a var " //一般类型声明 type newType int; //结构的声明 type newStruct struct {} //接口的申明 type golang interface {} //main函数作为程序入口点启动 funcmain(){ fmt.Println("hello zibu") }
var isBool bool = true//bool类型 默认false var isInt int = 1//int类型 var isFloat32 float32 = 1.1//float32 var isFloat64 float64 = 1.1//float64 //1.9版本对于数字类型 无需声明 系统自动识别
GO语言变量
1 2 3
var v_name v_type //默认声明 给与一个默认初始值 var v_name = v_value //自动根据赋值判定数据类型 v_name := v_value //省略var的语法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
var x, y int var ( // 这种因式分解关键字的写法一般用于声明全局变量 a int b bool )
var c, d int = 1, "zibu"
//这种不带声明格式的只能在函数体中出现 //g, h := 123, "hello"
funcmain(){ g, h := 123, "hello" println(x, y, a, b, g, h) }
funcmain() { const ( a = iota//0 b //1 c //2 d = "ha"//独立值,iota += 1 e //"ha" iota += 1 f = 100//iota +=1 g //100 iota +=1 h = iota//7,恢复计数 i //8 ) fmt.Println(a,b,c,d,e,f,g,h,i) } //0 1 2 ha ha 100 100 7 8
type struct_variable_type struct { member definition; member definition; ... member definition; }//定义一个结构体 variable_name := structure_variable_type {value1, value2...valuen}//创建结构体变量,并赋值 fmt.Printf(variable_name.value1)//访问子元素
var identifier []type//声明一个未制定大小的数组来定义切片 var slice1 []int = make([]int,length)//声明一个制定长度的切片 slice2:=make([]int,length,capacity) //增加容量声明,容量是容器的大小,长度是数据的长度,容量>=数据
package main import"fmt" funcmain() { //这是我们使用range去求一个slice的和。使用数组跟这个很类似 //使用range将传入index和值变量,由于该例子无需序号则施工空白符“_”省略。 nums := []int{2, 3, 4} sum := 0 for _, num := range nums { sum += num } //range也可以用在map的键值对上。 kvs := map[string]string{"a": "apple", "b": "banana"} for k, v := range kvs { fmt.Printf("%s -> %s\n", k, v) } //range也可以用来枚举Unicode字符串。第一个参数是字符的索引,第二个是字符(Unicode的值)本身。 for i, c := range"go" { fmt.Println(i, c) } } sum: 9 index: 1 a -> apple b -> banana 0103 1111
Go语言Map(集合)
Map:无序的键值对的集合,通过key来快速检索数据。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
/* 声明变量,默认 map 是 nil */ var map_variable map[key_data_type]value_data_type
/* 使用 make 函数 */ map_variable := make(map[key_data_type]value_data_type)
funcmain() { /* 创建map */ countryCapitalMap := map[string]string{"France": "Paris", "Italy": "Rome", "Japan": "Tokyo", "India": "New delhi"} /* 遍历map */ for country := range countryCapitalMap { fmt.Println(country, "首都是", countryCapitalMap [ country ]) } /*删除元素*/ delete(countryCapitalMap, "France") }
Go语言递归函数
阶乘:注意设置退出条件 否则将死循环
1 2 3 4 5 6 7 8 9 10 11 12
funcFactorial(n uint64)(result uint64) { if (n > 0) { result = n * Factorial(n-1) return result } return1 }
funcmain() { var i int = 15 fmt.Printf("%d 的阶乘是 %d\n", i, Factorial(uint64(i))) }
斐波那契数列
1 2 3 4 5 6 7 8 9 10 11 12 13
funcfibonacci(n int)int { if n < 2 { return n } return fibonacci(n-2) + fibonacci(n-1) }
funcmain() { var i int for i = 0; i < 10; i++ { fmt.Printf("%d\t", fibonacci(i)) } }
Go语言类型转换
1 2 3 4 5 6
type_name(expression) //类型转换格式 var sum int = 17 var count int = 5 var mean float32 mean = float32(sum)/float32(count)