一、strings和strconv的使用

strings

strings.HasPrefix(s string,preffix string) bool:
判断字符串s是否以prefix开头

stirngs.HasSuffix(s string,suffix string) bool:
判断字符串s是否以suffix结尾

strings.Index(s string,str string) int:
判断str在s中首次出现的位置,如果没有出现,则返回-1

strings.LastIndex(s string,str string) int:
判断str在s中最后出现的位置,如果没有出现,则返回-1

strings.Replace(str string,old string,new string,n int):
字符串替换

strings.Count(str string,count int)string:
字符串计数

strings.Repeat(str string,count int) string:
重复count次str

strings.ToLower(str string)
转换为小写

strings.ToUpper(str string)string:
转换为大写

strings.TrimSpace(str string):
去掉字符串首位空白字符

strings.Trim(str string,cut string):
去掉字符串首尾cut字符

strings.TrimLeft(str string,cut string):
去掉字符串首部cut字符

strings.TrimRight(str string,cunt string):
去掉字符串尾部cut字符

strings.Field(str string):
返回str空格分隔的所有子串的slice

string.Split(str string,split string):
返回str split分割的所有子串的slice

strings.Join(s1 []string,sep string):
用sep把s1中的所有元素连接起来

strconv

scronv.Itoa(i int):把一个整数转换成字符串

scronv.Atio(str string)(int,errror):
把一个字符串转换成整数

二、Go中时间和日期类型

当前时间:now:= time.Now()

time.Now().Day()

time.Now().Minute()

time.Now().Month()

time.Now().Year()

time.Duration用来表示纳秒

一些常用的时间常量

const (
Nanosecond Duration = 1
Microsecond =1000 * Nanosecond
Millisecond =1000 * Microsecond
Second =1000 * Millisecond
Minute =60 * Second
Hour =60 * Minute
)

格式化

package mainimport "fmt"func main() {var a int = 10//通过&a打印a的指针地址fmt.Println(&a)//定义一个指针类型的变量pvar p *int//讲a的指针地址复制给pp = &afmt.Println(*p)//给指针p赋值*p = 100fmt.Println(a)
}

三、指针类型

普通的类型,变量存的就是值,也叫值类型
获取变量的地址,用&,
指针类型,变量存的是一个地址,这个地址存的才是真正的值
获取指针类型所指向的值,用*,例如:var *p int, 使用 *p获取p指向值

通过下面的代码例子理解:

package mainimport "fmt"func main() {var a int = 10fmt.Println(&a)var p *intp = &afmt.Println(*p)*p = 100fmt.Println(a)
}

四、流程控制

if else 分支判断

常见格式类型如下:
if 条件{
}

if 条件{
}else{
}

if 条件{
}else if 条件{
}else{
}

switch case

语法格式:

switch var {case var1:case var2:case var3:default:}

如果满足了var1 想要穿透下一个需要添加fallthrough

例子如下:

package mainimport "fmt"func main() {var a int = 0switch a {case 0:fmt.Println("a 等于0")fallthroughcase 1:fmt.Println("a等于1")default:fmt.Println("a等于默认值")}}

如果我们没有添加fallthrough只会打印a等于0,但是现在回把case1中的打印内容也打印出来

同样这里我们需要知道case 后面是可以写条件的

for语句

语法
for 初始化变量;条件判断;变量修改{
}

一个简单的例子

for i:=0;i<100;i++{fmt.Println(i)
}

for循环的其他几种常见写法

for 条件 {
}

死循环的写法
for {
}

for range语句

通过一个例子理解:

str := "hello 世界"
for i,v := range str{fmt.Printf("index[%d] val[%c] len[%d]\n",i,v,len([]byte(string(v))))
}

这里需要注意的一个问题是,range str返回的是两个值,一个是字符串的下标,一个是字符串中单个的字符

goto 和label语句

