Go语言的特性
https://www.jianshu.com/p/1bda5f24e474菜鸟教程Go 语言入门级教程
http://www.runoob.com/go/go-program-structure.htmlGo语言 高级入门教程系列
https://www.jianshu.com/c/2ba5a726a9f1Go语言 高级教程系列
https://www.jianshu.com/u/1381dc29fed9Golang遵循“少即是多”的设计哲学,追求简洁优雅,就是说如果异常价值不大,就不会将异常加入到语言特性中。
g, h := 123, "hello"
const a, b, c = 1, false, "str"
const (
Unknown = 0
Female = 1
Male = 2
)
var variable_name [SIZE] variable_type
var balance = [5]float32{1000.0, 2.0, 3.4, 7.0, 50.0}
var n [10]int //申明一个长度为10的int类型的数组
arr:=[...] int {2:1,4:3} //申明一个下标为2的值为1,下标为4的值为3的长度为5的数组,因为最大下标是4
s :=[] int {1,2,3 }
fmt.Println(cap(s),len(s),s[0])
初始化切片s,是数组arr的引用
s := arr[startIndex:endIndex]
缺省endIndex时将表示一直到arr的最后一个元素
s := arr[startIndex:]
通过内置函数make()初始化切片s,[]int 标识为其元素类型为int的切片
s :=make([]int,len,cap)
往一个切片中追加一个或者多个元素
numbers = append(numbers, 2,3,4)
nums := []int{2, 3, 4}
for i, num := range nums {
if num == 3 {
fmt.Println("index 3 :", i)
}else{
fmt.Println(num)
}
}
for j:=0; j< len(nums);j++ {
if nums[j] == 3 {
fmt.Println("index 3 :", j)
}else{
fmt.Println(nums[j])
}
}
var var_name *var-type
var a int= 20 /* 声明实际变量 */
var ip *int /* 声明指针变量 */
ip = &a /* 指针变量的存储地址 */
/* 使用指针访问值 */
fmt.Printf("*ip 变量的值: %d/n", *ip ) //打印20
/* 声明变量,默认 map 是 nil */
var map_variable map[key_data_type]value_data_type
/* 使用 make 函数 */
map_variable := make(map[key_data_type]value_data_type)
初始化
countryCapitalMap := map[string]string{"France": "Paris", "Italy": "Rome", "Japan": "Tokyo", "India": "New delhi"}
set方法
countryCapitalMap [ "France" ] = "Paris"
countryCapitalMap [ "Italy" ] = "罗马"
get方法,ok显示是否存在该key
captial, ok := countryCapitalMap [ "美国" ] /*如果确定是真实的,则存在,否则不存在 */
delete(countryCapitalMap, "France")
遍历Map
for country := range countryCapitalMap {
fmt.Println(country, "首都是", countryCapitalMap [ country ])
}
定义一个Phone的接口,它的实现类必须实现call()方法
type Phone interface {
call()
}
定义一个普通类NokiaPhone
type NokiaPhone struct {
}
实现call()的方法
func (nokiaPhone NokiaPhone) call() {
fmt.Println("I am Nokia, I can call you!")
}
使用
func main() {
var phone Phone
phone = new(NokiaPhone)
phone.call()
}
type Books struct {
title string
author string
subject string
book_id int
}
var age=23 title := "Project Leader"
分号换行符可以省略,编译时自动添加
Go的for循环更简洁
i := 1;
for i < 5 {
fmt.Println(i);
i++;
}
for i := 1; i < 5; i++ {
fmt.Println(i);
}
i := 1;
for {
fmt.Println(i);
if ++i > 5 {
break; // or return;
}
}