Go语言中文网 为您找到相关结果 16

golang silce/append的使用

初始化 切片可以通过数组来初始化,也可以通过内置函数make()初始化 .初始化时len=cap,在追加元素时如果容量cap不足时将按len的2倍扩容 查看示例代码,在线运行示例代码 s :=[] int {1,2,3 } 直接初始化切片,[]表示是切片类型,{1,2,3}初始化值依次是1,2,3.其cap=len=3 s := arr[:] 初始化切片s,是数组arr的引用 s := arr[startIndex:endIndex] 将arr中从下标startIndex到endIndex-1 下的元素创建为一个新的切片 s := arr[startIndex:] 缺省endIndex时将表示一直到arr的最后一个元素 s := arr[:endIndex] 缺省startIndex时将表示...阅读全文

博文 2015-08-13 11:00:12 webyh

【Go语言】【5】GO语言变量

变量也是语言的基本元素,与GO语言的常量类似,常量使用const关键字修饰,而变量使用var关键字修饰,变量声明的形式为var variableName variableType一、变量声明var age intvar phone intvar name stringvar address stringvar salary float64var consume float64var array [10]intvar frieds [20]string每个变量声明都使用一个var,上面的例子中能否能减少var的个数吗?前面说过GO是最懂程序员的,所以当然可以简写为:var ( age int phone int name string address string salary float64...阅读全文

博文 2017-02-09 15:58:07 qingkechina

golang的 GOPATH和vendor的搜索关系

golang的 GOPATH和vendor的搜索关系 基本规则 所有的go文件都是必须组织成包的形式,放在相应文件夹下: 1.1 建议包名和文件夹名字相同;虽然也可以不同,但会引发使用误解。 1.2 对于主程序包,也需要放在文件夹下面,注意: 1.2.1 不建议使用main作为文件夹名,虽然这个包名是main。 1.2.2 也不建议使用src作为文件名,尽管这是允许的,但是会引发误解。 1.2.3 建议使用项目名字作为包名。 go build命令如果不带参数,就是build当前包,当前目录所在的包,即当前目录下面的所有go文件。 1.2 如果go build指定了目标包,那么就会从GOPATH路径下面搜索包,如果找不到,就报失败;哪怕当前路径就在目标包里,但是GOPATH没有包含,也会报失败...阅读全文

博文 2018-10-13 12:34:39 CodingCode

【Go语言】【6】GO语言的数组

在《【4】GO语言类型和为类型增加方法》里说过GO语言除了基础类型(如int、float64、complex128等)之外,还有复合类型,其中就包含本文的数组。对于数组大家都不陌生,在C语言中可以这样声明一个一维数组:int arr[10],那么GO语言是怎么定义的呢?一、数组的声明1、数组的声明格式为var arrName [num]type,比如:var strArr [10]string // 声明一个由10个字符串组成的一维字符串数组var byteArr [32]byte // 声明一个由32个byte组成的一维byte数组var pointArr [12]*float64 // 声明一个由12个指向float64类型的指针组成的一维指针数组var twoArrs [3][5]in...阅读全文

博文 2017-02-09 15:58:13 qingkechina

Go-Channel

问题 在前面讲goroutine的时候,自然会想到goroutine之间的同步问题。如果没有同步通信机制,那么goroutine的作用就非常有限了。 其他编程语言 Java的线程同步几乎没用过,这里不谈。 Go的同步机制,即本文将要描述的channel,和Python的pipe和类似;自然也和Linux C的piple一样,见Advanced Linux Programming P110 5.4 Pipe。——在Linux C中,和Introducing Go类似的入门级书籍,自然首推Advanced Linux Programming。 注:这种轻量级的书籍对于扫盲是非常好的,C++的就如同Essential C++,薄而全,查阅方便,可以快速掌握概念。另一种风格的就是Head First...阅读全文

博文 2016-10-09 06:00:04 u013344915

Go起步:4、复合类型1--数组array和切片slice

之前讲到了Go的基础数据类型,除此之外,Go还支持很多复合类型的数据结构。 数组(array) 数组就是指一系列同一类型数据 的集合。 Go语言中,类型 [n]T 表示拥有 n 个 T 类型的值的数组。如: var a [3]int 表示变量 a 声明为拥有有 3个整数的数组。声明语法上与java的区别是[]是写在类型前面的。 当然,也可以让编译器统计数组字面值中元素的数目: a := [...]int{1, 2,3} 这两种写法, a 都是对应长度为3的int数组。 数组的长度是其类型的一部分,因此数组不能改变大小。 可以用内置函数len()取得数组长度。 package main import "fmt" func main() { var a [2]string //定义一个长度为2的...阅读全文

博文 2016-10-14 10:00:04 Mungo

【golang】wait,who am I

345唉,这是int类型吗?看着是~它有可能是345.0,可以简写为345.(没有看错,只是把0给简没有了)func main() { s := 345 var t int32 = 345 fmt.Println(s == t)}会出现什么呢?对了,会出现s == t (mismatched types int and int32),因为s := 345被golang编译器缺省赋予了int类型。func main() { s := 345 var t float = 345 fmt.Println(s == t)}会出现什么呢?想都别想了,因为golang的浮点只有float32和float64,哈哈哈哈哈哈~func main() { s := 345.0 var t float32 = ...阅读全文

博文 2017-02-10 11:05:21 qingkechina

golang channel 的使用

本文对channel使用中的几个疑惑,以例子的形式加以说明。 普通channel 缺省情况下,发送和接收会一直阻塞着,直到另一方准备好. 例如: package main import ( "fmt" "time" ) var ch1 chan bool func main(){ ch1 = make(chan bool) go reader() go writer() select { } } func writer() { time.Sleep(10*time.Second) for { ch1 <- true fmt.Println("write one ...") } } func reader() { for { select { case <-ch1: fmt.Println("...阅读全文

博文 2017-12-04 15:00:01 lanyangsh

golang碎片整理之 数组与切片

**数组 Array**数组是一种内建的类型,是一组同类型数据的集合,是一种值类型,可以通过从0开始的下标索引访问元素值,在初始化后其长度就固定了,无法修改其长度,而且Array的长度也是其类型的一部分,可以通过其内置函数len(array)获取其长度,当它作为方法的参数传入时,将复制一份数组,而不是引用同一个指针。初始化:[5]int{1,2,3,4,5} #长度为5的数组,其值分别为1,2,3,4,5[5]int{1,2} #长度为5的数组,其值分别为1,2,0,0,0 在初始化时,没有指定初值的元素,int类型的默认为0,string类型默认为"",bool类型默认为false[...]int{1,2,3,4,5} #长度为5的数组,其长度由初始化时元素的个数决定[5]int{2:1,...阅读全文

博文 2019-04-27 02:35:43 霍帅兵

golang的slice

声明与定义 Go中的slice的声明方法(有时候顺便也定义了),主要分为下面几种(以int为例): []int 后面可以也可以不跟上初始值,如 []int []int {} []int {1,2,3} 另外,直接从数组或者slice中再建立slice也是一种常见的模式: c[l:h:c] 最后一种是通过make来创建: make([]int, len, cap) 其中len,cap都是可选的,如果没有cap,缺省就是len那么大,如果没有len,缺省就是0。 添加 内置函数append是范型的添加,可以添加一个或者多个元素,也可以直接添加另外一个slice,这时候,需要使用...运算符进行解包,如: append(a, [] int {1,2,3}...) 不常用但是有时候也有用的,就是在s...阅读全文

博文 2019-02-10 11:34:44 areece

【Go语言】【12】GO语言的结构体

当我第一次接触到C语言时,就对结构体投入了极大的兴趣,认为这个东西以后大有作为,后来接触Java、C++,面向对象编程中的对象进入我的视线,经过了这么多年的磨练,回过头来再看结构体依旧是那么亲切;同时从另一个角度上看结构体与面向对象中的成员对象是多么的相像 :)一、结构体元素结构体由关键字、结构体类型名称和具体成员构成,如下:二、结构体初步认识下面通过对比数组(复合类型)来了解一下结构体:1、从存储类型来看数组只能存储相同的类型:s := []string{"a", "b", "c", "d", "e"}结构体可以存储不同的类型// 声明结构体type employee struct { name,address string // 姓名、住址 age int // 年龄 height,we...阅读全文

博文 2017-02-09 15:59:40 qingkechina

Golang 内建容器

内建容器 数组 数组是值类型 声明数组 var variable_name [SIZE] variable_type var array1 [10]float32 array2 := [3]int{1,2,3} array3 := [...]int{1,2,3} var grid [4][5]bool 切片(Slice) 定义切片 你可以声明一个未指定大小的数组来定义切片: var identifier []type //切片不需要说明长度。 var slice1 []type = make([]type, len) //使用make()函数来创建切片 //也可以简写为 slice1 := make([]type, len) make([]T, length, capacity) //也可以...阅读全文

博文 2019-03-15 10:35:19 柳浪闻笛

golang语言map的并发和排序

golang语言map的并发和排序 map的并发问题 golang缺省的map不是thread safe的,如果存在读写并发的使用场景,必须在外面使用lock机制。 包sync里面引入一个安全map; type Map struct func (m *Map) Store(key, value interface{}) func (m *Map) Load(key interface{}) (value interface{}, ok bool) func (m *Map) Range(f func(key, value interface{}) bool) func (m *Map) Delete(key interface{}) 用法: package main import ( "fm...阅读全文

博文 2020-02-20 09:32:42 CodingCode

Go语言快速入门笔记(2)--值类型和引用类型,silce切片,map映射

内容速览 本文包含Go语言的简单入门语法,值类型和引用类型,silce切片,map映射 本文适合人群 具有一定编程语言基础(如:C/C++,java等),并且想要快速入门Go语言的同学 值类型和引用类型 值类型:直接对值操作的类型,包括 1.基本数据类型(int,float等) 2.struct结构体 3.数组 复制代码 引用类型:通过指针(引用)对内存单元操作的类型,包括 1.silce切片 2.map映射 3.其他容器 复制代码 数组和切片slice 声明://一维数组 格式1:var 数组名 [长度] 类型 格式2:[var 数组名 =]/[数组名 := ] [长度]类型{值1,值2,...} 格式3:[var 数组名 =]/[数组名 := ] [...]/[]类型{值1,值2,......阅读全文

博文 2020-01-19 15:34:20 无知影

slice in golang

在go语言中,数组是有特定长度和元素类型共同组成的一种类型,比如[4]int表示4个integer。而[4]int和[5]int是两个完全不同的类型! slice slice是基于数组构建的,在数组的基础上提供了更多的操作和便利方法。在go语言的源码中,slice的定义如下: type slice struct { array unsafe.Pointer len int cap int } // An notInHeapSlice is a slice backed by go:notinheap memory. type notInHeapSlice struct { array *notInHeap len int cap int } 对于第二个notInHeapSlice的声明,对g...阅读全文

博文 2019-01-29 17:34:48 程屁凹