Go基础---->go的基础学习(一)
这里面记录一些学习go的基础知识。我希望爱我的人不寂寞,我希望我爱的人喜欢我
go的基础知识
一、go中的map的使用
package main import (
"fmt"
) type PersonInfo struct {
ID string
Name string
Address string
} func main() {
// declare map
// var personDB map[string] PersonInfo // create map
var personDB = make(map[string] PersonInfo, 100) // insert data
personDB["LL"] = PersonInfo{"123456", "LL", "wuhan"}
personDB["huhx"] = PersonInfo{"123456", "huhx", "huanggang"} // query key is exiest
person, ok := personDB["huhx"]
if ok {
fmt.Println("Found Person: ", person.Name, ", address", person.Address) // Found Person: huhx , address huanggang
} else {
fmt.Println("No person found")
} // delete key from map
fmt.Println("Before delete: ", len(personDB)) // Before delete: 2
delete(personDB, "huhx")
fmt.Println("After delete: ", len(personDB)) // After delete: 1
}
二、go中数组切片的使用
package main import "fmt" func printArray(array []int) {
for _, v := range array {
fmt.Print(v, " ")
}
fmt.Println()
} func main() {
mySlice := make([]int, 5, 10)
fmt.Println("len: ", len(mySlice)) // len: 5
fmt.Println("cap: ", cap(mySlice)) // cap: 10 // append elements
mySlice = append(mySlice, 1, 2, 3)
mySlice2 := []int{8, 9, 10}
mySlice = append(mySlice, mySlice2...) // get data
printArray(mySlice) // 0 0 0 0 0 1 2 3 8 9 10 // slice from array
newSlice := mySlice[3:]
printArray(newSlice) // 0 0 1 2 3 8 9 10 // content copy
slice1 := []int{1, 2, 3, 4, 5}
slice2 := []int{5, 4, 3}
copy(slice2, slice1) // 只会复制slice1的前3个元素到slice2中
printArray(slice2) // 1 2 3
slice2 = []int{5, 7, 8, 9}
copy(slice1, slice2) // 只会复制slice2的4个元素到slice1的前4个位置
printArray(slice1) // 5 7 8 9 5
}
三、go中的数组是一个值类型
在Go语言中数组是一个值类型(value type)。所有的值类型变量在赋值和作为参数传递时都将产生一次复制动作。如果将数组作为函数的参数类型,则在函数调用时该参数将发生数据复制。
package main import "fmt" func modify(array [5]int) {
array[0] = 10
fmt.Println("In modify(), array values: ", array) // In modify(), array values: [10 2 3 4 5]
} func main() {
array := [5]int{1, 2, 3, 4, 5}
modify(array)
fmt.Println("In main(), array values: ", array) // In main(), array values: [1 2 3 4 5]
}
四、go中的关于循环流程
package main import "fmt" func exampleIf(x int) string {
var result string
if x == 0 {
result = "huhx"
} else {
result = "LL"
}
return result
} func exampleSwitch(i int) {
switch i {
case 0:
fmt.Print("huhx 0 ")
fallthrough
case 1:
fmt.Print("linux 0 ")
case 2:
fmt.Print("LL 0 ")
default:
fmt.Println("tomhu 0 ")
}
} func exampleFor(x int) int {
sum := 0
for i := 0; i < x; i++ {
sum += i
}
return sum
} func exampleWhile(x int) int{
sum := 0
for {
sum ++
if sum > x {
break
}
}
return sum
} func exampleGoto(x int) {
i := 0
HERE:
fmt.Print(i, " ")
i ++
if i < x {
goto HERE
}
} func main() {
// test if
fmt.Println(exampleIf(0)) // huhx // test switch
exampleSwitch(0) // huhx 0 linux 0
fmt.Println() // test for
fmt.Println(exampleFor(10)) // 45 // test while
fmt.Println(exampleWhile(100)) // exampleGoto(10) // 0 1 2 3 4 5 6 7 8 9
}
友情链接
- go中的import的学习:http://www.open-open.com/lib/view/open1384352577352.html
- go学习的一些资源: https://tour.go-zh.org/concurrency/11
Go基础---->go的基础学习(一)的更多相关文章
- 如何夯实(Java)编程基础,并深入学习和提高
如何夯实(Java)编程基础,并深入学习和提高? 240赞同反对,不会显示你的姓名 匿名用户 240 人赞同 多学习...网上自学的学习网站很多,见以下榜单~一.汇总榜单: 公开课_学习网站导航 收录 ...
- 零基础快速入门web学习路线(含视频教程)
下面小编专门为广大web学习爱好者汇总了一条完整的自学线路:零基础快速入门web学习路线(含视频教程)(绝对纯干货)适合初学者的最新WEB前端学习路线汇总! 在当下来说web前端开发工程师可谓是高福利 ...
- 20165312 C语言基础调查和JAVA学习展望
C语言基础调查和JAVA学习展望 一.有关学习技能的经历 掌握一项技能,我认为最重要的是练习和认真程度. 我在上幼儿园的时候学过电子琴,上台表演过多次,但是三四年之后就半途而废了,后来小学毕业之后对钢 ...
- 零基础的人怎么学习Java
编程语言Java,已经21岁了.从1995年诞生以来,就一直活跃于企业中,名企应用天猫,百度,知乎......都是Java语言编写,就连现在使用广泛的XMind也是Java编写的.Java应用的广泛已 ...
- PLSQL优化基础和性能优化 (学习总结)
PLSQL优化基础和性能优化 (学习总结) 网上有一篇关于PLSQL优化的文章,不错,个人根据自己的经验再稍加整理和归纳,总结PLSQL优化和性能调优 适合有一定PLSQL基础,需要进一步提高的学友看 ...
- MySQL基础之事务编程学习笔记
MySQL基础之事务编程学习笔记 在学习<MySQL技术内幕:SQL编程>一书,并做了笔记.本博客内容是自己学了<MySQL技术内幕:SQL编程>事务编程一章之后,根据自己的理 ...
- Python学习day04 - Python基础(2)数据类型基础
<!doctype html>day04 - 博客 figure:last-child { margin-bottom: 0.5rem; } #write ol, #write ul { ...
- Jmeter基础之---jmeter基础概念
Jmeter基础之---jmeter基础概念 JMeter 介绍: 一个非常优秀的开源的性能测试工具. 优点:你用着用着就会发现它的重多优点,当然不足点也会呈现出来. JMeter 介绍: 一个非常优 ...
- [.net 面向对象编程基础] (7) 基础中的基础——流程控制语句
[.net 面向对象编程基础] (7) 基础中的基础——流程控制语句 本来没有这一节的内容,后来考虑到既然是一个系列文章,那么就尽可能写的详细一些,本节参考了网上朋友所写的例子,为的是让更多小伙伴学习 ...
- [.net 面向对象编程基础] (19) LINQ基础
[.net 面向对象编程基础] (19) LINQ基础 上两节我们介绍了.net的数组.集合和泛型.我们说到,数组是从以前编程语言延伸过来的一种引用类型,采用事先定义长度分配存储区域的方式.而集合是 ...
随机推荐
- Mac为nginx安装nginx-sticky-module
Mac为nginx安装nginx-sticky-module nginx版本: nginx-1.9.8 nginx-sticky-module版本:nginx-sticky-module-ng *注意 ...
- 测试markdown编辑器
标题1 标题2 +++ 第一件事 +++ 第二件事 +++ 第三件事 |head|头|头栏| |body|body|body|
- iOS边练边学--transform的简单介绍并且用transform实现键盘处理
一.transform:形变属性,能完成功能:平移,缩放,旋转 <平移> // 根据给的移动距离平移 self.tempView.transform = CGAffineTransform ...
- win7/win8下手工搭建WAMP环境
win7/win8下手工搭建WAMP环境. 最近学习wamp,看了好多教程,出来好多问题,终于成功搞定,这里集合了一下最好的教程,写了一些自己的经验,希望大家有用 这里不能上传图片,我就写了个带pdf ...
- Specified VM install not found: type Standard VM, name jdk1.6...
运行ant的时候出现 Specified VM install not found: type Standard VM, name.... 搞了好久..汗汗 尝试删除这些文件: ... / .meta ...
- 关于Unity中的Input输入事件
截获鼠标,键盘的消息 监听事件我们都是在Update里面监听的. Unity的虚拟轴打开:Edit-->Project Settings-->Input,打开的各个Name就是双引号里面要 ...
- e1087. 用For循环做数组的遍历
The for statement can be used to conveninently iterate over the elements of an array. The general sy ...
- 初识Comet技术
一.服务器推送技术概述 服务器推送技术(Servers Push)的基础思想是将浏览器主动查询信息改为服务器主动发送信息.服务器发送一批数据,浏览器显示这些数据,同时保证与服务器的连接.当服务器需要再 ...
- linux下使用tar命令 (转至http://www.cnblogs.com/li-hao/archive/2011/10/03/2198480.html)
解压语法:tar [主选项+辅选项] 文件或者目录 使用该命令时,主选项是必须要有的,它告诉tar要做什么事情,辅选项是辅助使用的,可以选用. 主选项: c 创建新的档案文件.如果用户想备份一个目录或 ...
- MultiplyVector方法
该方法的功能是用来对方向向量v进行矩阵变换,当矩阵与v进行变换时,只是对v的方向进行转换.那么系统就会对参与变换的Matrix4x4矩阵M进行特殊处理. 例如:经过系统处理后就变为 其中n002 + ...