package mainimport "fmt"func main() {LABEL1:for i:=0;i<5;i++{for j:=0;j<5;j++{if j == 4{continue LABEL1}fmt.Printf("i is :%d and j is:%d\n",i,j)}}
}

代码中我们在continue 后面添加了一个LABEL1这样当循环匹配到j等于4的时候,就会跳出循环,重新回到最外成i的循环,而如果没有LABEL1则就会跳出j的本次循环,执行j++进入到j的下次循环

我们接着看goto的用法,但是代码中我们不建议使用goto

package mainimport "fmt"func main() {i :=0HEAR:fmt.Println(i)i++if i == 5{return}goto HEAR
}

break 和continue
一句话解释:break是终止整个循环,continue是终止此次循环

五、函数详解

声明语法

func 函数名 (参数列表) [(返回列表)]{
}

一些常见的写法例子

func add(){

}

func add(a int,b int){
}

func add(a int,b int) int {

}

func add(a int,b int) (int,int) {

}

func add(a,b int)(int,int){

}

go函数的特点

  1. 不支持重载,一个包不能包含连个名字一样的函数
  2. 函数是一等公民,函数也是一种类型,一个函数可以赋值给变量
  3. 匿名函数
  4. 多返回值

其他几个概念可能都好理解,我们这里主要说说第二条,函数也是一种类型,一个函数可以赋值给变量

通过下面的例子演示

package mainimport "fmt"type add_func func(int,int) intfunc add(a,b int) int {return a+b
}func operator(op add_func,a int,b int) int {return op(a,b)
}
func main() {c := addfmt.Println(c)sum := operator(c,100,200)fmt.Println(sum)
}

这里通过type自定义了一个add_func类型

函数参数传递方式

这里主要有两种方式:值传递,引用传递

无论是值传递还是引用传递,传递给函数的都是变量的副本,不过值传递的是值的拷贝,引用传递传递的是地址的拷贝,一般来说,地址拷贝更为高效,而值拷贝取决于拷贝的对象的大小,对象越大,则性能越低

命名返回值的名字

通过下面的例子理解:

func add_sum(a,b int)(c int){c = a + breturn
}

下划线标识符,用来忽略返回值

可变参数

表示0个或多个参数
fucn add(arg...int) int{
}

表示1个或多个参数
func add(a int,arg...int) int {
}
其中arg是一个slice,我们可以通过arg[index]获取参数
通过len(arg)可以判断参数的个数

defer用途

  1. 当函数返回时,执行defer语句,因此,可以用来做资源清理

  2. 多个defer语句,按先进后厨的方式执行

  3. defer语句中变量,在defer声明时就决定了

通过下面的例子理解:

package main
import "fmt"func main() {a:=0defer fmt.Println("defer---->",a)a++fmt.Println(a)}

结果会在最后打印defer---->0 ,这里就体现了defer语句中变量,在defer声明时就决定了

原文地址: http://www.cnblogs.com/zhaof/p/7072122.html

