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的数组.集合和泛型.我们说到,数组是从以前编程语言延伸过来的一种引用类型,采用事先定义长度分配存储区域的方式.而集合是 ...
随机推荐
- C语言 · 9-1九宫格
算法提高 9-1九宫格 时间限制:1.0s 内存限制:256.0MB 问题描述 九宫格.输入1-9这9个数字的一种任意排序,构成3*3二维数组.如果每行.每列以及对角线之和都相等,打 ...
- HTML——动画效果回到顶层(小火箭)
一.html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www. ...
- HTML资料——做网页时遇到的
HTML <meta> 标签 浏览器支持 IE Firefox Chrome Safari Opera 所有浏览器都支持 <meta> 标签. 定义和用法 ...
- uboot中MAC网络(待续)
start ->start_armboot ->main_loop 实际应用中问题:为什么从nandflash读出的MAC(写到物理phy上)与上层网口地址不同(上层网口采用env的mac ...
- innobackupex参数之 --throttle 限速这个值设置多少合理 原创
innobackupex参数之--parallel --throttle--parallel 此参数用于开启多个子进程并发备份多个数据文件(注意,一个数据文件只会有一个进程完成备份).可以加快备份速度 ...
- Hibernate- hibernate二级缓存
原文地址:http://www.iteye.com/topic/18904 很多人对二级缓存都不太了解,或者是有错误的认识,我一直想写一篇文章介绍一下hibernate的二级缓存的,今天终于忍不住了. ...
- 01 Developing Successful Oracle Application
本章提要-------------------------------本章是概述性章节1. 介绍了了解数据库内部结构对于开发的重要性2. 介绍了如何才能开发好的数据库应用程序------------- ...
- css样式DEMO
<!-- 导入框 --> <div id="importWin" class="easyui-window" title="服务封装 ...
- 关于ajax get方式请求 url地址参数怎么变成空了的问题
如URL地址:http://i.cnblogs.com/EditPosts.aspx?opt=1&value=#sgsgs; 今天在做项目中发现value明明是有值,怎么出在的后台往往取不到 ...
- Javascript函数声明与函数表达式的区别
在定义函数时,我们一般使用下面这两种方法: 使用函数声明定义: 1 2 3 function sum (a, b) { return a + b; } 使用函数表达式定义: 1 2 3 va ...