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的数组.集合和泛型.我们说到,数组是从以前编程语言延伸过来的一种引用类型,采用事先定义长度分配存储区域的方式.而集合是 ...
随机推荐
- PHP——语句和时间函数
语句 1.分支语句 (1)if例子:$a=9;$b=5;if($a>$b){ echo $a."比".$b."大"; }else{ echo $a.&qu ...
- [Javascript]右侧悬浮框
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- find 下参数的关系默认是and 一个参数多个选项可以用 -or
[root@ob2 mytmp]# find -type f -name "*.html" -or -name "*.txt"./02.html./aa.htm ...
- iOS边练边学--触摸事件以及能够拖拽的UIView的练习
一.用户在使用APP的过程中,会产生各种各样的事件.iOS中的事件可以分为3大类型: 二.响应者对象 在iOS中只有继承了了UIResponder的对象才能接受并处理事件,这样的对象称之为“响应者对象 ...
- Ajax轮询——“定时的通过Ajax查询服务端”
Ajax轮询——"定时的通过Ajax查询服务端". 概念: 轮询(polling):客户端按规定时间定时像服务端发送ajax请求,服务器接到请求后马上返回响应信息并关闭连接. 百闻 ...
- 关于SqlServer数据库C盘占用空间太大问题
工程需要用上了SQL SERVER2008 ,主要作为数据仓库使用,使用SSIS包从ORACEL10G中抽取数据到MS SQL中.环境是win2003x64的,驱动使用的oracle10gX64.使用 ...
- 设计中最常用的CSS选择器
准确而简洁的运用CSS选择器会达到非常好的效果.我们不必通篇给每一个元素定义类(class)或ID,通过合适的组织,可以用最简单的方法实现同样的效果.在实际工作中,最常用的选择器有以下五类: 一.标签 ...
- 重点:怎样正确的使用QThread类(注:包括推荐使用QThread线程的新方法QObject::moveToThread)
背景描述: 以前,继承 QThread 重新实现 run() 函数是使用 QThread唯一推荐的使用方法.这是相当直观和易于使用的.但是在工作线程中使用槽机制和Qt事件循环时,一些用户使用错了.Qt ...
- 常用HQL(Hibernate Query Language)查询
查询一个对象(实体类必须有一个不带参数的构造方法) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 @Test public void test01() ...
- 在hibernate中查询单个对象的方法,get()、load()、
查询单个对象可以直接通过Session对象来做到,其中session这个对象提过了2种获得单个对象的方法,一个是get方法和load方法,我去看这个两个方法的时候发现这两个方法的参数是一样的,使用方式 ...