Go语言入门(二)-流程控制
时间:2022-07-25
本文章向大家介绍Go语言入门(二)-流程控制,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
go流程控制
字符串详解
字符串原理
- 字符串底层就是一个byte数组,所以可以和[]byte类型互相转换
- 字符串中的字符是不能修改的
- 字符串是有byte字节组成,所以字符串的长度是byte字节的长度
- rune类型(int32占四个字节)用来表示utf8字符,一个rune由一个或者多个byte组成
func stringByte() {
var str string
str = "abc你好"
var b []byte = []byte(str)
var c[]rune = []rune(str)
fmt.Printf("%cn",97)
fmt.Printf("b=%v,tlen(str)=%dn",b,len(str))
fmt.Printf("%dn",len(c))
}
练习
写一个程序,对英文字符串进行逆序
func reverseStr(s string) string {
bytes := []byte(s)
for i:=0;i<len(s)/2;i++{
//fmt.Printf("%c",i) 输出字符串
var tmp = bytes[i]
bytes[i] = bytes[len(s)-i-1]
bytes[len(s)-i-1] = tmp
}
s = string(bytes)
return s
}
func main() {
//stringByte()
s:= "abcdefg"
fmt.Println(reverseStr(s))
}
写一个程序,实现对包含中文的字符串进行逆序
func reverseChinese(s string) {
bytes := []rune(s)
for i:=0;i< len(bytes)/2;i++ {
bytes[i],bytes[len(bytes)-i-1] = bytes[len(bytes)-i-1],bytes[i]
}
s = string(bytes)
fmt.Println(s)
}
func main() {
s:= "abcdefg中国"
fmt.Println(reverseChinese(s))
}
写一个程序,判断一个字符串是否是回文
func isReversed(s string) string {
r := []rune(s)
for i:=0;i <len(r)/2;i++ {
r[i],r[len(r)-i-1] = r[len(r)-i-1],r[i]
}
s1 := string(r)
if s1 == s{
return "is huiwen"
}else {
return "not huiwen"
}
}
日期和时间类型
- time包
- 获取当前时间
- 时间格式化
- 时间戳和时间之间的转换
- 定时器的简单使用
- time.Duration()表示纳秒
package main
import (
"fmt"
"time"
)
func getTime() {
now:=time.Now()
year := now.Year()
month := now.Month()
day := now.Day()
hour := now.Hour()
minute := now.Minute()
second := now.Second()
fmt.Printf("%vn",now)
fmt.Printf("year=%d,month=%d,day=%d,hour=%d,minute=%d,second=%dn",
year,month,day,hour,minute,second)
}
func getTimeStamp() {
now := time.Now()
timestamp := now.UnixNano()
fmt.Printf("%dn",timestamp)
}
func Dingshiqi() {
timer :=time.NewTimer(time.Second)
for v := range timer.C {
fmt.Printf("time:%vn",v)
//定时一秒刷新
timer.Reset(time.Second)
}
}
func TimeTicker() {
timer := time.NewTicker(time.Second)
for v := range timer.C {
fmt.Printf("time: %vn",v)
}
}
func TimeStampToTime(timestamp int64) {
time_t := time.Unix(timestamp,0)
fmt.Printf("time %vn",time_t)
}
func FormatTime() {
now := time.Now()
//Go 诞生时间
str := now.Format("2006/01/02 15:04:05")
fmt.Printf("str: %sn",str)
}
func main() {
//getTime()
//getTimeStamp()
/*
//go Dingshiqi()
go TimeTicker()
time.Sleep(time.Minute)
*/
//TimeStampToTime(time.Now().Unix())
}
小练习
写一个程序,统计一段代码的执行耗时,单位精确到微秒
func testCase() {
for i:=0;i<10000000000;i++{
_=i
}
}
func main() {
//获取纳秒数
start_time := time.Now().UnixNano()
testCase()
end_time := time.Now().UnixNano()
fmt.Printf("cost time is %d us,also %d msn",(end_time-start_time)/1000,(end_time-start_time)/1000000)
}
流程控制
if条件语句
func judgeNum() {
num := 10
if num % 2 ==0 {
fmt.Printf("%d是偶数n",num)
}else {
fmt.Printf("%d是奇数n",num)
}
}
func guessNum() {
num := 99
if num <=50 {
fmt.Printf("%d小于等于50n",num)
} else if num >= 51 && num <= 100 {
fmt.Printf("%d大于等于51,小于等于100n",num)
} else {
fmt.Printf("%d大于100n",num)
}
}
for循环
func simpleFor() {
for i:=1;i<=10;i++ {
fmt.Printf("%dn",i)
}
}
func forcase() {
i := 0
for ;i<=10; {
fmt.Printf("%dn",i)
i+=2
}
}
func breakFor() {
for i:=0;i<=10;i++ {
if i > 5 {
break
}
fmt.Printf("%dn",i)
}
}
func continueFor() {
for i:=0;i<=10;i++ {
if i == 5 {
continue
}
fmt.Printf("%dn",i)
}
}
func forCase() {
for no,i := 10,1;i<=10&&no<=19;i,no=i+1,no+1 {
fmt.Printf("%d * %d = %dn",no,i,no*i)
}
}
// 无限循环
func deadLoop() {
for {
fmt.Printf("hello")
}
}
switch语句
func switchCase() {
f:=9
switch f {
case 1:
fmt.Printf("enter case 1n")
fmt.Printf("f=1n")
//fallthrough
case 2:
fmt.Printf("enter case 2n")
fmt.Printf("f=2n")
case 3:
fmt.Printf("enter case 3n")
fmt.Printf("f=3n")
default:
fmt.Printf("enter default casen")
}
}
func switchCase2 () {
letter := "i"
switch letter {
case "a","e","i","o","u":
fmt.Printf("元音字母%sn",letter)
default:
fmt.Printf("辅音字母%sn",letter)
}
}
//条件判断格式
func switchCase3() {
num := 75
switch {
case num<75:
fmt.Printf("数字 %d 小于75n",num)
case num>=75 && num <=85:
fmt.Printf("数字%d大于75,小于85n",num)
default:
fmt.Printf("数字%d大于85n",num)
}
}
小练习
猜数字练习
func randCase() {
var number int
/*
伪随机数
for i:=0;i<10;i++{
number = rand.Intn(100)
fmt.Printf("number:%dn",number)
}
return
*/
//生成随机数种子
rand.Seed(time.Now().UnixNano())
number = rand.Intn(100)
fmt.Println(number)
fmt.Printf("猜一个数字,数字的范围是0到100n")
for {
var input int
fmt.Scanf("%dn",&input)
var flag bool = false
switch {
case number > input:
fmt.Printf("输入的比较小%dn",input)
case number == input:
fmt.Printf("猜对了%d,正确值是%dn",input,number)
flag = true
case number<input:
fmt.Printf("输入的比较大%dn",input)
}
if flag {
break
}
}
}
- javascript console输出图片?
- 快速搭建Storm集群环境
- OpenCV中BLOB特征提取与几何形状分类
- OpenCV实现照片自动红眼去除
- OpenCV3.1.0级联分类器训练与使用
- 图像处理之理解Homography matrix(单应性矩阵)
- OpenCV中图像直方图与应用
- OpenCV中图像修复技术介绍与演示
- 44个Java代码性能优化总结
- LDA(Linear Discriminant Analysis)算法介绍
- Express.js 4,Node.js,MongoDB REST API 简易教程
- 基于梯度下降算法求解线性回归
- 彩色图像高斯反向投影
- OpenCV中直方图反向投影算法详解与实现
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- DBA的福音,SQL审核利器-goinception
- 前端组件设计原则
- 分析网页 JavaScript Bundles 的几种方法
- 使用 DevTools 新增的 Issues 选项卡发现网页问题
- OpenCV绘制标记函数drawMarker()
- 【crossbeam系列】3 crossbeam-deque:work-stealing算法
- 【Rust日报】2020-08-21 RustConf研讨会在线举办
- 了解不同架构思维,赏析架构之美
- 【Rust日报】2020-08-22 google/autocxx - 高度自动化的rust调用c++,而且安全,时尚
- 【Rust日报】2020-08-24 理解 Rust 的切片
- 猿实战05——手把手教你拥有自己的代码生成器
- Java单元测试——容器内部测试
- Java单元测试——框架(三)——testNG
- Nginx系列:后端服务应用健康检测
- 那些大厂必问的Handler和Binder,有必要去研究么?