Go语言基础变量定义及初始化

package main
  import "fmt"
  func main(){
  //变量定义
    var v1 int
    var v2 string
    var v3 [10] int    //数组
    var v4 [] int      //数组切片
    var v5 struct{
      f int
    }
    var v6 *int      //指针
    var v7 map[string] int  //key 为string value为int的map
    var v8 func (a int) int
  //变量初始化
  var var1 int = 10
  var var2 = 10
  var var3 := 10
  fmt.Println("变量初始化")
  fmt.Printf("var1=%d, var2=%d, var3=%d\n", var1, var2, var3)
  }

常量定义
const 使用iota 可以模拟enum
iota 在每一个const出现时被重置为0,然后下一个const出现之前,每出现一次iota,其所代表的数字会自增1
const(      //iota 被重置为0  
  c0 = iota  //c0 == 0
  c1 = iota  //c1 == 1
  c2 = iota  //c2 == 2
)
模拟enum
const(
  Sunday = iota
  Monday
  Tuesday
  Wenesday
  Thursday
  Friday
  Saturday
  numberOfDays
)

数组及切片类似于C++的Vector容器
数组定义:
  [32] byte            //长度为32的数组,每个元素为一个字节
  [2*N] struct {x, y int32}  //复杂类型数组
  [1000] *float64        //指针数组
  [3][5] int           //二维数组 3行5列
  [2][2][2] float64       //等同于[2]([2]([2] float64))
获取数组长度使用 len()
  arrLength := len(arr)
遍历数组方式
  for i := 0; i < len(arr); i++{
    fmt.PrintIn("Element", i, "of array is ", array[i])
  }
  for i, v := range array{
    fmt.Println("Array element[", i, "] = ", v);
  }
数组切片
  基本数组创建切片
  var myArray [10]int = [10]int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
  var mySlice []int = myArray[:5]    //基于数组的前5个元素创建切片
  append(mySlice, 1, 2,3)      //动态添加数据
  mySlice2 := []int{8, 9, 10}    //直接通过数组创建切片
  mySlice = append(mySlice, mySlice2...)  //把一个slice追加到另一个slice等价于下面的操作
  mySlice = append(mySlice, 8, 9, 10)
  基于数组切片创建数组切片
  oldSlice := []int{1, 2, 3, 4, 5}
  newSlice := oldSlice[:3]  //基本oldSlice的前3个元素构建新数组切片

map基本使用
map定义 var map[string] int
struct person {
  var name string
  var age int
}

//声明
var myMap = map[string] person
//创建
myMap = make(map[string] person)
//赋值
myMap['1234'] = person{'name', 22}
//创建并初始化
myMap = make(map[string] person{'name1', 23})


posted @ 2015-03-16 23:19  树下的枫  阅读(1657)  评论(0编辑  收藏  举报