go言语一——根底ITeye - 威尼斯人

go言语一——根底ITeye

2019年02月23日10时56分04秒 | 作者: 思真 | 标签: 数组,声明,长度 | 浏览: 2057

const cstr string = "hello" const cstr2 = `hello` // 字符串用双引号或许反引号表明,不能用单引号 // 声明未运用全局变量编译运转不报错 var bval bool func main(){ fmt.Printf("Global g_val1 = %v\n",g_val1) // var vname1,vname2 type var l_val1, l_val2 float32 = 1.2, 2.3 fmt.Printf("Local l_val1 = %v , l_val2 = %v\n",l_val1,l_val2) // vname1,vname2 := value1,value2 l_val3, l_val4 := 2.3, 4 fmt.Printf("Local l_val3 = %v , l_val4 = %v\n",l_val3,l_val4) // 声明未运用局部变量在编译阶段会报错 //var l_val5 int }

数据类型

package main
//分组声明
import(
 "fmt"
 "errors"
const(
 i = 0
 s = "测验"
func main(){
 //不同数据类型之间不能直接转化,虽然长度相同
 var(
 a int = 3
 b int32
 c rune = 4
 b = a //error
 b = c //ok
 //cannot use a (type int) as type int32 in assignment
 //字符串拼接用"+"号
 name := "你" + "好"
 name = "国际"
 fmt.Printf("name = %v\n",name)
 //输出"国际"
 err := errors.New("自界说错误信息\n")
 if err != nil {
 fmt.Print(err)
 //输出 "自界说错误信息"
}

Go 之所以会那么简练,是由于它有一些默许的行为:
•大写字母最初的变量是可导出的,也就是其它包能够读取的,是共用变量;小写字母最初的就是不行导出的,是私有变量。
•大写字母最初的函数也是相同,相当于 class 中的带 public 关键词的公有函数;小写字母最初的就是有 private 关键词的私有函数

数组操作

package main
//分组声明
import(
 "fmt"
 //引证的包未运用时编译会犯错
 //"errors"
func main(){
 //数组声明
 var arr [10] int
 arr[0] = 3
 fmt.Printf("arr[0] = %v and arr[4] = %v\n",arr[0],arr[4])
 //输出 3 和 0
 arr2 := [10]string{"name","age"}
 arr2[0] = "nickname"
 fmt.Printf("arr2[0] = %v and arr2[4] = %v\n",arr2[0],arr2[4])
 //输出 nickname 和 空
 //多维数组
 doubleArray := [2][4]int{[4]int{1,2,3,4},[4]int{5,6,7,8}}
 fmt.Printf("doubleArray[0][0] = %v\n",doubleArray[0][0])
 easyArray := [2][4]int{{1,2,3,4},{5,6,7,8}}
 fmt.Printf("easyArray[0][1] = %v\n",easyArray[0][1])
 arr3 := [5]int{1,3,5,7,9}
 //动态数组slice,界说时短少长度
 var sarr1,sarr2 []int
 sarr1 = arr3[2:3] // sarr1 = {5}
 sarr2 = arr3[1:] // sarr2 = {3,5,7,9}
 fmt.Printf("sarr1[0] = %v\n",sarr1[0])
 fmt.Printf("sarr2[0] = %v\n",sarr2[0])
 fmt.Printf("len(sarr1) = %v\n",len(sarr1)) // 获取数组长度
 fmt.Printf("cap(sarr1) = %v\n",cap(sarr1)) // 获取数组最大个数
 sarr1 = append(sarr1,6) // 追加数据 sarr1 = {5,6}
 fmt.Printf("sarr1[1] = %v\n",sarr1[1])
 sarr2 = sarr2[:len(sarr2)-1] // 删去结尾元素
}

arr := []string{str1}

slice 有一些简洁的操作
• slice 的默许开端方位是 0,ar[:n]等价于 ar[0:n]
• slice 的第二个序列默许是数组的长度,ar[n:]等价于 ar[n:len(ar)]
• 假如从一个数组里边直接获取 slice,能够这样 ar[:],由于默许第一个序列是 0,第二个是数组的长度,即等价于 ar[0:len(ar)]

package main
import(
 "fmt"
func main(){
 var (
 m_val1 map[string] string
 //声明字典后需求调用make初始化
 m_val1 = make(map[string] string)
 m_val1["name"] = "ciaos"
 m_val1["hobby"] = "game"
 fmt.Printf("name is %v and hobby is %v\n",m_val1["name"],m_val1["hobby"])
 m_val2 := make(map[string] int)
 m_val2["first"] = 10
 fmt.Println("字典内容为:","first = ", m_val2["first"])
 // 输出 "字典内容为: first = 10"
 // 初始化一个字典
 m_val3 := map[string] int{"A":1,"B":2,"C":3}
 fmt.Println("length of m_val3 is",len(m_val3))
 // 获取指定key对应alue
 num,ok := m_val3["D"]
 if ok {
 fmt.Println("m_val3[\"D\"] is ",num)
 } else {
 fmt.Println("m_val3[\"D\"] is invalid")
 delete(m_val3,"B")
}

运用 map 过程中需求留意的几点:
• map 是无序的,每次打印出来的 map 都会不相同,它不能经过 index 获取,而有必要经过 key 获取
• map 的长度是不固定的,也就是和 slice 相同,也是一种引证类型内置的 len 函数相同适用于 map,回来 map 具有的 key 的数量
• map 的值能够很便利的修正,经过 numbers["one"]=11 能够很简单的把 key 为 one的字典值改为 11
• map 的初始化能够经过 key:val 的方法初始化值,一起 map 内置有判别是否存在 key 的方法
make 用于内建类型(map、slice 和 channel)的内存分配。new 用于各种类型的内存分配

版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表威尼斯人立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章