Go 从入门到精通(三)字符串,时间,流程控制,函数相关推荐

  1. Kali Linux 从入门到精通(三)-入侵系统定制

    Kali Linux 从入门到精通(三)-入侵系统定制 定制 网络配置 临时IP地址 dhclient eth0 ifconfig eth0 192.168.11/24 route add defau ...

  2. C4D致富经典入门到精通(三)

    C4D样条曲线创建 C4D基础界面的介绍与常用快捷键:  C4D致富经典入门到精通(一) C4D父子关系的理解与创建参数几何体与可编辑对象: C4D致富经典入门到精通(二) C4D样条曲线创建 :  ...

  3. python纯函数_理想国真恵玩Python从入门到精通第006天_纯函数写游戏管理系统

    原标题:理想国真恵玩Python从入门到精通第006天_纯函数写游戏管理系统 前面已经带大家学习了函数,高级数据类型,比如说字典,今天带大家用函数加字典做一个游戏管理系统,希望大家喜欢.废话不多说,直 ...

  4. jQuery 1.3 for Asp.Net、 CSLA.Net 3.6 for Windows 及 MOSS/WSS 一步一步从入门到精通三个系列的目录...

    jQuery for Asp.Net 一步一步从入门到精通(附 jQuery API 彩色大图) CSLA.Net 3.6 for Windows (C# 2008)一步一步从入门到精通 MOSS/W ...

  5. visual studio 2015 搭建python开发环境,python入门到精通[三]

    在上一篇博客Windows搭建python开发环境,python入门到精通[一]很多园友提到希望使用visual studio 2013/visual studio 2015 python做demo, ...

  6. MyBatis从入门到精通(三):MyBatis XML方式的基本用法之多表查询

    最近在读刘增辉老师所著的<MyBatis从入门到精通>一书,很有收获,于是将自己学习的过程以博客形式输出,如有错误,欢迎指正,如帮助到你,不胜荣幸! 1. 多表查询 上篇博客中,我们示例的 ...

  7. ActionScript 3.0 Step By Step系列(三):学学流程控制,编编if-else switch while for

    通过前两篇文章对ActionScript 3.0的开发环境和语法基础的介绍,相信已对ActionScript 3.0的编程有了个初步的认识.从本文开始,将逐步的对ActionScript 3.0的语法 ...

  8. Java学习笔记(三):流程控制

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://mp.csdn.net/mdeditor/100662793 目录 ...

  9. 【Python学习笔记—保姆版】第三章—Python流程控制、函数的定义、常见错误、模块与包、类

    第三章-python函数.分支结构 流程控制 if-else for 循环 while循环 continue/break range()函数 列表与元组遍历 练习 函数的定义 变量作用域 基本形式 函 ...

  10. Python入门到精通三天速成第二讲——类与继承

    子类扩展了超类(父类)的定义.要指定超类,可在 class 语句中的类名后加上超类名,并将其用圆括号括起. class Filter:def init(self):self.blocked = []d ...

最新文章

  1. 非对称加密算法之RSA介绍及OpenSSL中RSA常用函数使用举例
  2. c语言构造体二维数组,怎么才能把结构体里面的二维数组打印出来?
  3. 前端又一本升级版图书上市了,听说比第一版还好看
  4. 如何在linux中使用u盘,如何在Linux系统下使用U盘
  5. [Java] 获取本月周次和日期时间段信息
  6. 《推荐系统笔记(十七)》userCF和itemCF —— 基于领域的推荐
  7. 分页存储过程--From:桌面备份 - sql2005新功能.docx
  8. py2exe使用方法
  9. 不同数据量下主键类型的选择
  10. c语言教程英文版讲义,c语言教程英文版讲义(六)1.pdf
  11. Java实现抓取百度识图结果的实现和思路-1-创造百度识图的URL链接
  12. 完美商业计划书全攻略
  13. 道德经和译文_道德经全文和译文
  14. 个人空间岁末大回报活动12月16日获奖名单
  15. Ubuntu订阅电信物联网平台
  16. 400行代码实现双人对战五子棋(适合新手入门)
  17. 最近喜欢的几款乐器和民谣
  18. 智能工厂体系,主要划分为哪五个层级?
  19. 十五、存储过程与函数
  20. 如何考量私有云的解决方案

热门文章

  1. 针对谷歌浏览器Chrome的CSS hack
  2. URL、Session、Cookies、Server.Transfer、Application和跨页面传送。
  3. LMS学习函数MATLAB代码
  4. QT技术应用_2D绘图(转)
  5. 科大星云诗社动态20210216
  6. 科大星云诗社动态20210501
  7. 周志华《机器学习》课后习题(第七章):贝叶斯分类
  8. 吴恩达《卷积神经网络》精炼笔记(2)-- 深度卷积模型:案例研究
  9. 定义咯一个枚举变量枚举变量怎么打印出来 linux c,以C语言的字符串形式输出枚举变量...
  10. javascript与C#的编码解码问题