这里面记录一些学习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基础---->go的基础学习(一)的更多相关文章

  1. 如何夯实(Java)编程基础,并深入学习和提高

    如何夯实(Java)编程基础,并深入学习和提高? 240赞同反对,不会显示你的姓名 匿名用户 240 人赞同 多学习...网上自学的学习网站很多,见以下榜单~一.汇总榜单: 公开课_学习网站导航 收录 ...

  2. 零基础快速入门web学习路线(含视频教程)

    下面小编专门为广大web学习爱好者汇总了一条完整的自学线路:零基础快速入门web学习路线(含视频教程)(绝对纯干货)适合初学者的最新WEB前端学习路线汇总! 在当下来说web前端开发工程师可谓是高福利 ...

  3. 20165312 C语言基础调查和JAVA学习展望

    C语言基础调查和JAVA学习展望 一.有关学习技能的经历 掌握一项技能,我认为最重要的是练习和认真程度. 我在上幼儿园的时候学过电子琴,上台表演过多次,但是三四年之后就半途而废了,后来小学毕业之后对钢 ...

  4. 零基础的人怎么学习Java

    编程语言Java,已经21岁了.从1995年诞生以来,就一直活跃于企业中,名企应用天猫,百度,知乎......都是Java语言编写,就连现在使用广泛的XMind也是Java编写的.Java应用的广泛已 ...

  5. PLSQL优化基础和性能优化 (学习总结)

    PLSQL优化基础和性能优化 (学习总结) 网上有一篇关于PLSQL优化的文章,不错,个人根据自己的经验再稍加整理和归纳,总结PLSQL优化和性能调优 适合有一定PLSQL基础,需要进一步提高的学友看 ...

  6. MySQL基础之事务编程学习笔记

    MySQL基础之事务编程学习笔记 在学习<MySQL技术内幕:SQL编程>一书,并做了笔记.本博客内容是自己学了<MySQL技术内幕:SQL编程>事务编程一章之后,根据自己的理 ...

  7. Python学习day04 - Python基础(2)数据类型基础

    <!doctype html>day04 - 博客 figure:last-child { margin-bottom: 0.5rem; } #write ol, #write ul { ...

  8. Jmeter基础之---jmeter基础概念

    Jmeter基础之---jmeter基础概念 JMeter 介绍: 一个非常优秀的开源的性能测试工具. 优点:你用着用着就会发现它的重多优点,当然不足点也会呈现出来. JMeter 介绍: 一个非常优 ...

  9. [.net 面向对象编程基础] (7) 基础中的基础——流程控制语句

    [.net 面向对象编程基础] (7) 基础中的基础——流程控制语句 本来没有这一节的内容,后来考虑到既然是一个系列文章,那么就尽可能写的详细一些,本节参考了网上朋友所写的例子,为的是让更多小伙伴学习 ...

  10. [.net 面向对象编程基础] (19) LINQ基础

    [.net 面向对象编程基础] (19)  LINQ基础 上两节我们介绍了.net的数组.集合和泛型.我们说到,数组是从以前编程语言延伸过来的一种引用类型,采用事先定义长度分配存储区域的方式.而集合是 ...

随机推荐

  1. Jackson2.1.4 序列化对象时对属性的过滤

    //对field(所有字段)进行过滤 //对get方法进行过滤 //对isBoolean这样的方法进行过滤 //里面的具体配置有 ANY,DEFAULT,NON_PRIVATE,NONE,PROTEC ...

  2. javascript中全局变量的定义

    首先确实简单,在js脚本的函数外面使用. 但是要注意点: 不能写到jquery的框框代码里面,之前粗心放到$(function(){ })里面去了. <script type="tex ...

  3. jquery轮播控件

    网上找了一个轮播控件,效果不错,而且很容易改,需要的同学去下载咯 地址是:http://download.csdn.net/detail/jine515073/7704143

  4. python将数据写入mysql乱码的解决办法

    1.错误为:插入乱码 报错: Python模块MySQLdb操作mysql出现2019错误:Can't initialize character set utf-8 解决: 写入数据语句为: cnn ...

  5. C语言写的trim()函数

    C语言的标准库中缺少对字符串进行操作的trim()函数,使用起来有些不便,可以使用利用 strlen 和 isspace 函数以及指针来自己写一个. 1.strlen 函数 原型:extern int ...

  6. 在Access中执行SQL语句

    Access在小型系统开发中等到了广泛使用.虽然Access提供了可视化的操作方法,但许多开发人员还是喜欢直接用SQL语句操作数据表.如何在Access中打开SQL视图,对于初次使用Access的程序 ...

  7. 说说自己对hibernate一级、二级、查询、缓存的理解。

    说说自己对hibernate一级.二级.查询.缓存的理解. 2016-03-14 21:36 421人阅读 评论(0) 收藏 举报  分类: web开发(19)  版权声明:本文为博主原创文章,未经博 ...

  8. xml的序列化与反序列化求一个好用的东西,类似,newtonsoft.net转json的东西。xml里面的结构和数据库不一致..................

    xml的序列化与反序列化求一个好用的东西,类似,newtonsoft.net转json的东西.xml里面的结构和数据库不一致..................

  9. 前台的js对象数组传到后台处理。在前台把js对象数组转化为json字符串,在后台把json字符串解析为List<>

    前台的js对象数组传到后台处理.在前台把js对象数组转化为json字符串,在后台把json字符串解析为List<>

  10. Python 爬虫批量下载美剧 from 人人影视 HR-HDTV

    本人比較喜欢看美剧.尤其喜欢人人影视上HR-HDTV 的 1024 分辨率的高清双字美剧,这里写了一个脚本来批量获得指定美剧的全部 HR-HDTV 的 ed2k下载链接.并依照先后顺序写入到文本文件, ...